You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2022/12/02 13:40:52 UTC

[isis] branch master updated: ISIS-3222: updates site index

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 1193633e9b ISIS-3222: updates site index
1193633e9b is described below

commit 1193633e9b42b79dec91760056d2ccf3edbbd59c
Author: Andi Huber <ah...@apache.org>
AuthorDate: Fri Dec 2 14:40:44 2022 +0100

    ISIS-3222: updates site index
---
 .../modules/applib/pages/index/ViewModel.adoc      |   20 +-
 .../pages/index/annotation/DomainObject.adoc       |    2 +
 .../applib/pages/index/annotation/HomePage.adoc    |    2 +
 .../applib/pages/index/client/SuppressionType.adoc |    1 +
 ...adLayoutXml.adoc => Object_downloadLayout.adoc} |   14 +-
 .../services/appfeatui/ApplicationTypeMember.adoc  |    2 -
 .../services/command/CommandExecutorService.adoc   |    8 +-
 .../services/command/CommandOutcomeHandler.adoc    |    6 +-
 .../index/services/factory/FactoryService.adoc     |   30 +-
 .../index/services/grid/GridLoaderService.adoc     |   34 +-
 .../services/grid/GridMarshallerService.adoc}      |    9 +-
 .../pages/index/services/grid/GridService.adoc     |    1 +
 .../pages/index/services/layout/LayoutService.adoc |   60 +-
 .../index/services/marshal/MarshallerService.adoc  |   44 +
 .../index/services/menu/MenuBarsLoaderService.adoc |   16 +-
 .../menu/MenuBarsMarshallerService.adoc}           |   11 +-
 .../pages/index/services/menu/MenuBarsService.adoc |    1 +
 .../services/repository/RepositoryService.adoc     |    2 +-
 .../modules/applib/pages/index/value/Blob.adoc     |   40 +-
 .../modules/applib/pages/index/value/Clob.adoc     |   73 +-
 .../HasInteractionId_commandLogEntry.adoc          |    4 +
 .../HasUsername_recentCommandsByUser.adoc          |    4 +
 .../contributions/Object_recentCommands.adoc       |    2 +-
 .../T_recentBackgroundCommands.adoc}               |   10 +-
 .../applib/dom/CommandLogEntryRepository.adoc      |    1 +
 .../dom/mixins/CommandLogEntry_childCommands.adoc  |    2 +
 .../mixins/CommandLogEntry_openResultObject.adoc   |    2 +
 .../mixins/CommandLogEntry_siblingCommands.adoc    |    2 +
 .../subscriber/CommandSubscriberForCommandLog.adoc |    2 +
 .../CausewayModuleExtCommandReplaySecondary.adoc   |    3 -
 .../secondary/job/JobExecutionData.adoc}           |   31 +-
 .../pages/index/excel/applib/ExcelService.adoc     |    2 +
 .../ExcelServiceDefault.adoc}                      |   40 +-
 .../HasInteractionId_executionLogEntries.adoc      |    4 +
 .../HasUsername_recentExecutionsByUser.adoc        |    4 +
 .../contributions/Object_recentExecutions.adoc     |    2 +-
 .../applib/dom/ExecutionLogEntryType.adoc          |    2 +
 .../ExecutionLogEntry_siblingExecutions.adoc       |    2 +
 .../applib/dom/ExecutionOutboxEntryType.adoc       |    2 +
 .../applib/restapi/OutboxEvents.adoc               |    4 +
 .../applib/restapi/OutboxRestApi.adoc              |    2 +
 .../ContentMappingServiceForOutboxEvents.adoc      |    2 +
 .../index/restfulobjects/client/RestfulClient.adoc |   43 +-
 ...ayModuleViewerRestfulObjectsJaxrsResteasy.adoc} |    7 +-
 .../conneg/RestfulObjectsJaxbWriterForXml.adoc     |    0
 .../webmodule/WebModuleJaxrsResteasy.adoc}         |    8 +-
 ...ayModuleViewerRestfulObjectsJaxrsResteasy4.adoc |   12 -
 core/adoc/modules/_overview/pages/about.adoc       | 1236 ++++++++++++--------
 48 files changed, 1118 insertions(+), 693 deletions(-)

diff --git a/antora/components/refguide-index/modules/applib/pages/index/ViewModel.adoc b/antora/components/refguide-index/modules/applib/pages/index/ViewModel.adoc
index e17cef46be..6caa3e0451 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/ViewModel.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/ViewModel.adoc
@@ -1,7 +1,19 @@
 = ViewModel
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Indicates that an object belongs to the UI/application layer, and is intended to be used as a view model.
+Indicates that an object belongs to the UI/application layer and is intended to be used as a view-model.Naturally this also allows for the idiom of passing in the xref:refguide:applib:index/services/inject/ServiceInjector.adoc[ServiceInjector] as an argument and programmatically resolve any field-style injection points via _ServiceInjector#injectServicesInto(Object)_ , that is, if already required during _construction_ .
+
+Instances of xref:refguide:applib:index/ViewModel.adoc[ViewModel] must include (exactly) one public constructor.
+
+Contract:
+
+* there is either exactly one public constructor or if there are more than one, then only one of these is annotated with any of _@Inject_ or _@Autowired(required=true)_ (meta-annotations are also considered)
+* the constructor may have arbitrary many arguments of arbitrary type
+* first _String_ argument found is passed in the view-model's memento
+* any other arguments are resolved via the xref:refguide:applib:index/services/registry/ServiceRegistry.adoc[ServiceRegistry] - if no _Bean_ can be found a _NoSuchElementException_ is thrown
+* there is no support for _Spring_ programming model specific annotations on constructor arguments (perhaps future work)
+
+After a view-model got new-ed up by the framework (or programmatically via the xref:refguide:applib:index/services/factory/FactoryService.adoc[FactoryService] ), _ServiceInjector#injectServicesInto(Object)_ is called on the viewmodel instance, regardless of what happened during _construction_ .
 
 == API
 
@@ -16,7 +28,7 @@ interface ViewModel {
 <.> xref:#viewModelMemento_[viewModelMemento()]
 +
 --
-Obtain a memento of the view model.
+Obtain a memento of the view-model. (Optional)
 --
 
 == Members
@@ -24,6 +36,6 @@ Obtain a memento of the view model.
 [#viewModelMemento_]
 === viewModelMemento()
 
-Obtain a memento of the view model.
+Obtain a memento of the view-model. (Optional)
 
-Instances of xref:refguide:applib:index/ViewModel.adoc[ViewModel] must include a public single _String_ argument constructor, that recreates an instance from a memento string. This constructor is not required to resolve injection points or fire domain events, instead this responsibility is encapsulated with the framework.
+Captures the state of this view-model as _String_ , which can be passed in to this view-model's constructor for later re-construction.
diff --git a/antora/components/refguide-index/modules/applib/pages/index/annotation/DomainObject.adoc b/antora/components/refguide-index/modules/applib/pages/index/annotation/DomainObject.adoc
index a715a320c6..38e9ce12ca 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/annotation/DomainObject.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/annotation/DomainObject.adoc
@@ -3,6 +3,8 @@
 
 Domain semantics for domain objects (entities and view models; for services see xref:refguide:applib:index/annotation/DomainService.adoc[DomainService] ).
 
+If - for the currently logged on user - none of the domain object's members are effectively visible, (or if there are no members to begin with), the object instance is considered hidden. Hence a NOT-AUTHORIZED page will be displayed instead.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/annotation/HomePage.adoc b/antora/components/refguide-index/modules/applib/pages/index/annotation/HomePage.adoc
index e411cd7274..e6a2c533fe 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/annotation/HomePage.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/annotation/HomePage.adoc
@@ -3,6 +3,8 @@
 
 Annotated on a view model to indicate that it should be used as the home page.
 
+If - for the currently logged on user - none of the view model's members are effectively visible, (or if there are no members to begin with), the view model instance is considered hidden. Hence a NOT-AUTHORIZED page will be displayed instead.
+
 The view model is instantiated through a no-arg constructor, so must in effect be stateless. Typically it will use injected repositories in order to display a dashboard, and offer actions to traverse or operate on the rendered state.
 
 == API
diff --git a/antora/components/refguide-index/modules/applib/pages/index/client/SuppressionType.adoc b/antora/components/refguide-index/modules/applib/pages/index/client/SuppressionType.adoc
index 61f8ca0dd9..4d191edb47 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/client/SuppressionType.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/client/SuppressionType.adoc
@@ -13,6 +13,7 @@ enum SuppressionType {
   DOMAIN_TYPE     // <.>
   TITLE     // <.>
   ALL     // <.>
+  EnumSet<SuppressionType> all()
   EnumSet<SuppressionType> setOf(SuppressionType... types)
 }
 ----
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_downloadLayoutXml.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_downloadLayout.adoc
similarity index 79%
rename from antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_downloadLayoutXml.adoc
rename to antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_downloadLayout.adoc
index b1ba634ed6..4ef20331ff 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_downloadLayoutXml.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_downloadLayout.adoc
@@ -1,17 +1,19 @@
-= Object_downloadLayoutXml
+= Object_downloadLayout
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Provides the ability to download the layout XML for any domain entity or view model.
+Provides the ability to download the serialized layout (eg. XML) for any domain entity or view model.
 
 == API
 
 [source,java]
-.Object_downloadLayoutXml.java
+.Object_downloadLayout.java
 ----
-class Object_downloadLayoutXml {
-  Object act(String fileName, LayoutExportStyle style)
+class Object_downloadLayout {
+  Object act(String fileName, LayoutExportStyle style, CommonMimeType format)
   String default0Act()     // <.>
   LayoutExportStyle default1Act()     // <.>
+  CommonMimeType default2Act()
+  Set<CommonMimeType> choices2Act()
 }
 ----
 
@@ -37,5 +39,3 @@ Defaults to the (simple) name of the domain object's class, with a `.layout` suf
 === default1Act()
 
 Default style is _LayoutExportStyle#MINIMAL_ .
-
-include::hooks/Object_downloadLayoutXml_see-also.adoc[]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/appfeatui/ApplicationTypeMember.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/appfeatui/ApplicationTypeMember.adoc
index c1413ac20b..8c6a20c99f 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/appfeatui/ApplicationTypeMember.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/appfeatui/ApplicationTypeMember.adoc
@@ -7,8 +7,6 @@
 .ApplicationTypeMember.java
 ----
 class ApplicationTypeMember {
-  ApplicationTypeMember(ApplicationFeatureId featureId)
-  ApplicationTypeMember(String memento)
   String getMemberName()
 }
 ----
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/command/CommandExecutorService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/command/CommandExecutorService.adoc
index 5b92bd5814..5665ff5e77 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/command/CommandExecutorService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/command/CommandExecutorService.adoc
@@ -9,10 +9,10 @@ Provides a mechanism to execute a xref:refguide:applib:index/services/command/Co
 .CommandExecutorService.java
 ----
 interface CommandExecutorService {
-  Bookmark executeCommand(InteractionContextPolicy interactionContextPolicy, Command command)     // <.>
-  Bookmark executeCommand(InteractionContextPolicy interactionContextPolicy, CommandDto commandDto, CommandOutcomeHandler outcomeHandler)     // <.>
-  Bookmark executeCommand(Command command)     // <.>
-  Bookmark executeCommand(CommandDto commandDto, CommandOutcomeHandler outcomeHandler)     // <.>
+  Try<Bookmark> executeCommand(InteractionContextPolicy interactionContextPolicy, Command command)     // <.>
+  Try<Bookmark> executeCommand(InteractionContextPolicy interactionContextPolicy, CommandDto commandDto, CommandOutcomeHandler outcomeHandler)     // <.>
+  Try<Bookmark> executeCommand(Command command)     // <.>
+  Try<Bookmark> executeCommand(CommandDto commandDto, CommandOutcomeHandler outcomeHandler)     // <.>
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/command/CommandOutcomeHandler.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/command/CommandOutcomeHandler.adoc
index 23bbf0ad1c..8d316382b1 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/command/CommandOutcomeHandler.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/command/CommandOutcomeHandler.adoc
@@ -13,7 +13,7 @@ interface CommandOutcomeHandler {
   Timestamp getStartedAt()     // <.>
   void setStartedAt(Timestamp startedAt)     // <.>
   void setCompletedAt(Timestamp completedAt)     // <.>
-  void setResult(Try<Bookmark> resultBookmark)     // <.>
+  void setResult(Try<Bookmark> result)     // <.>
 }
 ----
 
@@ -35,7 +35,7 @@ Sets the `completedAt` field on the underlying xref:refguide:applib:index/servic
 <.> xref:#setResult_Try[setResult(Try)]
 +
 --
-Sets the result of the execute, represented as a xref:refguide:applib:index/services/bookmark/Bookmark.adoc[Bookmark] , on the underlying xref:refguide:applib:index/services/command/Command.adoc[Command] (or persistent equivalent).
+Handle the result of the execute, represented either as a xref:refguide:applib:index/services/bookmark/Bookmark.adoc[Bookmark] (success case) or an exception (failure), on the underlying xref:refguide:applib:index/services/command/Command.adoc[Command] (or persistent equivalent).
 --
 
 == Members
@@ -60,4 +60,4 @@ Sets the `completedAt` field on the underlying xref:refguide:applib:index/servic
 [#setResult_Try]
 === setResult(Try)
 
-Sets the result of the execute, represented as a xref:refguide:applib:index/services/bookmark/Bookmark.adoc[Bookmark] , on the underlying xref:refguide:applib:index/services/command/Command.adoc[Command] (or persistent equivalent).
+Handle the result of the execute, represented either as a xref:refguide:applib:index/services/bookmark/Bookmark.adoc[Bookmark] (success case) or an exception (failure), on the underlying xref:refguide:applib:index/services/command/Command.adoc[Command] (or persistent equivalent).
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/factory/FactoryService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/factory/FactoryService.adoc
index 6c21fed8e5..a5f2b7626d 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/factory/FactoryService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/factory/FactoryService.adoc
@@ -24,12 +24,12 @@ interface FactoryService {
 <.> xref:#getOrCreate_Class[getOrCreate(Class)]
 +
 --
-Gets an instance (possibly shared or independent) of the specified type, with injection points resolved and any life-cycle callback processed.
+Gets or creates an instance of _requiredType_ , with injection points resolved and any life-cycle callback processed.
 --
 <.> xref:#get_Class[get(Class)]
 +
 --
-Gets an instance (possibly shared or independent) of the specified _requiredType_ , with injection points resolved and any life-cycle callback processed.
+Gets a _Spring_ managed bean of _requiredType_ .
 --
 <.> xref:#detachedEntity_Class[detachedEntity(Class)]
 +
@@ -49,22 +49,22 @@ Creates a new Mixin instance, with injection points resolved.
 <.> xref:#viewModel_Class_Bookmark[viewModel(Class, Bookmark)]
 +
 --
-Creates a new ViewModel instance, with injection points resolved, and initialized according to the given _bookmark_
+Creates a new ViewModel instance, initialized with given _bookmark_ (if any) then resolves any injection points and calls post-construct (if any).
 --
 <.> xref:#viewModel_Class[viewModel(Class)]
 +
 --
-Creates a new ViewModel instance, with injection points resolved and defaults applied.
+Creates a new ViewModel instance, with injection points resolved, post-construct called and defaults applied.
 --
 <.> xref:#viewModel_T[viewModel(T)]
 +
 --
-Resolves injection points for given ViewModel instance.
+Resolves injection points for and calls post-construct on given view-model instance.
 --
 <.> xref:#create_Class[create(Class)]
 +
 --
-Creates a new instance of the specified class, with injection points resolved and defaults applied.
+Creates a new instance of the specified class, with injection points resolved, post-construct called and defaults applied.
 --
 
 == Members
@@ -72,25 +72,29 @@ Creates a new instance of the specified class, with injection points resolved an
 [#getOrCreate_Class]
 === getOrCreate(Class)
 
-Gets an instance (possibly shared or independent) of the specified type, with injection points resolved and any life-cycle callback processed.
+Gets or creates an instance of _requiredType_ , with injection points resolved and any life-cycle callback processed.
+
+Maps onto one of the specialized factory methods _#get(Class)_ or _#create(Class)_ based on the type's meta-data.
 
 [#get_Class]
 === get(Class)
 
-Gets an instance (possibly shared or independent) of the specified _requiredType_ , with injection points resolved and any life-cycle callback processed.
+Gets a _Spring_ managed bean of _requiredType_ .
 
 [#detachedEntity_Class]
 === detachedEntity(Class)
 
 Creates a new detached entity instance, with injection points resolved and defaults applied.
 
-The entity will be detacted, in other words not yet persisted.
+The entity will not yet be persisted, in other words: its not yet known to the persistence layer.
 
 [#detachedEntity_T]
 === detachedEntity(T)
 
 Creates a new detached entity instance, with injection points resolved.
 
+The entity will not yet be persisted, in other words: its not yet known to the persistence layer.
+
 [#mixin_Class_Object]
 === mixin(Class, Object)
 
@@ -99,22 +103,22 @@ Creates a new Mixin instance, with injection points resolved.
 [#viewModel_Class_Bookmark]
 === viewModel(Class, Bookmark)
 
-Creates a new ViewModel instance, with injection points resolved, and initialized according to the given _bookmark_
+Creates a new ViewModel instance, initialized with given _bookmark_ (if any) then resolves any injection points and calls post-construct (if any).
 
 [#viewModel_Class]
 === viewModel(Class)
 
-Creates a new ViewModel instance, with injection points resolved and defaults applied.
+Creates a new ViewModel instance, with injection points resolved, post-construct called and defaults applied.
 
 [#viewModel_T]
 === viewModel(T)
 
-Resolves injection points for given ViewModel instance.
+Resolves injection points for and calls post-construct on given view-model instance.
 
 [#create_Class]
 === create(Class)
 
-Creates a new instance of the specified class, with injection points resolved and defaults applied.
+Creates a new instance of the specified class, with injection points resolved, post-construct called and defaults applied.
 
 include::hooks/FactoryService_010-implementation.adoc[]
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/grid/GridLoaderService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/grid/GridLoaderService.adoc
index 5d0d1842ff..e85163b756 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/grid/GridLoaderService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/grid/GridLoaderService.adoc
@@ -11,9 +11,9 @@ Provides the ability to load the XML layout (grid) for a domain class.
 interface GridLoaderService {
   boolean supportsReloading()     // <.>
   void remove(Class<?> domainClass)     // <.>
-  boolean existsFor(Class<?> domainClass)     // <.>
-  Grid load(Class<?> domainClass)     // <.>
-  Grid load(Class<?> domainClass, String layout)     // <.>
+  boolean existsFor(Class<?> domainClass, EnumSet<CommonMimeType> supportedFormats)     // <.>
+  Optional<T> load(Class<?> domainClass, String layoutIfAny, GridMarshallerService<T> marshaller)     // <.>
+  Optional<T> load(Class<?> domainClass, GridMarshallerService<T> marshaller)     // <.>
 }
 ----
 
@@ -27,20 +27,20 @@ Whether dynamic reloading of layouts is enabled.
 --
 To support metamodel invalidation/rebuilding of spec.
 --
-<.> xref:#existsFor_Class[existsFor(Class)]
+<.> xref:#existsFor_Class_EnumSet[existsFor(Class, EnumSet)]
 +
 --
 Whether any persisted layout metadata (eg a `.layout.xml` file) exists for this domain class.
 --
-<.> xref:#load_Class[load(Class)]
+<.> xref:#load_Class_String_GridMarshallerService[load(Class, String, GridMarshallerService)]
 +
 --
-Returns a new instance of a xref:refguide:applib:index/layout/grid/Grid.adoc[Grid] for the specified domain class, eg from a `layout.xml` file, else `null` .
+Optionally returns a new instance of a xref:refguide:applib:index/layout/grid/Grid.adoc[Grid] , based on whether the underlying resource could be found, loaded and parsed.
 --
-<.> xref:#load_Class_String[load(Class, String)]
+<.> xref:#load_Class_GridMarshallerService[load(Class, GridMarshallerService)]
 +
 --
-Loads a specic alternative xref:refguide:applib:index/layout/grid/Grid.adoc[Grid] layout for the specified domain class.
+Optionally returns a new instance of a xref:refguide:applib:index/layout/grid/Grid.adoc[Grid] , based on whether the underlying resource could be found, loaded and parsed.
 --
 
 == Members
@@ -59,24 +59,24 @@ To support metamodel invalidation/rebuilding of spec.
 
 This is called by the xref:refguide:applib:index/mixins/metamodel/Object_rebuildMetamodel.adoc[Object_rebuildMetamodel] mixin action.
 
-[#existsFor_Class]
-=== existsFor(Class)
+[#existsFor_Class_EnumSet]
+=== existsFor(Class, EnumSet)
 
 Whether any persisted layout metadata (eg a `.layout.xml` file) exists for this domain class.
 
 If none exists, will return null (and the calling xref:refguide:applib:index/services/grid/GridService.adoc[GridService] will use xref:refguide:applib:index/services/grid/GridSystemService.adoc[GridSystemService] to obtain a default grid for the domain class).
 
-[#load_Class]
-=== load(Class)
+[#load_Class_String_GridMarshallerService]
+=== load(Class, String, GridMarshallerService)
 
-Returns a new instance of a xref:refguide:applib:index/layout/grid/Grid.adoc[Grid] for the specified domain class, eg from a `layout.xml` file, else `null` .
+Optionally returns a new instance of a xref:refguide:applib:index/layout/grid/Grid.adoc[Grid] , based on whether the underlying resource could be found, loaded and parsed.
 
-[#load_Class_String]
-=== load(Class, String)
+The layout alternative will typically be specified through a `layout()` method on the domain object, the value of which is used for the suffix of the layout file (eg "Customer-layout.archived.xml" to use a different layout for customers that have been archived).
 
-Loads a specic alternative xref:refguide:applib:index/layout/grid/Grid.adoc[Grid] layout for the specified domain class.
+[#load_Class_GridMarshallerService]
+=== load(Class, GridMarshallerService)
 
-The layout alternative will typically be specified through a `layout()` method on the domain object, the value of which is used for the suffix of the layout file (eg "Customer-layout.archived.xml" to use a different layout for customers that have been archived).
+Optionally returns a new instance of a xref:refguide:applib:index/layout/grid/Grid.adoc[Grid] , based on whether the underlying resource could be found, loaded and parsed.
 
 include::hooks/GridLoaderService_010-implementation.adoc[]
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/grid/GridMarshallerService.adoc
similarity index 81%
copy from antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.adoc
copy to antora/components/refguide-index/modules/applib/pages/index/services/grid/GridMarshallerService.adoc
index 07c0939f82..8be8dfd6d2 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/grid/GridMarshallerService.adoc
@@ -1,13 +1,14 @@
-= CommandLogEntry_childCommands
+= GridMarshallerService
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Supports xref:refguide:applib:index/layout/grid/Grid.adoc[Grid] marshaling and unmarshaling.
+
 == API
 
 [source,java]
-.CommandLogEntry_childCommands.java
+.GridMarshallerService.java
 ----
-class CommandLogEntry_childCommands {
-  List<? extends CommandLogEntry> coll()
+interface GridMarshallerService<T> {
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/grid/GridService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/grid/GridService.adoc
index cf5bbdfcc5..6cf0885b37 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/grid/GridService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/grid/GridService.adoc
@@ -18,6 +18,7 @@ interface GridService {
   Grid normalize(Grid grid)     // <.>
   Grid complete(Grid grid)     // <.>
   Grid minimal(Grid grid)     // <.>
+  GridMarshallerService<? extends Grid> marshaller()
   Grid toGridForExport(Class<?> domainClass, LayoutExportStyle style)
 }
 ----
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/layout/LayoutService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/layout/LayoutService.adoc
index 7b4a6887f5..a43b5464b3 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/layout/LayoutService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/layout/LayoutService.adoc
@@ -1,7 +1,7 @@
 = LayoutService
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Provides the ability to obtain the XML layout for a single domain object or for all domain objects.
+Provides the ability to obtain the serialized layout (eg. XML) for a single domain object or for all domain objects, as well as the serialized layout for the application's menu-bars.
 
 == API
 
@@ -9,44 +9,66 @@ Provides the ability to obtain the XML layout for a single domain object or for
 .LayoutService.java
 ----
 interface LayoutService {
-  String toXml(Class<?> domainClass, LayoutExportStyle style)     // <.>
-  byte[] toZip(LayoutExportStyle style)     // <.>
-  String toMenuBarsXml(MenuBarsService.Type type)     // <.>
+  EnumSet<CommonMimeType> supportedObjectLayoutFormats()     // <.>
+  String objectLayout(Class<?> domainClass, LayoutExportStyle style, CommonMimeType format)     // <.>
+  byte[] toZip(LayoutExportStyle style, CommonMimeType format)     // <.>
+  EnumSet<CommonMimeType> supportedMenuBarsLayoutFormats()     // <.>
+  String menuBarsLayout(MenuBarsService.Type type, CommonMimeType format)     // <.>
 }
 ----
 
-<.> xref:#toXml_Class_LayoutExportStyle[toXml(Class, LayoutExportStyle)]
+<.> xref:#supportedObjectLayoutFormats_[supportedObjectLayoutFormats()]
 +
 --
-Obtains the serialized XML form of the layout (grid) for the specified domain class.
+Supported format(s) for _#objectLayout(Class, LayoutExportStyle, CommonMimeType)_ and _#toZip(LayoutExportStyle, CommonMimeType)_ .
 --
-<.> xref:#toZip_LayoutExportStyle[toZip(LayoutExportStyle)]
+<.> xref:#objectLayout_Class_LayoutExportStyle_CommonMimeType[objectLayout(Class, LayoutExportStyle, CommonMimeType)]
 +
 --
-Obtains a zip file of the serialized XML of the layouts (grids) of all domain entities and view models.
+Obtains the serialized form of the object layout (grid) for the specified domain class.
 --
-<.> xref:#toMenuBarsXml_MenuBarsService_Type[toMenuBarsXml(MenuBarsService_Type)]
+<.> xref:#toZip_LayoutExportStyle_CommonMimeType[toZip(LayoutExportStyle, CommonMimeType)]
 +
 --
-Obtains the serialized XML form of the menu bars layout ( xref:refguide:applib:index/services/menu/MenuBarsService.adoc[MenuBarsService] ).
+Obtains a zip file of the serialized layouts (grids) of all domain entities and view models.
+--
+<.> xref:#supportedMenuBarsLayoutFormats_[supportedMenuBarsLayoutFormats()]
++
+--
+Supported format(s) for _#menuBarsLayout(org.apache.causeway.applib.services.menu.MenuBarsService.Type, CommonMimeType)_ .
+--
+<.> xref:#menuBarsLayout_MenuBarsService_Type_CommonMimeType[menuBarsLayout(MenuBarsService_Type, CommonMimeType)]
++
+--
+Obtains the serialized form of the menu bars layout ( xref:refguide:applib:index/services/menu/MenuBarsService.adoc[MenuBarsService] ).
 --
 
 == Members
 
-[#toXml_Class_LayoutExportStyle]
-=== toXml(Class, LayoutExportStyle)
+[#supportedObjectLayoutFormats_]
+=== supportedObjectLayoutFormats()
+
+Supported format(s) for _#objectLayout(Class, LayoutExportStyle, CommonMimeType)_ and _#toZip(LayoutExportStyle, CommonMimeType)_ .
+
+[#objectLayout_Class_LayoutExportStyle_CommonMimeType]
+=== objectLayout(Class, LayoutExportStyle, CommonMimeType)
+
+Obtains the serialized form of the object layout (grid) for the specified domain class.
+
+[#toZip_LayoutExportStyle_CommonMimeType]
+=== toZip(LayoutExportStyle, CommonMimeType)
 
-Obtains the serialized XML form of the layout (grid) for the specified domain class.
+Obtains a zip file of the serialized layouts (grids) of all domain entities and view models.
 
-[#toZip_LayoutExportStyle]
-=== toZip(LayoutExportStyle)
+[#supportedMenuBarsLayoutFormats_]
+=== supportedMenuBarsLayoutFormats()
 
-Obtains a zip file of the serialized XML of the layouts (grids) of all domain entities and view models.
+Supported format(s) for _#menuBarsLayout(org.apache.causeway.applib.services.menu.MenuBarsService.Type, CommonMimeType)_ .
 
-[#toMenuBarsXml_MenuBarsService_Type]
-=== toMenuBarsXml(MenuBarsService_Type)
+[#menuBarsLayout_MenuBarsService_Type_CommonMimeType]
+=== menuBarsLayout(MenuBarsService_Type, CommonMimeType)
 
-Obtains the serialized XML form of the menu bars layout ( xref:refguide:applib:index/services/menu/MenuBarsService.adoc[MenuBarsService] ).
+Obtains the serialized form of the menu bars layout ( xref:refguide:applib:index/services/menu/MenuBarsService.adoc[MenuBarsService] ).
 
 include::hooks/LayoutService_010-implementation.adoc[]
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/marshal/MarshallerService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/marshal/MarshallerService.adoc
new file mode 100644
index 0000000000..d0ed9fb9bb
--- /dev/null
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/marshal/MarshallerService.adoc
@@ -0,0 +1,44 @@
+= MarshallerService
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Supports marshaling and unmarshaling of the generic type T for a set of mime types.
+
+== API
+
+[source,java]
+.MarshallerService.java
+----
+interface MarshallerService<T> {
+  Class<T> supportedClass()
+  EnumSet<CommonMimeType> supportedFormats()     // <.>
+  String marshal(T value, CommonMimeType format)     // <.>
+  Try<T> unmarshal(String content, CommonMimeType format)     // <.>
+}
+----
+
+<.> xref:#supportedFormats_[supportedFormats()]
++
+--
+Supported format(s) for _#unmarshal(String, CommonMimeType)_ and _#marshal(Object, CommonMimeType)_ .
+--
+<.> xref:#marshal_T_CommonMimeType[marshal(T, CommonMimeType)]
+<.> xref:#unmarshal_String_CommonMimeType[unmarshal(String, CommonMimeType)]
++
+--
+Returns a new de-serialized instance wrapped in a xref:refguide:commons:index/functional/Try.adoc[Try] .
+--
+
+== Members
+
+[#supportedFormats_]
+=== supportedFormats()
+
+Supported format(s) for _#unmarshal(String, CommonMimeType)_ and _#marshal(Object, CommonMimeType)_ .
+
+[#marshal_T_CommonMimeType]
+=== marshal(T, CommonMimeType)
+
+[#unmarshal_String_CommonMimeType]
+=== unmarshal(String, CommonMimeType)
+
+Returns a new de-serialized instance wrapped in a xref:refguide:commons:index/functional/Try.adoc[Try] .
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/menu/MenuBarsLoaderService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/menu/MenuBarsLoaderService.adoc
index b108553139..18be074e9f 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/menu/MenuBarsLoaderService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/menu/MenuBarsLoaderService.adoc
@@ -1,9 +1,9 @@
 = MenuBarsLoaderService
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Returns the xref:refguide:applib:index/layout/menubars/bootstrap/BSMenuBars.adoc[BSMenuBars] instance (bootstrap3-specific subtype of _org.apache.causeway.applib.layout.menubars.MenuBars_ , for the UI.
+Returns the xref:refguide:applib:index/layout/menubars/MenuBars.adoc[MenuBars] instance for the UI.
 
-The default implementation deserializes the `menubars.layout.xml` file read from the classpath.
+The default implementation de-serializes the `menubars.layout...` file read from the classpath.
 
 The service is _called_ by the default implementation of xref:refguide:applib:index/services/menu/MenuBarsService.adoc[MenuBarsService] .
 
@@ -14,7 +14,7 @@ The service is _called_ by the default implementation of xref:refguide:applib:in
 ----
 interface MenuBarsLoaderService {
   boolean supportsReloading()     // <.>
-  BSMenuBars menuBars()     // <.>
+  Optional<T> menuBars(MenuBarsMarshallerService<T> marshaller)     // <.>
 }
 ----
 
@@ -23,10 +23,10 @@ interface MenuBarsLoaderService {
 --
 Whether dynamic reloading of layouts is enabled.
 --
-<.> xref:#menuBars_[menuBars()]
+<.> xref:#menuBars_MenuBarsMarshallerService[menuBars(MenuBarsMarshallerService)]
 +
 --
-Returns a new instance of a xref:refguide:applib:index/layout/menubars/bootstrap/BSMenuBars.adoc[BSMenuBars] if possible, else `null` .
+Optionally returns a new instance of a xref:refguide:applib:index/layout/menubars/MenuBars.adoc[MenuBars] , based on whether the underlying resource could be found, loaded and parsed.
 --
 
 == Members
@@ -38,10 +38,10 @@ Whether dynamic reloading of layouts is enabled.
 
 If not, then the calling xref:refguide:applib:index/services/menu/MenuBarsService.adoc[MenuBarsService] will cache the layout once loaded.
 
-[#menuBars_]
-=== menuBars()
+[#menuBars_MenuBarsMarshallerService]
+=== menuBars(MenuBarsMarshallerService)
 
-Returns a new instance of a xref:refguide:applib:index/layout/menubars/bootstrap/BSMenuBars.adoc[BSMenuBars] if possible, else `null` .
+Optionally returns a new instance of a xref:refguide:applib:index/layout/menubars/MenuBars.adoc[MenuBars] , based on whether the underlying resource could be found, loaded and parsed.
 
 include::hooks/MenuBarsLoaderService_010-implementation.adoc[]
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/annotation/HomePage.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/menu/MenuBarsMarshallerService.adoc
similarity index 64%
copy from antora/components/refguide-index/modules/applib/pages/index/annotation/HomePage.adoc
copy to antora/components/refguide-index/modules/applib/pages/index/services/menu/MenuBarsMarshallerService.adoc
index e411cd7274..c7dcb1590a 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/annotation/HomePage.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/menu/MenuBarsMarshallerService.adoc
@@ -1,17 +1,16 @@
-= @HomePage
+= MenuBarsMarshallerService
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Annotated on a view model to indicate that it should be used as the home page.
+Supports xref:refguide:applib:index/layout/menubars/MenuBars.adoc[MenuBars] marshaling and unmarshaling.
 
-The view model is instantiated through a no-arg constructor, so must in effect be stateless. Typically it will use injected repositories in order to display a dashboard, and offer actions to traverse or operate on the rendered state.
+The service is _called_ by the default implementations of xref:refguide:applib:index/services/menu/MenuBarsService.adoc[MenuBarsService] and (indirectly) xref:refguide:applib:index/services/layout/LayoutService.adoc[LayoutService] .
 
 == API
 
 [source,java]
-.HomePage.java
+.MenuBarsMarshallerService.java
 ----
-@interface HomePage {
+interface MenuBarsMarshallerService<T> {
 }
 ----
 
-include::hooks/HomePage_010-examples-and-usage.adoc[]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/menu/MenuBarsService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/menu/MenuBarsService.adoc
index 32070674ea..1590b6f78d 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/menu/MenuBarsService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/menu/MenuBarsService.adoc
@@ -13,6 +13,7 @@ This is used by the Wicket viewer to build up the menu. It is also served as the
 interface MenuBarsService {
   MenuBars menuBars()     // <.>
   MenuBars menuBars(Type type)     // <.>
+  MenuBarsMarshallerService<? extends MenuBars> marshaller()
   MenuBarsService forTesting()
 }
 ----
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/repository/RepositoryService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/repository/RepositoryService.adoc
index 5cca96ac38..ea2010abc8 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/repository/RepositoryService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/repository/RepositoryService.adoc
@@ -219,7 +219,7 @@ This method is useful during exploration/prototyping, but - because the filterin
 
 Overload of _#allMatches(Class, Predicate)_ , returns a _page_ of persisted instances of specified type (including subtypes).
 
-If the optional range parameters are used, the dataset returned starts from (0 based) index, and consists of only up to count items.
+If the optional range parameters are used, the dataset considered (before filtering) starts from (0 based) index, runs through up to count items.
 
 [#allMatches_Query]
 === allMatches(Query)
diff --git a/antora/components/refguide-index/modules/applib/pages/index/value/Blob.adoc b/antora/components/refguide-index/modules/applib/pages/index/value/Blob.adoc
index b4a07865e1..78eb030321 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/value/Blob.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/value/Blob.adoc
@@ -19,11 +19,13 @@ class Blob {
   Blob(String name, String mimeTypeBase, byte[] bytes)
   Blob(String name, MimeType mimeType, byte[] bytes)
   Blob of(String name, CommonMimeType mimeType, byte[] content)     // <.>
+  Try<Blob> tryRead(String name, CommonMimeType mimeType, File file)     // <.>
   String getName()
   MimeType getMimeType()
   byte[] getBytes()
-  Clob toClob(Charset charset)
+  Clob toClob(Charset charset)     // <.>
   void writeBytesTo(OutputStream os)     // <.>
+  void writeTo(File file)     // <.>
   void consume(Consumer<InputStream> consumer)     // <.>
   R digest(Function<InputStream, R> digester)     // <.>
   Blob zip()
@@ -40,11 +42,26 @@ class Blob {
 --
 Returns a new xref:refguide:applib:index/value/Blob.adoc[Blob] of given _name_ , _mimeType_ and _content_ .
 --
+<.> xref:#tryRead_String_CommonMimeType_File[tryRead(String, CommonMimeType, File)]
++
+--
+Returns a new xref:refguide:applib:index/value/Blob.adoc[Blob] of given _name_ , _mimeType_ and content from _file_ , wrapped with a xref:refguide:commons:index/functional/Try.adoc[Try] .
+--
+<.> xref:#toClob_Charset[toClob(Charset)]
++
+--
+Converts to a xref:refguide:applib:index/value/Clob.adoc[Clob] , using given _Charset_ for the underlying byte[] to String conversion.
+--
 <.> xref:#writeBytesTo_OutputStream[writeBytesTo(OutputStream)]
 +
 --
 Does not close the OutputStream.
 --
+<.> xref:#writeTo_File[writeTo(File)]
++
+--
+Writes this xref:refguide:applib:index/value/Blob.adoc[Blob] to the file represented by the specified `File` object.
+--
 <.> xref:#consume_Consumer[consume(Consumer)]
 +
 --
@@ -68,11 +85,32 @@ _name_ may or may not include the desired filename extension, it is guaranteed,
 
 For more fine-grained control use one of the xref:refguide:applib:index/value/Blob.adoc[Blob] constructors directly.
 
+[#tryRead_String_CommonMimeType_File]
+=== tryRead(String, CommonMimeType, File)
+
+Returns a new xref:refguide:applib:index/value/Blob.adoc[Blob] of given _name_ , _mimeType_ and content from _file_ , wrapped with a xref:refguide:commons:index/functional/Try.adoc[Try] .
+
+_name_ may or may not include the desired filename extension, it is guaranteed, that the resulting xref:refguide:applib:index/value/Blob.adoc[Blob] has the appropriate extension as constraint by the given _mimeType_ .
+
+For more fine-grained control use one of the xref:refguide:applib:index/value/Blob.adoc[Blob] constructors directly.
+
+[#toClob_Charset]
+=== toClob(Charset)
+
+Converts to a xref:refguide:applib:index/value/Clob.adoc[Clob] , using given _Charset_ for the underlying byte[] to String conversion.
+
 [#writeBytesTo_OutputStream]
 === writeBytesTo(OutputStream)
 
 Does not close the OutputStream.
 
+[#writeTo_File]
+=== writeTo(File)
+
+Writes this xref:refguide:applib:index/value/Blob.adoc[Blob] to the file represented by the specified `File` object.
+
+If the file exists but is a directory rather than a regular file, does not exist but cannot be created, or cannot be opened for any other reason then a `FileNotFoundException` is thrown.
+
 [#consume_Consumer]
 === consume(Consumer)
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/value/Clob.adoc b/antora/components/refguide-index/modules/applib/pages/index/value/Clob.adoc
index c07ca86988..a3ba529905 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/value/Clob.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/value/Clob.adoc
@@ -22,11 +22,16 @@ class Clob {
   Clob(String name, String mimeTypeBase, CharSequence chars)
   Clob(String name, MimeType mimeType, CharSequence chars)
   Clob of(String name, CommonMimeType mimeType, CharSequence content)     // <.>
+  Try<Clob> tryRead(String name, CommonMimeType mimeType, File file, Charset charset)     // <.>
+  Try<Clob> tryReadUtf8(String name, CommonMimeType mimeType, File file)     // <.>
   String getName()
   MimeType getMimeType()
   CharSequence getChars()
-  Blob toBlob(Charset charset)
+  Blob toBlob(Charset charset)     // <.>
+  Blob toBlobUtf8()     // <.>
   void writeCharsTo(Writer wr)
+  void writeTo(File file, Charset charset)     // <.>
+  void writeToUtf8(File file)     // <.>
   String asString()
   boolean equals(Object o)
   int hashCode()
@@ -39,6 +44,36 @@ class Clob {
 --
 Returns a new xref:refguide:applib:index/value/Clob.adoc[Clob] of given _name_ , _mimeType_ and _content_ .
 --
+<.> xref:#tryRead_String_CommonMimeType_File_Charset[tryRead(String, CommonMimeType, File, Charset)]
++
+--
+Returns a new xref:refguide:applib:index/value/Clob.adoc[Clob] of given _name_ , _mimeType_ and content from _file_ , wrapped with a xref:refguide:commons:index/functional/Try.adoc[Try] .
+--
+<.> xref:#tryReadUtf8_String_CommonMimeType_File[tryReadUtf8(String, CommonMimeType, File)]
++
+--
+Shortcut for _#tryRead(String, org.apache.causeway.applib.value.NamedWithMimeType.CommonMimeType, File, Charset)_ using _StandardCharsets#UTF_8_ .
+--
+<.> xref:#toBlob_Charset[toBlob(Charset)]
++
+--
+Converts to a xref:refguide:applib:index/value/Blob.adoc[Blob] , using given _Charset_ for the underlying String to byte[] conversion.
+--
+<.> xref:#toBlobUtf8_[toBlobUtf8()]
++
+--
+Shortcut for _#toBlob(Charset)_ using _StandardCharsets#UTF_8_ .
+--
+<.> xref:#writeTo_File_Charset[writeTo(File, Charset)]
++
+--
+Writes this xref:refguide:applib:index/value/Clob.adoc[Clob] to the file represented by the specified `File` object.
+--
+<.> xref:#writeToUtf8_File[writeToUtf8(File)]
++
+--
+Shortcut for _#writeTo(File, Charset)_ using _StandardCharsets#UTF_8_ .
+--
 
 == Members
 
@@ -51,4 +86,40 @@ _name_ may or may not include the desired filename extension, it is guaranteed,
 
 For more fine-grained control use one of the xref:refguide:applib:index/value/Clob.adoc[Clob] constructors directly.
 
+[#tryRead_String_CommonMimeType_File_Charset]
+=== tryRead(String, CommonMimeType, File, Charset)
+
+Returns a new xref:refguide:applib:index/value/Clob.adoc[Clob] of given _name_ , _mimeType_ and content from _file_ , wrapped with a xref:refguide:commons:index/functional/Try.adoc[Try] .
+
+_name_ may or may not include the desired filename extension, it is guaranteed, that the resulting xref:refguide:applib:index/value/Clob.adoc[Clob] has the appropriate extension as constraint by the given _mimeType_ .
+
+For more fine-grained control use one of the xref:refguide:applib:index/value/Clob.adoc[Clob] constructors directly.
+
+[#tryReadUtf8_String_CommonMimeType_File]
+=== tryReadUtf8(String, CommonMimeType, File)
+
+Shortcut for _#tryRead(String, org.apache.causeway.applib.value.NamedWithMimeType.CommonMimeType, File, Charset)_ using _StandardCharsets#UTF_8_ .
+
+[#toBlob_Charset]
+=== toBlob(Charset)
+
+Converts to a xref:refguide:applib:index/value/Blob.adoc[Blob] , using given _Charset_ for the underlying String to byte[] conversion.
+
+[#toBlobUtf8_]
+=== toBlobUtf8()
+
+Shortcut for _#toBlob(Charset)_ using _StandardCharsets#UTF_8_ .
+
+[#writeTo_File_Charset]
+=== writeTo(File, Charset)
+
+Writes this xref:refguide:applib:index/value/Clob.adoc[Clob] to the file represented by the specified `File` object.
+
+If the file exists but is a directory rather than a regular file, does not exist but cannot be created, or cannot be opened for any other reason then a `FileNotFoundException` is thrown.
+
+[#writeToUtf8_File]
+=== writeToUtf8(File)
+
+Shortcut for _#writeTo(File, Charset)_ using _StandardCharsets#UTF_8_ .
+
 include::hooks/Clob_usage-notes.adoc[]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/contributions/HasInteractionId_commandLogEntry.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/contributions/HasInteractionId_commandLogEntry.adoc
index 6c0c532374..19323b042f 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/contributions/HasInteractionId_commandLogEntry.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/contributions/HasInteractionId_commandLogEntry.adoc
@@ -1,6 +1,10 @@
 = HasInteractionId_commandLogEntry
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Contributes a `commandLogEntry` property to any object implementing xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] , in other words the command giving rise or related to the implementing object.
+
+For example, the `AuditTrailEntry` entity (in the _audit trail_ extension), or the `ExecutionLogEntry` entity (in the _execution log_ extension) both implement xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] .
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/contributions/HasUsername_recentCommandsByUser.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/contributions/HasUsername_recentCommandsByUser.adoc
index a9d9c60c90..6197ab9483 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/contributions/HasUsername_recentCommandsByUser.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/contributions/HasUsername_recentCommandsByUser.adoc
@@ -1,6 +1,10 @@
 = HasUsername_recentCommandsByUser
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Contributes the `recentCommandsByUser` collection to any domain object implementing xref:refguide:applib:index/mixins/security/HasUsername.adoc[HasUsername] .
+
+For example the _secman_ extension's `ApplicationUser` entity implements this interface.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/contributions/Object_recentCommands.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/contributions/Object_recentCommands.adoc
index 5161dfbc01..1e2353e4e3 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/contributions/Object_recentCommands.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/contributions/Object_recentCommands.adoc
@@ -1,7 +1,7 @@
 = Object_recentCommands
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-This mixin contributes a `recentCommands` action to any domain object (unless also xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] - commands don't themselves have commands).
+Contributes a `recentCommands` action to any domain object (unless also xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] - commands don't themselves have commands).
 
 == API
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/contributions/T_recentBackgroundCommands.adoc
similarity index 74%
copy from antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.adoc
copy to antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/contributions/T_recentBackgroundCommands.adoc
index 07c0939f82..4381377442 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/contributions/T_recentBackgroundCommands.adoc
@@ -1,12 +1,16 @@
-= CommandLogEntry_childCommands
+= T_recentBackgroundCommands
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+This (abstract) mixin contributes a `recentBackgroundCommands` collection to any domain object.
+
+To surface this collection, create a trivial subclass for the target domain class.
+
 == API
 
 [source,java]
-.CommandLogEntry_childCommands.java
+.T_recentBackgroundCommands.java
 ----
-class CommandLogEntry_childCommands {
+class T_recentBackgroundCommands<T> {
   List<? extends CommandLogEntry> coll()
 }
 ----
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/CommandLogEntryRepository.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/CommandLogEntryRepository.adoc
index bcb653b6d3..b79847e2ff 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/CommandLogEntryRepository.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/CommandLogEntryRepository.adoc
@@ -25,6 +25,7 @@ class CommandLogEntryRepository<C> {
   List<C> findRecentByTargetOrResult(Bookmark targetOrResult)
   List<C> findSince(UUID interactionId, Integer batchSize)     // <.>
   List<C> findBackgroundAndNotYetStarted()     // <.>
+  List<C> findRecentBackgroundByTarget(Bookmark target)
   Optional<C> findMostRecentReplayed()     // <.>
   Optional<C> findMostRecentCompleted()     // <.>
   List<C> findNotYetReplayed()
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.adoc
index 07c0939f82..eb536e96fb 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.adoc
@@ -1,6 +1,8 @@
 = CommandLogEntry_childCommands
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Contributes the `childCommands` collection to xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry] entity.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_openResultObject.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_openResultObject.adoc
index 33c983f7c2..ea553bf93d 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_openResultObject.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_openResultObject.adoc
@@ -1,6 +1,8 @@
 = CommandLogEntry_openResultObject
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Contributes an action to open the domain object that was the result of invoking the command (represented in persistent form by the xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry] ).
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_siblingCommands.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_siblingCommands.adoc
index 46bb99e964..dc988efef0 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_siblingCommands.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_siblingCommands.adoc
@@ -1,6 +1,8 @@
 = CommandLogEntry_siblingCommands
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Contributes a `siblingCommands` collection to the xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry] ), in other words those commands to be run in the background that have the same originating (parent) command.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/subscriber/CommandSubscriberForCommandLog.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/subscriber/CommandSubscriberForCommandLog.adoc
index e01cddf628..fb84194591 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/subscriber/CommandSubscriberForCommandLog.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/subscriber/CommandSubscriberForCommandLog.adoc
@@ -1,6 +1,8 @@
 = CommandSubscriberForCommandLog
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Implementation of xref:refguide:applib:index/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber] responsible for persisting the xref:refguide:applib:index/services/command/Command.adoc[Command] as a xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry] .
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/CausewayModuleExtCommandReplaySecondary.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/CausewayModuleExtCommandReplaySecondary.adoc
index d96a3f0355..9ba235405e 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/CausewayModuleExtCommandReplaySecondary.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/CausewayModuleExtCommandReplaySecondary.adoc
@@ -12,9 +12,6 @@ class CausewayModuleExtCommandReplaySecondary {
   public static final String NAMESPACE;
   JobDetailFactoryBean replicateAndReplayJobDetailFactory()
   SimpleTriggerFactoryBean replicateAndReplayTriggerFactory(JobDetail job)
-  SpringBeanJobFactory springBeanJobFactory()
-  SchedulerFactoryBean scheduler(Trigger trigger, JobDetail jobDetail, SpringBeanJobFactory sbjf)
-  Scheduler scheduler(Trigger trigger, JobDetail job, SchedulerFactoryBean factory)
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/ViewModel.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/job/JobExecutionData.adoc
similarity index 53%
copy from antora/components/refguide-index/modules/applib/pages/index/ViewModel.adoc
copy to antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/job/JobExecutionData.adoc
index e17cef46be..0af8717ae7 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/ViewModel.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/job/JobExecutionData.adoc
@@ -1,29 +1,38 @@
-= ViewModel
+= JobExecutionData
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Indicates that an object belongs to the UI/application layer, and is intended to be used as a view model.
+Requires that the job is annotated with the _org.quartz.PersistJobDataAfterExecution_ annotation.
 
 == API
 
 [source,java]
-.ViewModel.java
+.JobExecutionData.java
 ----
-interface ViewModel {
-  String viewModelMemento()     // <.>
+class JobExecutionData {
+  String getString(String key, String defaultValue)     // <.>
+  void setString(String key, String value)     // <.>
 }
 ----
 
-<.> xref:#viewModelMemento_[viewModelMemento()]
+<.> xref:#getString_String_String[getString(String, String)]
 +
 --
-Obtain a memento of the view model.
+Lookup property from the job detail.
+--
+<.> xref:#setString_String_String[setString(String, String)]
++
+--
+Save key into the job detail obtained from context.
 --
 
 == Members
 
-[#viewModelMemento_]
-=== viewModelMemento()
+[#getString_String_String]
+=== getString(String, String)
+
+Lookup property from the job detail.
 
-Obtain a memento of the view model.
+[#setString_String_String]
+=== setString(String, String)
 
-Instances of xref:refguide:applib:index/ViewModel.adoc[ViewModel] must include a public single _String_ argument constructor, that recreates an instance from a memento string. This constructor is not required to resolve injection points or fire domain events, instead this responsibility is encapsulated with the framework.
+Save key into the job detail obtained from context.
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/excel/applib/ExcelService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/excel/applib/ExcelService.adoc
index 72395b8d54..0de7e6d15b 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/excel/applib/ExcelService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/excel/applib/ExcelService.adoc
@@ -1,6 +1,8 @@
 = ExcelService
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Provides a set of utilities
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/excel/applib/ExcelService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/excel/applib/service/ExcelServiceDefault.adoc
similarity index 59%
copy from antora/components/refguide-index/modules/extensions/pages/index/excel/applib/ExcelService.adoc
copy to antora/components/refguide-index/modules/extensions/pages/index/excel/applib/service/ExcelServiceDefault.adoc
index 72395b8d54..e4a398c84a 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/excel/applib/ExcelService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/excel/applib/service/ExcelServiceDefault.adoc
@@ -1,14 +1,16 @@
-= ExcelService
+= ExcelServiceDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Implementation of xref:refguide:extensions:index/excel/applib/ExcelService.adoc[ExcelService] .
+
 == API
 
 [source,java]
-.ExcelService.java
+.ExcelServiceDefault.java
 ----
-interface ExcelService {
-  String XSLX_MIME_TYPE;
-  Blob toExcel(List<T> domainObjects, Class<T> cls, String sheetName, String fileName)     // <.>
+class ExcelServiceDefault {
+  void init()
+  Blob toExcel(List<T> domainObjects, Class<T> cls, String sheetName, String fileName)
   Blob toExcel(List<T> domainObjects, Class<T> cls, String sheetName, String fileName, InputStream in)
   Blob toExcel(WorksheetContent worksheetContent, String fileName)
   Blob toExcel(WorksheetContent worksheetContent, String fileName, InputStream in)
@@ -18,7 +20,7 @@ interface ExcelService {
   Blob toExcelPivot(List<T> domainObjects, Class<T> cls, String sheetName, String fileName)
   Blob toExcelPivot(WorksheetContent worksheetContent, String fileName)
   Blob toExcelPivot(List<WorksheetContent> worksheetContents, String fileName)
-  List<T> fromExcel(Blob excelBlob, Class<T> cls, String sheetName)     // <.>
+  List<T> fromExcel(Blob excelBlob, Class<T> cls, String sheetName)
   List<T> fromExcel(Blob excelBlob, Class<T> cls, String sheetName, Mode mode)
   List<T> fromExcel(Blob excelBlob, WorksheetSpec worksheetSpec)
   List<List<?>> fromExcel(Blob excelBlob, List<WorksheetSpec> worksheetSpecs)
@@ -27,29 +29,3 @@ interface ExcelService {
 }
 ----
 
-<.> xref:#toExcel_List_Class_String_String[toExcel(List, Class, String, String)]
-+
---
-Creates a Blob holding a spreadsheet of the domain objects.
---
-<.> xref:#fromExcel_Blob_Class_String[fromExcel(Blob, Class, String)]
-+
---
-Returns a list of objects for each line in the spreadsheet, of the specified type.
---
-
-== Members
-
-[#toExcel_List_Class_String_String]
-=== toExcel(List, Class, String, String)
-
-Creates a Blob holding a spreadsheet of the domain objects.
-
-There are no specific restrictions on the domain objects; they can be either persistable entities or view models. Do be aware though that if imported back using _#fromExcel(Blob, Class, String)_ , then new instances are always created. It is generally better therefore to work with view models than to work with entities. This also makes it easier to maintain backward compatibility in the future if the persistence model changes; using view models represents a stable API for import/export.
-
-[#fromExcel_Blob_Class_String]
-=== fromExcel(Blob, Class, String)
-
-Returns a list of objects for each line in the spreadsheet, of the specified type.
-
-If the class is a view model then the objects will be properly instantiated, with the correct view model memento); otherwise the objects will be simple transient objects.
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/contributions/HasInteractionId_executionLogEntries.adoc b/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/contributions/HasInteractionId_executionLogEntries.adoc
index 6c5b358546..d1fd519559 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/contributions/HasInteractionId_executionLogEntries.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/contributions/HasInteractionId_executionLogEntries.adoc
@@ -1,6 +1,10 @@
 = HasInteractionId_executionLogEntries
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Contributes a `executionLogEntries` collection to any object implementing xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] , in other words the executions that occurred relating to an _org.apache.causeway.applib.services.iactn.Interaction_ .
+
+For example, the `CommandLogEntry` (in the _command log_ extension) or the `AuditTrailEntry` entity (in the _audit trail_ extension) both implement xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] .
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/contributions/HasUsername_recentExecutionsByUser.adoc b/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/contributions/HasUsername_recentExecutionsByUser.adoc
index f383c35cb1..aff44d3894 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/contributions/HasUsername_recentExecutionsByUser.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/contributions/HasUsername_recentExecutionsByUser.adoc
@@ -1,6 +1,10 @@
 = HasUsername_recentExecutionsByUser
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Contributes the `recentExecutionsByUser` collection to any domain object implementing xref:refguide:applib:index/mixins/security/HasUsername.adoc[HasUsername] .
+
+For example the _secman_ extension's `ApplicationUser` entity implements this interface.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/contributions/Object_recentExecutions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/contributions/Object_recentExecutions.adoc
index 665388282a..a0f4ea459c 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/contributions/Object_recentExecutions.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/contributions/Object_recentExecutions.adoc
@@ -1,7 +1,7 @@
 = Object_recentExecutions
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-This mixin contributes a `recentCommands` action to any domain object (unless also xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] - commands don't themselves have commands).
+Contributes a `recentCommands` action to any domain object (unless also xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] - commands don't themselves have commands).
 
 == API
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/dom/ExecutionLogEntryType.adoc b/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/dom/ExecutionLogEntryType.adoc
index 1fde7b6ad4..f8e24372ad 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/dom/ExecutionLogEntryType.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/dom/ExecutionLogEntryType.adoc
@@ -1,6 +1,8 @@
 = ExecutionLogEntryType _(enum)_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Whether an xref:refguide:extensions:index/executionlog/applib/dom/ExecutionLogEntry.adoc[ExecutionLogEntry] persists an _ExecutionLogEntryType#ACTION_INVOCATION action invocation_ or a _ExecutionLogEntryType#PROPERTY_EDIT property edit_ .
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/dom/mixins/ExecutionLogEntry_siblingExecutions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/dom/mixins/ExecutionLogEntry_siblingExecutions.adoc
index ecb9f663a8..0add14c59c 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/dom/mixins/ExecutionLogEntry_siblingExecutions.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/executionlog/applib/dom/mixins/ExecutionLogEntry_siblingExecutions.adoc
@@ -1,6 +1,8 @@
 = ExecutionLogEntry_siblingExecutions
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Contributes a `siblingExecutions` collection to xref:refguide:extensions:index/executionlog/applib/dom/ExecutionLogEntry.adoc[ExecutionLogEntry] .
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/dom/ExecutionOutboxEntryType.adoc b/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/dom/ExecutionOutboxEntryType.adoc
index 7eb927d3d9..3fe86c3fff 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/dom/ExecutionOutboxEntryType.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/dom/ExecutionOutboxEntryType.adoc
@@ -1,6 +1,8 @@
 = ExecutionOutboxEntryType _(enum)_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Whether an xref:refguide:extensions:index/executionoutbox/applib/dom/ExecutionOutboxEntry.adoc[ExecutionOutboxEntry] persists an _ExecutionOutboxEntryType#ACTION_INVOCATION action invocation_ or a _ExecutionOutboxEntryType#PROPERTY_EDIT property edit_ .
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/restapi/OutboxEvents.adoc b/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/restapi/OutboxEvents.adoc
index 4d63afc407..fcd87a981e 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/restapi/OutboxEvents.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/restapi/OutboxEvents.adoc
@@ -1,6 +1,10 @@
 = OutboxEvents
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Wrapper around a collection of xref:refguide:extensions:index/executionoutbox/applib/dom/ExecutionOutboxEntry.adoc[ExecutionOutboxEntry] .
+
+This class is used as the return value of _OutboxRestApi#pending()_ . The _outbox client_ calls this with an HTTP `Accept` header set to _org.apache.causeway.schema.ixn.v2.InteractionsDto_ so that it is serialized into a list of _org.apache.causeway.applib.services.iactn.Interaction_ s for processing.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/restapi/OutboxRestApi.adoc b/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/restapi/OutboxRestApi.adoc
index ed24d4c40c..1987be0279 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/restapi/OutboxRestApi.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/restapi/OutboxRestApi.adoc
@@ -1,6 +1,8 @@
 = OutboxRestApi
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Provides a server-side REST API for the _outbox rest client_ to call, to first obtain _#pending() pending_ xref:refguide:extensions:index/executionoutbox/applib/dom/ExecutionOutboxEntry.adoc[ExecutionOutboxEntry] to be processed, and then later to request them to be _#deleteMany(String) deleted_ .
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/spiimpl/ContentMappingServiceForOutboxEvents.adoc b/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/spiimpl/ContentMappingServiceForOutboxEvents.adoc
index d91167e2c6..350de50e99 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/spiimpl/ContentMappingServiceForOutboxEvents.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/executionoutbox/applib/spiimpl/ContentMappingServiceForOutboxEvents.adoc
@@ -1,6 +1,8 @@
 = ContentMappingServiceForOutboxEvents
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Implementation of xref:refguide:applib:index/services/conmap/ContentMappingService.adoc[ContentMappingService] that is responsible for serializing a list of
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/client/RestfulClient.adoc b/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/client/RestfulClient.adoc
index 3859e8871f..a4d4509560 100644
--- a/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/client/RestfulClient.adoc
+++ b/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/client/RestfulClient.adoc
@@ -1,26 +1,26 @@
 = RestfulClient
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Setup the Restful Client with Basic-Auth:Make a Request and then digest the Response:Maven Setup:
+Setup the Restful Client with Basic-Auth:Make a Request and then digest the Response:
 
 For example:
 
 ----
 
-RestfulClientConfig clientConfig = new RestfulClientConfig();
-clientConfig.setRestfulBase("http://localhost:8080/helloworld/restful/");
-clientConfig.setUseBasicAuth(true); // default = false
-clientConfig.setRestfulAuthUser("sven");
-clientConfig.setRestfulAuthPassword("pass");
-clientConfig.setUseRequestDebugLogging(true); // default = false
+RestfulClientConfig clientConfig = RestfulClientConfig.builder();
+.restfulBase("http://localhost:8080/helloworld/restful/")
+.useBasicAuth(true) // default = false
+.restfulAuthUser("sven")
+.restfulAuthPassword("pass")
+.useRequestDebugLogging(true) // default = false
+.build();
 
 RestfulClient client = RestfulClient.ofConfig(clientConfig);
 ----
 
 ----
- _Builder request = client.request(
-                "services/myService/actions/lookupMyObjectById/invoke",
-                SuppressionType.RO);
+ _Builder request = client.request("services/myService/actions/lookupMyObjectById/invoke")
+    .accept(RestfulClientMediaType.SIMPLE_JSON.mediaTypeFor(MyObject.class, EnumSet.of(SuppressionType.RO)));
 
 Entity args = client.arguments()
         .addActionParameter("id", "12345")
@@ -37,10 +37,6 @@ if(digest.isSuccess()) {
 }
 ----
 
-----
- _org.glassfish.jersey.extjersey-spring52.35_ 
-----
-
 == API
 
 [source,java]
@@ -48,14 +44,27 @@ if(digest.isSuccess()) {
 ----
 class RestfulClient {
   RestfulClient ofConfig(RestfulClientConfig clientConfig)
-  void init(RestfulClientConfig clientConfig)
+  RestfulClient ofConfig(RestfulClientConfig clientConfig, UnaryOperator<ClientBuilder> configRefiner)
   RestfulClientConfig getConfig()
   Client getJaxRsClient()
-  Builder request(String path, SuppressionType... suppressionTypes)
-  Builder request(String path, EnumSet<SuppressionType> suppressionTypes)
+  void close()
+  Builder request(String path)
   ActionParameterListBuilder arguments()
   Try<T> digest(Response response, Class<T> entityType)
   Try<Can<T>> digestList(Response response, Class<T> entityType, GenericType<List<T>> genericType)
+  URI uri(String path)     // <.>
 }
 ----
 
+<.> xref:#uri_String[uri(String)]
++
+--
+Returns an _URI_ constructed from this client's base path plus given relative _path_ .
+--
+
+== Members
+
+[#uri_String]
+=== uri(String)
+
+Returns an _URI_ constructed from this client's base path plus given relative _path_ .
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.adoc b/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy/CausewayModuleViewerRestfulObjectsJaxrsResteasy.adoc
similarity index 83%
copy from antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.adoc
copy to antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy/CausewayModuleViewerRestfulObjectsJaxrsResteasy.adoc
index 07c0939f82..d08e483b02 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.adoc
+++ b/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy/CausewayModuleViewerRestfulObjectsJaxrsResteasy.adoc
@@ -1,13 +1,12 @@
-= CommandLogEntry_childCommands
+= CausewayModuleViewerRestfulObjectsJaxrsResteasy
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 == API
 
 [source,java]
-.CommandLogEntry_childCommands.java
+.CausewayModuleViewerRestfulObjectsJaxrsResteasy.java
 ----
-class CommandLogEntry_childCommands {
-  List<? extends CommandLogEntry> coll()
+class CausewayModuleViewerRestfulObjectsJaxrsResteasy {
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy4/conneg/RestfulObjectsJaxbWriterForXml.adoc b/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy/conneg/RestfulObjectsJaxbWriterForXml.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy4/conneg/RestfulObjectsJaxbWriterForXml.adoc
rename to antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy/conneg/RestfulObjectsJaxbWriterForXml.adoc
diff --git a/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy4/webmodule/WebModuleJaxrsResteasy4.adoc b/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy/webmodule/WebModuleJaxrsResteasy.adoc
similarity index 79%
rename from antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy4/webmodule/WebModuleJaxrsResteasy4.adoc
rename to antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy/webmodule/WebModuleJaxrsResteasy.adoc
index addaef62bc..6ce9f50a1f 100644
--- a/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy4/webmodule/WebModuleJaxrsResteasy4.adoc
+++ b/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy/webmodule/WebModuleJaxrsResteasy.adoc
@@ -1,4 +1,4 @@
-= WebModuleJaxrsResteasy4
+= WebModuleJaxrsResteasy
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 WebModule that provides the RestfulObjects Viewer.
@@ -6,10 +6,10 @@ WebModule that provides the RestfulObjects Viewer.
 == API
 
 [source,java]
-.WebModuleJaxrsResteasy4.java
+.WebModuleJaxrsResteasy.java
 ----
-class WebModuleJaxrsResteasy4 {
-  WebModuleJaxrsResteasy4(CausewayConfiguration causewayConfiguration, RestEasyConfiguration restEasyConfiguration, ServiceInjector serviceInjector)
+class WebModuleJaxrsResteasy {
+  WebModuleJaxrsResteasy(CausewayConfiguration causewayConfiguration, RestEasyConfiguration restEasyConfiguration, ServiceInjector serviceInjector)
   void prepare(WebModuleContext ctx)
   Can<ServletContextListener> init(ServletContext ctx)
 }
diff --git a/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy4/CausewayModuleViewerRestfulObjectsJaxrsResteasy4.adoc b/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy4/CausewayModuleViewerRestfulObjectsJaxrsResteasy4.adoc
deleted file mode 100644
index ebe4697099..0000000000
--- a/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/jaxrsresteasy4/CausewayModuleViewerRestfulObjectsJaxrsResteasy4.adoc
+++ /dev/null
@@ -1,12 +0,0 @@
-= CausewayModuleViewerRestfulObjectsJaxrsResteasy4
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-
-== API
-
-[source,java]
-.CausewayModuleViewerRestfulObjectsJaxrsResteasy4.java
-----
-class CausewayModuleViewerRestfulObjectsJaxrsResteasy4 {
-}
-----
-
diff --git a/core/adoc/modules/_overview/pages/about.adoc b/core/adoc/modules/_overview/pages/about.adoc
index b803d7ceba..89e5c3077d 100644
--- a/core/adoc/modules/_overview/pages/about.adoc
+++ b/core/adoc/modules/_overview/pages/about.adoc
@@ -23,7 +23,7 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "App\n[Software System]" {
   rectangle "==Apache Causeway Starter Parent\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
@@ -67,18 +67,18 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Mavendeps\n[Software System]" {
   rectangle "==Apache Causeway Maven Deps\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
   rectangle "==Apache Causeway Maven Deps - Webapp\n<size:10>[Container: packaging: pom]</size>" <<3>> as 3
 }
-2 .[#707070].> 3 : ""
+2 .[#707070,thickness=2].> 3 : ""
 @enduml
 ----
 .Projects/Modules (Mavendeps)
@@ -116,7 +116,7 @@ org.apache.causeway.core:causeway-core-runtimeservices:jar:<managed> +
 org.apache.causeway.core:causeway-core-security:jar:<managed> +
 org.apache.causeway.core:causeway-schema:jar:<managed> +
 org.apache.causeway.security:causeway-security-bypass:jar:<managed> +
-org.apache.causeway.viewer:causeway-viewer-restfulobjects-jaxrsresteasy4:jar:<managed> +
+org.apache.causeway.viewer:causeway-viewer-restfulobjects-jaxrsresteasy:jar:<managed> +
 org.apache.causeway.viewer:causeway-viewer-wicket-viewer:jar:<managed> +
 org.springframework.boot:spring-boot-starter-tomcat:jar:<managed> +
 org.springframework.boot:spring-boot-starter-web:jar:<managed> +
@@ -143,97 +143,97 @@ left to right direction
 skinparam rectangle<<11>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<12>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<13>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<14>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<15>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<16>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<17>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<18>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<19>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<7>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<8>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<9>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<20>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<10>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Testing\n[Software System]" {
   rectangle "==Apache Causeway Testing\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
@@ -256,24 +256,24 @@ package "Testing\n[Software System]" {
   rectangle "==Apache Causeway Tst - Unit Test Support (applib)\n<size:10>[Container: packaging: jar]</size>" <<20>> as 20
   rectangle "==Apache Causeway Tst - Unit Test Support (parent)\n<size:10>[Container: packaging: pom]</size>" <<19>> as 19
 }
-2 .[#707070].> 3 : ""
-2 .[#707070].> 5 : ""
-2 .[#707070].> 9 : ""
-2 .[#707070].> 11 : ""
-2 .[#707070].> 13 : ""
-2 .[#707070].> 15 : ""
-2 .[#707070].> 17 : ""
-2 .[#707070].> 19 : ""
-3 .[#707070].> 4 : ""
-5 .[#707070].> 6 : ""
-5 .[#707070].> 7 : ""
-5 .[#707070].> 8 : ""
-9 .[#707070].> 10 : ""
-11 .[#707070].> 12 : ""
-13 .[#707070].> 14 : ""
-15 .[#707070].> 16 : ""
-17 .[#707070].> 18 : ""
-19 .[#707070].> 20 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 5 : ""
+2 .[#707070,thickness=2].> 9 : ""
+2 .[#707070,thickness=2].> 11 : ""
+2 .[#707070,thickness=2].> 13 : ""
+2 .[#707070,thickness=2].> 15 : ""
+2 .[#707070,thickness=2].> 17 : ""
+2 .[#707070,thickness=2].> 19 : ""
+3 .[#707070,thickness=2].> 4 : ""
+5 .[#707070,thickness=2].> 6 : ""
+5 .[#707070,thickness=2].> 7 : ""
+5 .[#707070,thickness=2].> 8 : ""
+9 .[#707070,thickness=2].> 10 : ""
+11 .[#707070,thickness=2].> 12 : ""
+13 .[#707070,thickness=2].> 14 : ""
+15 .[#707070,thickness=2].> 16 : ""
+17 .[#707070,thickness=2].> 18 : ""
+19 .[#707070,thickness=2].> 20 : ""
 @enduml
 ----
 .Projects/Modules (Testing)
@@ -640,47 +640,47 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<7>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<8>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<9>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<10>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Examples\n[Software System]" {
   rectangle "==Demo - Domain\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
@@ -693,14 +693,14 @@ package "Examples\n[Software System]" {
   rectangle "==Demo - Wicket/JPA\n<size:10>[Container: packaging: jar]</size>" <<9>> as 9
   rectangle "==Demo - Wicket/JPA (with GraphQL)\n<size:10>[Container: packaging: jar]</size>" <<10>> as 10
 }
-2 .[#707070].> 3 : ""
-2 .[#707070].> 4 : ""
-2 .[#707070].> 5 : ""
-2 .[#707070].> 6 : ""
-2 .[#707070].> 7 : ""
-2 .[#707070].> 8 : ""
-2 .[#707070].> 9 : ""
-2 .[#707070].> 10 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 4 : ""
+2 .[#707070,thickness=2].> 5 : ""
+2 .[#707070,thickness=2].> 6 : ""
+2 .[#707070,thickness=2].> 7 : ""
+2 .[#707070,thickness=2].> 8 : ""
+2 .[#707070,thickness=2].> 9 : ""
+2 .[#707070,thickness=2].> 10 : ""
 @enduml
 ----
 .Projects/Modules (Examples)
@@ -729,7 +729,247 @@ Artifact: demo-domain
 Type: jar
 Directory: /examples/demo/domain
 ----
-|.Dependencies
+|.Components
+****
+demoapp.dom.AppConfiguration +
+demoapp.dom._infra.LibraryPreloadingService +
+demoapp.dom._infra.resources.AsciiDocConverterService +
+demoapp.dom._infra.resources.AsciiDocReaderService +
+demoapp.dom._infra.resources.AsciiDocValueSemanticsWithPreprocessing +
+demoapp.dom._infra.resources.MarkdownReaderService +
+demoapp.dom._infra.resources.MarkupReaderService +
+demoapp.dom._infra.resources.MarkupVariableResolverService +
+demoapp.dom._infra.resources.ResourceReaderService +
+demoapp.dom._infra.samples.EnumSamples +
+demoapp.dom._infra.samples.NameSamples +
+demoapp.dom._infra.samples.asciidoc.CausewayAsciiDocSamples +
+demoapp.dom._infra.samples.markdown.CausewayMarkdownSamples +
+demoapp.dom._infra.urlencoding.UrlEncodingServiceNaiveInMemory +
+demoapp.dom.domain._changes.EntityChangesSubscriberToCaptureChangesInMemory +
+demoapp.dom.domain._commands.ExposePersistedCommands$TableColumnOrderDefault +
+demoapp.dom.domain._interactions.ExecutionListenerToCaptureInteractionsInMemory +
+demoapp.dom.domain.actions.Action.commandPublishing.ActionCommandPublishingSeeding +
+demoapp.dom.domain.actions.Action.commandPublishing.jdo.ActionCommandPublishingJdoEntities +
+demoapp.dom.domain.actions.Action.commandPublishing.jpa.ActionCommandPublishingJpaEntities +
+demoapp.dom.domain.actions.Action.domainEvent.subscribers.ActionDomainEventControlService +
+demoapp.dom.domain.actions.Action.executionPublishing.ActionExecutionPublishingSeeding +
+demoapp.dom.domain.actions.Action.executionPublishing.jdo.ActionExecutionPublishingJdoEntities +
+demoapp.dom.domain.actions.Action.executionPublishing.jpa.ActionExecutionPublishingJpaEntities +
+demoapp.dom.domain.collections.Collection.domainEvent.subscribers.CollectionDomainEventControlService +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.DomainObjectEntityChangePublishingDisabledSeeding +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.jdo.DomainObjectEntityChangePublishingDisabledJdoEntities +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.jpa.DomainObjectEntityChangePublishingDisabledJpaEntities +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectEntityChangePublishingEnabledSeeding +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.jdo.DomainObjectEntityChangePublishingEnabledJdoEntities +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.jpa.DomainObjectEntityChangePublishingEnabledJpaEntities +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotatedSeeding +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.jdo.DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdoEntities +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.jpa.DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpaEntities +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenSeeding +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.jdo.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdoEntities +
+demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.jpa.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpaEntities +
+demoapp.dom.domain.objects.DomainObject.nature.viewmodels.jaxbrefentity.JaxbRefSeeding +
+demoapp.dom.domain.objects.DomainObject.nature.viewmodels.jaxbrefentity.jdo.JaxbRefJdoEntities +
+demoapp.dom.domain.objects.DomainObject.nature.viewmodels.jaxbrefentity.jpa.JaxbRefJpaEntities +
+demoapp.dom.domain.objects.other.embedded.jdo.ComplexNumberJdoValueSemantics +
+demoapp.dom.domain.objects.other.embedded.jdo.NumberConstantJdoRepository +
+demoapp.dom.domain.objects.other.embedded.jpa.ComplexNumberJpaValueSemantics +
+demoapp.dom.domain.objects.other.embedded.jpa.NumberConstantJpaRepository +
+demoapp.dom.domain.objects.other.embedded.persistence.NumberConstantSeeding +
+demoapp.dom.domain.objects.other.embedded.samples.ComplexNumberSamples +
+demoapp.dom.domain.properties.Property.commandPublishing.PropertyCommandPublishingSeeding +
+demoapp.dom.domain.properties.Property.commandPublishing.jdo.PropertyCommandPublishingJdoEntities +
+demoapp.dom.domain.properties.Property.commandPublishing.jpa.PropertyCommandPublishingJpaEntities +
+demoapp.dom.domain.properties.Property.domainEvent.subscribers.PropertyDomainEventControlService +
+demoapp.dom.domain.properties.Property.executionPublishing.PropertyExecutionPublishingSeeding +
+demoapp.dom.domain.properties.Property.executionPublishing.jdo.PropertyExecutionPublishingJdoEntities +
+demoapp.dom.domain.properties.Property.executionPublishing.jpa.PropertyExecutionPublishingJpaEntities +
+demoapp.dom.domain.properties.Property.projecting.jdo.PropertyProjectingChildJdoEntities +
+demoapp.dom.domain.properties.Property.projecting.jpa.PropertyProjectingChildJpaEntities +
+demoapp.dom.domain.properties.Property.projecting.persistence.PropertyProjectingChildSeeding +
+demoapp.dom.domain.properties.PropertyLayout.navigable.FileTreeNodeService +
+demoapp.dom.domain.properties.PropertyLayout.repainting.PdfJsViewerAdvisorFallback +
+demoapp.dom.featured.customui.geocoding.GeoapifyClient +
+demoapp.dom.services.core.errorreportingservice.ErrorReportingServiceDemoImplementation +
+demoapp.dom.services.core.eventbusservice.EventLogEntryJdoRepository +
+demoapp.dom.services.core.eventbusservice.EventLogEntryJpaRepository +
+demoapp.dom.services.core.eventbusservice.EventSubscriberDemoImplementation +
+demoapp.dom.services.core.wrapperFactory.WrapperFactorySeeding +
+demoapp.dom.services.core.wrapperFactory.jdo.WrapperFactoryJdoEntities +
+demoapp.dom.services.core.wrapperFactory.jpa.WrapperFactoryJpaEntities +
+demoapp.dom.services.extensions.secman.apptenancy.ApplicationTenancyEvaluatorForDemo +
+demoapp.dom.services.extensions.secman.apptenancy.jdo.TenantedJdoEntities +
+demoapp.dom.services.extensions.secman.apptenancy.jpa.TenantedJpaEntities +
+demoapp.dom.services.extensions.secman.apptenancy.persistence.TenantedSeeding +
+demoapp.dom.services.extensions.secman.appuser.seed.AppUserSeeding +
+demoapp.dom.types.causeway.blobs.jdo.CausewayBlobJdoEntities +
+demoapp.dom.types.causeway.blobs.jpa.CausewayBlobJpaEntities +
+demoapp.dom.types.causeway.blobs.persistence.CausewayBlobSeeding +
+demoapp.dom.types.causeway.blobs.samples.CausewayBlobsSamples +
+demoapp.dom.types.causeway.clobs.jdo.CausewayClobJdoEntities +
+demoapp.dom.types.causeway.clobs.jpa.CausewayClobJpaEntities +
+demoapp.dom.types.causeway.clobs.persistence.CausewayClobSeeding +
+demoapp.dom.types.causeway.clobs.samples.CausewayClobsSamples +
+demoapp.dom.types.causeway.localresourcepaths.jdo.CausewayLocalResourcePathJdoEntities +
+demoapp.dom.types.causeway.localresourcepaths.jpa.CausewayLocalResourcePathJpaEntities +
+demoapp.dom.types.causeway.localresourcepaths.persistence.CausewayLocalResourcePathSeeding +
+demoapp.dom.types.causeway.localresourcepaths.samples.CausewayLocalResourcePathsSamples +
+demoapp.dom.types.causeway.markups.jdo.CausewayMarkupJdoEntities +
+demoapp.dom.types.causeway.markups.jpa.CausewayMarkupJpaEntities +
+demoapp.dom.types.causeway.markups.persistence.CausewayMarkupSeeding +
+demoapp.dom.types.causeway.markups.samples.CausewayMarkupSamples +
+demoapp.dom.types.causeway.passwords.jdo.CausewayPasswordJdoEntities +
+demoapp.dom.types.causeway.passwords.jpa.CausewayPasswordJpaEntities +
+demoapp.dom.types.causeway.passwords.persistence.CausewayPasswordSeeding +
+demoapp.dom.types.causeway.passwords.samples.CausewayPasswordsSamples +
+demoapp.dom.types.causewayext.cal.jdo.CausewayCalendarEventEntities +
+demoapp.dom.types.causewayext.cal.jpa.CausewayCalendarEventEntities +
+demoapp.dom.types.causewayext.cal.persistence.CausewayCalendarEventSeeding +
+demoapp.dom.types.causewayext.cal.samples.CausewayCalendarEventSamples +
+demoapp.dom.types.causewayval.asciidocs.jdo.CausewayAsciiDocJdoEntities +
+demoapp.dom.types.causewayval.asciidocs.jpa.CausewayAsciiDocJpaEntities +
+demoapp.dom.types.causewayval.asciidocs.persistence.CausewayAsciiDocSeeding +
+demoapp.dom.types.causewayval.markdowns.jdo.CausewayMarkdownJdoEntities +
+demoapp.dom.types.causewayval.markdowns.jpa.CausewayMarkdownJpaEntities +
+demoapp.dom.types.causewayval.markdowns.persistence.CausewayMarkdownSeeding +
+demoapp.dom.types.causewayval.vegas.jdo.CausewayVegaJdoEntities +
+demoapp.dom.types.causewayval.vegas.jpa.CausewayVegaJpaEntities +
+demoapp.dom.types.causewayval.vegas.persistence.CausewayVegaSeeding +
+demoapp.dom.types.causewayval.vegas.samples.CausewayVegaSamples +
+demoapp.dom.types.javaawt.images.jdo.JavaAwtBufferedImageJdoEntities +
+demoapp.dom.types.javaawt.images.jpa.JavaAwtBufferedImageJpaEntities +
+demoapp.dom.types.javaawt.images.persistence.JavaAwtBufferedImageSeeding +
+demoapp.dom.types.javaawt.images.samples.JavaAwtBufferedImageService +
+demoapp.dom.types.javaawt.images.samples.JavaAwtBufferedImagesSamples +
+demoapp.dom.types.javalang.booleans.jdo.WrapperBooleanJdoEntities +
+demoapp.dom.types.javalang.booleans.jpa.WrapperBooleanJpaEntities +
+demoapp.dom.types.javalang.booleans.persistence.WrapperBooleanSeeding +
+demoapp.dom.types.javalang.booleans.samples.WrapperBooleanSamples +
+demoapp.dom.types.javalang.bytes.jdo.WrapperByteJdoEntities +
+demoapp.dom.types.javalang.bytes.jpa.WrapperByteJpaEntities +
+demoapp.dom.types.javalang.bytes.persistence.WrapperByteSeeding +
+demoapp.dom.types.javalang.bytes.samples.WrapperByteSamples +
+demoapp.dom.types.javalang.characters.jdo.WrapperCharacterJdoEntities +
+demoapp.dom.types.javalang.characters.jpa.WrapperCharacterJpaEntities +
+demoapp.dom.types.javalang.characters.persistence.WrapperCharacterSeeding +
+demoapp.dom.types.javalang.characters.samples.WrapperCharacterSamples +
+demoapp.dom.types.javalang.doubles.jdo.WrapperDoubleJdoEntities +
+demoapp.dom.types.javalang.doubles.jpa.WrapperDoubleJpaEntities +
+demoapp.dom.types.javalang.doubles.persistence.WrapperDoubleSeeding +
+demoapp.dom.types.javalang.doubles.samples.WrapperDoubleSamples +
+demoapp.dom.types.javalang.enums.jdo.JavaLangEnumJdoEntities +
+demoapp.dom.types.javalang.enums.jpa.JavaLangEnumJpaEntities +
+demoapp.dom.types.javalang.enums.persistence.JavaLangEnumSeeding +
+demoapp.dom.types.javalang.floats.jdo.WrapperFloatJdoEntities +
+demoapp.dom.types.javalang.floats.jpa.WrapperFloatJpaEntities +
+demoapp.dom.types.javalang.floats.persistence.WrapperFloatSeeding +
+demoapp.dom.types.javalang.floats.samples.WrapperFloatSamples +
+demoapp.dom.types.javalang.integers.jdo.WrapperIntegerJdoEntities +
+demoapp.dom.types.javalang.integers.jpa.WrapperIntegerJpaEntities +
+demoapp.dom.types.javalang.integers.persistence.WrapperIntegerSeeding +
+demoapp.dom.types.javalang.integers.samples.WrapperIntegerSamples +
+demoapp.dom.types.javalang.longs.jdo.WrapperLongJdoEntities +
+demoapp.dom.types.javalang.longs.jpa.WrapperLongJpaEntities +
+demoapp.dom.types.javalang.longs.persistence.WrapperLongSeeding +
+demoapp.dom.types.javalang.longs.samples.WrapperLongSamples +
+demoapp.dom.types.javalang.shorts.jdo.WrapperShortJdoEntities +
+demoapp.dom.types.javalang.shorts.jpa.WrapperShortJpaEntities +
+demoapp.dom.types.javalang.shorts.persistence.WrapperShortSeeding +
+demoapp.dom.types.javalang.shorts.samples.WrapperShortSamples +
+demoapp.dom.types.javalang.strings.jdo.JavaLangStringJdoEntities +
+demoapp.dom.types.javalang.strings.jpa.JavaLangStringJpaEntities +
+demoapp.dom.types.javalang.strings.persistence.JavaLangStringSeeding +
+demoapp.dom.types.javamath.bigdecimals.jdo.JavaMathBigDecimalJdoEntities +
+demoapp.dom.types.javamath.bigdecimals.jpa.JavaMathBigDecimalJpaEntities +
+demoapp.dom.types.javamath.bigdecimals.persistence.JavaMathBigDecimalSeeding +
+demoapp.dom.types.javamath.bigdecimals.samples.JavaMathBigDecimalSamples +
+demoapp.dom.types.javamath.bigintegers.jdo.JavaMathBigIntegerJdoEntities +
+demoapp.dom.types.javamath.bigintegers.jpa.JavaMathBigIntegerJpaEntities +
+demoapp.dom.types.javamath.bigintegers.persistence.JavaMathBigIntegerSeeding +
+demoapp.dom.types.javamath.bigintegers.samples.JavaMathBigIntegerSamples +
+demoapp.dom.types.javanet.urls.jdo.JavaNetUrlJdoEntities +
+demoapp.dom.types.javanet.urls.jpa.JavaNetUrlJpaEntities +
+demoapp.dom.types.javanet.urls.persistence.JavaNetUrlSeeding +
+demoapp.dom.types.javanet.urls.samples.JavaNetUrlSamples +
+demoapp.dom.types.javasql.javasqldate.jdo.JavaSqlDateJdoEntities +
+demoapp.dom.types.javasql.javasqldate.jpa.JavaSqlDateJpaEntities +
+demoapp.dom.types.javasql.javasqldate.persistence.JavaSqlDateSeeding +
+demoapp.dom.types.javasql.javasqldate.samples.JavaSqlDateSamples +
+demoapp.dom.types.javasql.javasqltimestamp.jdo.JavaSqlTimestampJdoEntities +
+demoapp.dom.types.javasql.javasqltimestamp.jpa.JavaSqlTimestampJpaEntities +
+demoapp.dom.types.javasql.javasqltimestamp.persistence.JavaSqlTimestampSeeding +
+demoapp.dom.types.javasql.javasqltimestamp.samples.JavaSqlTimestampSamples +
+demoapp.dom.types.javatime.javatimelocaldate.jdo.JavaTimeLocalDateJdoEntities +
+demoapp.dom.types.javatime.javatimelocaldate.jpa.JavaTimeLocalDateJpaEntities +
+demoapp.dom.types.javatime.javatimelocaldate.persistence.JavaTimeLocalDateSeeding +
+demoapp.dom.types.javatime.javatimelocaldate.samples.JavaTimeLocalDateSamples +
+demoapp.dom.types.javatime.javatimelocaldatetime.jdo.JavaTimeLocalDateTimeJdoEntities +
+demoapp.dom.types.javatime.javatimelocaldatetime.jpa.JavaTimeLocalDateTimeJpaEntities +
+demoapp.dom.types.javatime.javatimelocaldatetime.persistence.JavaTimeLocalDateTimeSeeding +
+demoapp.dom.types.javatime.javatimelocaldatetime.samples.JavaTimeLocalDateTimeSamples +
+demoapp.dom.types.javatime.javatimelocaltime.jdo.JavaTimeLocalTimeJdoEntities +
+demoapp.dom.types.javatime.javatimelocaltime.jpa.JavaTimeLocalTimeJpaEntities +
+demoapp.dom.types.javatime.javatimelocaltime.persistence.JavaTimeLocalTimeSeeding +
+demoapp.dom.types.javatime.javatimelocaltime.samples.JavaTimeLocalTimeSamples +
+demoapp.dom.types.javatime.javatimeoffsetdatetime.jdo.JavaTimeOffsetDateTimeJdoEntities +
+demoapp.dom.types.javatime.javatimeoffsetdatetime.jpa.JavaTimeOffsetDateTimeJpaEntities +
+demoapp.dom.types.javatime.javatimeoffsetdatetime.persistence.JavaTimeOffsetDateTimeSeeding +
+demoapp.dom.types.javatime.javatimeoffsetdatetime.samples.JavaTimeOffsetDateTimeSamples +
+demoapp.dom.types.javatime.javatimeoffsettime.jdo.JavaTimeOffsetTimeJdoEntities +
+demoapp.dom.types.javatime.javatimeoffsettime.jpa.JavaTimeOffsetTimeJpaEntities +
+demoapp.dom.types.javatime.javatimeoffsettime.persistence.JavaTimeOffsetTimeSeeding +
+demoapp.dom.types.javatime.javatimeoffsettime.samples.JavaTimeOffsetTimeSamples +
+demoapp.dom.types.javatime.javatimezoneddatetime.jdo.JavaTimeZonedDateTimeJdoEntities +
+demoapp.dom.types.javatime.javatimezoneddatetime.jpa.JavaTimeZonedDateTimeJpaEntities +
+demoapp.dom.types.javatime.javatimezoneddatetime.persistence.JavaTimeZonedDateTimeSeeding +
+demoapp.dom.types.javatime.javatimezoneddatetime.samples.JavaTimeZonedDateTimeSamples +
+demoapp.dom.types.javautil.javautildate.jdo.JavaUtilDateJdoEntities +
+demoapp.dom.types.javautil.javautildate.jpa.JavaUtilDateJpaEntities +
+demoapp.dom.types.javautil.javautildate.persistence.JavaUtilDateSeeding +
+demoapp.dom.types.javautil.javautildate.samples.JavaUtilDateSamples +
+demoapp.dom.types.javautil.uuids.jdo.JavaUtilUuidJdoEntities +
+demoapp.dom.types.javautil.uuids.jpa.JavaUtilUuidJpaEntities +
+demoapp.dom.types.javautil.uuids.persistence.JavaUtilUuidSeeding +
+demoapp.dom.types.javautil.uuids.samples.JavaUtilUuidSamples +
+demoapp.dom.types.jodatime.jodadatetime.jdo.JodaDateTimeJdoEntities +
+demoapp.dom.types.jodatime.jodadatetime.persistence.JodaDateTimeJdoSeeding +
+demoapp.dom.types.jodatime.jodadatetime.samples.JodaDateTimeSamples +
+demoapp.dom.types.jodatime.jodalocaldate.jdo.JodaLocalDateJdoEntities +
+demoapp.dom.types.jodatime.jodalocaldate.persistence.JodaLocalDateJdoSeeding +
+demoapp.dom.types.jodatime.jodalocaldate.samples.JodaLocalDateSamples +
+demoapp.dom.types.jodatime.jodalocaldatetime.jdo.JodaLocalDateTimeJdoEntities +
+demoapp.dom.types.jodatime.jodalocaldatetime.persistence.JodaLocalDateTimeSeeding +
+demoapp.dom.types.jodatime.jodalocaldatetime.samples.JodaLocalDateTimeSamples +
+demoapp.dom.types.jodatime.jodalocaltime.jdo.JodaLocalTimeJdoEntities +
+demoapp.dom.types.jodatime.jodalocaltime.persistence.JodaLocalTimeSeeding +
+demoapp.dom.types.jodatime.jodalocaltime.samples.JodaLocalTimeSamples +
+demoapp.dom.types.primitive.booleans.jdo.PrimitiveBooleanJdoEntities +
+demoapp.dom.types.primitive.booleans.jpa.PrimitiveBooleanJpaEntities +
+demoapp.dom.types.primitive.booleans.persistence.PrimitiveBooleanSeeding +
+demoapp.dom.types.primitive.bytes.jdo.PrimitiveByteJdoEntities +
+demoapp.dom.types.primitive.bytes.jpa.PrimitiveByteJpaEntities +
+demoapp.dom.types.primitive.bytes.persistence.PrimitiveByteSeeding +
+demoapp.dom.types.primitive.chars.jdo.PrimitiveCharJdoEntities +
+demoapp.dom.types.primitive.chars.jpa.PrimitiveCharJpaEntities +
+demoapp.dom.types.primitive.chars.persistence.PrimitiveCharSeeding +
+demoapp.dom.types.primitive.doubles.jdo.PrimitiveDoubleJdoEntities +
+demoapp.dom.types.primitive.doubles.jpa.PrimitiveDoubleJpaEntities +
+demoapp.dom.types.primitive.doubles.persistence.PrimitiveDoubleSeeding +
+demoapp.dom.types.primitive.floats.jdo.PrimitiveFloatJdoEntities +
+demoapp.dom.types.primitive.floats.jpa.PrimitiveFloatJpaEntities +
+demoapp.dom.types.primitive.floats.persistence.PrimitiveFloatSeeding +
+demoapp.dom.types.primitive.ints.jdo.PrimitiveIntJdoEntities +
+demoapp.dom.types.primitive.ints.jpa.PrimitiveIntJpaEntities +
+demoapp.dom.types.primitive.ints.persistence.PrimitiveIntSeeding +
+demoapp.dom.types.primitive.longs.jdo.PrimitiveLongJdoEntities +
+demoapp.dom.types.primitive.longs.jpa.PrimitiveLongJpaEntities +
+demoapp.dom.types.primitive.longs.persistence.PrimitiveLongSeeding +
+demoapp.dom.types.primitive.shorts.jdo.PrimitiveShortJdoEntities +
+demoapp.dom.types.primitive.shorts.jpa.PrimitiveShortJpaEntities +
+demoapp.dom.types.primitive.shorts.persistence.PrimitiveShortSeeding +
+****
+
+.Dependencies
 ****
 com.h2database:h2:jar:<managed> +
 org.apache.causeway.extensions:causeway-extensions-audittrail-persistence-jdo:jar:<managed> +
@@ -801,7 +1041,7 @@ Directory: /examples/demo/vaadin
 ----
 |.Dependencies
 ****
-org.apache.causeway.examples.apps:demo-web:jar:${project.version} +
+org.apache.causeway.examples.apps:demo-web:jar:<managed> +
 org.apache.causeway.extensions:causeway-extensions-sse-wicket:jar:<managed> +
 org.apache.causeway.incubator.viewer:causeway-viewer-vaadin-viewer:jar:${project.version} +
 org.apache.causeway.valuetypes:causeway-valuetypes-asciidoc-ui-vaa:jar:<managed> +
@@ -924,22 +1164,22 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Root\n[Software System]" {
   rectangle "==Apache Causeway\n<size:10>[Container: packaging: pom]</size>" <<4>> as 4
@@ -947,8 +1187,8 @@ package "Root\n[Software System]" {
   rectangle "==Apache Causeway - Antora\n<size:10>[Container: packaging: pom]</size>" <<3>> as 3
   rectangle "==Apache Causeway Supplemental - Legal Info\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
 }
-2 .[#707070].> 4 : ""
-2 .[#707070].> 3 : ""
+2 .[#707070,thickness=2].> 4 : ""
+2 .[#707070,thickness=2].> 3 : ""
 @enduml
 ----
 .Projects/Modules (Root)
@@ -1024,7 +1264,7 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Commons\n[Software System]" {
   rectangle "==Apache Causeway Commons\n<size:10>[Container: packaging: jar]</size>" <<2>> as 2
@@ -1050,7 +1290,6 @@ Directory: /commons
 ****
 com.fasterxml.jackson.core:jackson-databind:jar:<managed> +
 com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:<managed> +
-com.google.code.findbugs:jsr305:jar:<managed> +
 org.apache.causeway.core:causeway-core-privileged:jar:<managed> +
 org.apache.causeway.core:causeway-jdk-supplemental:pom:<managed> +
 org.hamcrest:hamcrest-library:jar:<managed> +
@@ -1093,116 +1332,109 @@ left to right direction
 skinparam rectangle<<11>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<12>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<13>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<14>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<15>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<16>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
-}
-skinparam rectangle<<17>> {
-  BackgroundColor #438dd5
-  FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<7>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<8>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<9>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<10>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Core\n[Software System]" {
-  rectangle "==Apache Causeway - JDK Supplemental\n<size:10>[Container: packaging: pom]</size>" <<16>> as 16
+  rectangle "==Apache Causeway - JDK Supplemental\n<size:10>[Container: packaging: pom]</size>" <<15>> as 15
   rectangle "==Apache Causeway Api - AppLib\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
-  rectangle "==Apache Causeway Api - Schemas\n<size:10>[Container: packaging: jar]</size>" <<17>> as 17
+  rectangle "==Apache Causeway Api - Schemas\n<size:10>[Container: packaging: jar]</size>" <<16>> as 16
   rectangle "==Apache Causeway Core\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
   rectangle "==Apache Causeway Core - Code Gen (ByteBuddy)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
   rectangle "==Apache Causeway Core - Configuration\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
   rectangle "==Apache Causeway Core - Interaction\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
   rectangle "==Apache Causeway Core - Internal Test Support\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
-  rectangle "==Apache Causeway Core - Internal Test Support (Vintage)\n<size:10>[Container: packaging: jar]</size>" <<8>> as 8
-  rectangle "==Apache Causeway Core - MetaModel\n<size:10>[Container: packaging: jar]</size>" <<9>> as 9
-  rectangle "==Apache Causeway Core - Privileged\n<size:10>[Container: packaging: jar]</size>" <<10>> as 10
-  rectangle "==Apache Causeway Core - Runtime\n<size:10>[Container: packaging: jar]</size>" <<11>> as 11
-  rectangle "==Apache Causeway Core - Runtime Services\n<size:10>[Container: packaging: jar]</size>" <<12>> as 12
-  rectangle "==Apache Causeway Core - Security\n<size:10>[Container: packaging: jar]</size>" <<13>> as 13
-  rectangle "==Apache Causeway Core - Transaction\n<size:10>[Container: packaging: jar]</size>" <<14>> as 14
-  rectangle "==Apache Causeway Core - WebApp\n<size:10>[Container: packaging: jar]</size>" <<15>> as 15
-}
-2 .[#707070].> 16 : ""
-2 .[#707070].> 3 : ""
-2 .[#707070].> 17 : ""
-2 .[#707070].> 4 : ""
-2 .[#707070].> 5 : ""
-2 .[#707070].> 6 : ""
-2 .[#707070].> 7 : ""
-2 .[#707070].> 8 : ""
-2 .[#707070].> 9 : ""
-2 .[#707070].> 10 : ""
-2 .[#707070].> 11 : ""
-2 .[#707070].> 12 : ""
-2 .[#707070].> 13 : ""
-2 .[#707070].> 14 : ""
-2 .[#707070].> 15 : ""
+  rectangle "==Apache Causeway Core - MetaModel\n<size:10>[Container: packaging: jar]</size>" <<8>> as 8
+  rectangle "==Apache Causeway Core - Privileged\n<size:10>[Container: packaging: jar]</size>" <<9>> as 9
+  rectangle "==Apache Causeway Core - Runtime\n<size:10>[Container: packaging: jar]</size>" <<10>> as 10
+  rectangle "==Apache Causeway Core - Runtime Services\n<size:10>[Container: packaging: jar]</size>" <<11>> as 11
+  rectangle "==Apache Causeway Core - Security\n<size:10>[Container: packaging: jar]</size>" <<12>> as 12
+  rectangle "==Apache Causeway Core - Transaction\n<size:10>[Container: packaging: jar]</size>" <<13>> as 13
+  rectangle "==Apache Causeway Core - WebApp\n<size:10>[Container: packaging: jar]</size>" <<14>> as 14
+}
+2 .[#707070,thickness=2].> 15 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 16 : ""
+2 .[#707070,thickness=2].> 4 : ""
+2 .[#707070,thickness=2].> 5 : ""
+2 .[#707070,thickness=2].> 6 : ""
+2 .[#707070,thickness=2].> 7 : ""
+2 .[#707070,thickness=2].> 8 : ""
+2 .[#707070,thickness=2].> 9 : ""
+2 .[#707070,thickness=2].> 10 : ""
+2 .[#707070,thickness=2].> 11 : ""
+2 .[#707070,thickness=2].> 12 : ""
+2 .[#707070,thickness=2].> 13 : ""
+2 .[#707070,thickness=2].> 14 : ""
 @enduml
 ----
 .Projects/Modules (Core)
@@ -1222,7 +1454,6 @@ Directory: /core
 
 .Dependencies
 ****
-de.agilecoders.wicket:wicket-bootstrap-extensions:jar:<managed> +
 org.projectlombok:lombok:jar:<managed> +
 ****
 
@@ -1268,7 +1499,7 @@ org.apache.causeway.core:causeway-schema:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:applib:index/CausewayModuleApplib.adoc[CausewayModuleApplib], xref:refguide:applib:index/CausewayModuleApplibChangeAndExecutionLoggers.adoc[CausewayModuleApplibChangeAndExecutionLoggers], xref:refguide:applib:index/CausewayModuleApplibMixins.adoc[CausewayModuleApplibMixins], xref:refguide:applib:index/Identifier.adoc[Identifier], xref:refguide:applib:index/ViewModel.adoc[ViewModel], xref:refguide:applib:index/annotation/Action.adoc[Action], xref:refguide:applib:index/annota [...]
+xref:refguide:applib:index/CausewayModuleApplib.adoc[CausewayModuleApplib], xref:refguide:applib:index/CausewayModuleApplibChangeAndExecutionLoggers.adoc[CausewayModuleApplibChangeAndExecutionLoggers], xref:refguide:applib:index/CausewayModuleApplibMixins.adoc[CausewayModuleApplibMixins], xref:refguide:applib:index/Identifier.adoc[Identifier], xref:refguide:applib:index/ViewModel.adoc[ViewModel], xref:refguide:applib:index/annotation/Action.adoc[Action], xref:refguide:applib:index/annota [...]
 ****
 
 |Apache Causeway Core - Code Gen (ByteBuddy)
@@ -1323,6 +1554,7 @@ org.apache.causeway.commons:causeway-commons:jar:<managed> +
 org.apache.causeway.core:causeway-applib:jar:<managed> +
 org.apache.causeway.core:causeway-core-internaltestsupport:jar:<managed> +
 org.hibernate:hibernate-validator:jar:<managed> +
+org.projectlombok:lombok:jar:<managed> +
 org.springframework.boot:spring-boot-configuration-processor:jar:<managed> +
 ****
 
@@ -1379,26 +1611,6 @@ org.slf4j:slf4j-api:jar:<managed> +
 org.springframework.boot:spring-boot-starter-test:jar:<managed> +
 ****
 
-|Apache Causeway Core - Internal Test Support (Vintage)
-[source,yaml]
-----
-Group: org.apache.causeway.core
-Artifact: causeway-core-internaltestvintage
-Type: jar
-Directory: /core/internaltestvintage
-----
-|Legacy support for writing unit tests in JUnit 4 with JMocj and AssertJ. DEPRECATED!
-
-.Dependencies
-****
-org.apache.causeway.core:causeway-core-internaltestsupport:jar:<managed> +
-org.assertj:assertj-core:jar:<managed> +
-org.jmock:jmock:jar:<managed> +
-org.jmock:jmock-junit4:jar:<managed> +
-org.junit.vintage:junit-vintage-engine:jar:<managed> +
-org.picocontainer:picocontainer:jar:<managed> +
-****
-
 |Apache Causeway Core - MetaModel
 [source,yaml]
 ----
@@ -1420,8 +1632,8 @@ o.a.i.core.metamodel.services.classsubstitutor.ClassSubstitutorRegistry +
 o.a.i.core.metamodel.services.events.MetamodelEventService +
 o.a.i.core.metamodel.services.exceprecog.ExceptionRecognizerForRecoverableException +
 o.a.i.core.metamodel.services.grid.GridLoaderServiceDefault +
-o.a.i.core.metamodel.services.grid.GridReaderUsingJaxb +
 o.a.i.core.metamodel.services.grid.GridServiceDefault +
+o.a.i.core.metamodel.services.grid.bootstrap.GridMarshallerServiceBootstrap +
 o.a.i.core.metamodel.services.grid.bootstrap.GridSystemServiceBootstrap +
 o.a.i.core.metamodel.services.idstringifier.IdStringifierLookupService +
 o.a.i.core.metamodel.services.layout.LayoutServiceDefault +
@@ -1475,7 +1687,7 @@ o.a.i.core.metamodel.valuetypes.ValueSemanticsResolverDefault +
 
 .Dependencies
 ****
-io.swagger:swagger-core:jar:<managed> +
+io.swagger.core.v3:swagger-core:jar:<managed> +
 org.apache.causeway.core:causeway-applib:jar:<managed> +
 org.apache.causeway.core:causeway-core-config:jar:<managed> +
 org.apache.causeway.core:causeway-core-internaltestsupport:jar:<managed> +
@@ -1552,7 +1764,8 @@ o.a.i.core.runtimeservices.jaxb.JaxbServiceDefault +
 o.a.i.core.runtimeservices.locale.LanguageProviderDefault +
 o.a.i.core.runtimeservices.locale.LocaleChoiceProviderDefault +
 o.a.i.core.runtimeservices.menubars.MenuBarsLoaderServiceDefault +
-o.a.i.core.runtimeservices.menubars.bootstrap.MenuBarsServiceBS +
+o.a.i.core.runtimeservices.menubars.bootstrap.MenuBarsMarshallerServiceBootstrap +
+o.a.i.core.runtimeservices.menubars.bootstrap.MenuBarsServiceBootstrap +
 o.a.i.core.runtimeservices.message.MessageServiceDefault +
 o.a.i.core.runtimeservices.placeholder.PlaceholderRenderServiceDefault +
 o.a.i.core.runtimeservices.publish.CommandPublisherDefault +
@@ -1760,7 +1973,7 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Persistence\n[Software System]" {
   rectangle "==Apache Causeway Persistence - Commons\n<size:10>[Container: packaging: jar]</size>" <<2>> as 2
@@ -1822,37 +2035,37 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<7>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<8>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "JDO\n[Software System]" {
   rectangle "==Apache Causeway Persistence - JDO\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
@@ -1863,12 +2076,12 @@ package "JDO\n[Software System]" {
   rectangle "==Apache Causeway Persistence - JDO (provider)\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
   rectangle "==Apache Causeway Persistence - JDO Provider (DataNucleus)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
 }
-2 .[#707070].> 8 : ""
-2 .[#707070].> 3 : ""
-2 .[#707070].> 5 : ""
-2 .[#707070].> 6 : ""
-2 .[#707070].> 7 : ""
-2 .[#707070].> 4 : ""
+2 .[#707070,thickness=2].> 8 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 5 : ""
+2 .[#707070,thickness=2].> 6 : ""
+2 .[#707070,thickness=2].> 7 : ""
+2 .[#707070,thickness=2].> 4 : ""
 @enduml
 ----
 .Projects/Modules (JDO)
@@ -2001,7 +2214,7 @@ o.a.i.persistence.jdo.metamodel.JdoProgrammingModel +
 
 .Dependencies
 ****
-org.apache.causeway.core:causeway-core-internaltestvintage:jar:<managed> +
+org.apache.causeway.core:causeway-core-internaltestsupport:jar:<managed> +
 org.apache.causeway.core:causeway-core-runtime:jar:<managed> +
 org.apache.causeway.persistence:causeway-persistence-jdo-applib:jar:<managed> +
 org.apache.causeway.persistence:causeway-persistence-jdo-provider:jar:<managed> +
@@ -2021,6 +2234,7 @@ Directory: /persistence/jdo/provider
 ****
 org.apache.causeway.core:causeway-core-metamodel:jar:<managed> +
 org.apache.causeway.persistence:causeway-persistence-jdo-applib:jar:<managed> +
+org.datanucleus:datanucleus-rdbms:jar:<managed> +
 ****
 
 |Apache Causeway Persistence - JDO (Spring)
@@ -2075,27 +2289,27 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "JPA\n[Software System]" {
   rectangle "==Apache Causeway Persistence - JPA\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
@@ -2104,10 +2318,10 @@ package "JPA\n[Software System]" {
   rectangle "==Apache Causeway Persistence - JPA (metamodel)\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
   rectangle "==Apache Causeway Persistence - JPA EclipseLink\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
 }
-2 .[#707070].> 3 : ""
-2 .[#707070].> 5 : ""
-2 .[#707070].> 6 : ""
-2 .[#707070].> 4 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 5 : ""
+2 .[#707070,thickness=2].> 6 : ""
+2 .[#707070,thickness=2].> 4 : ""
 @enduml
 ----
 .Projects/Modules (JPA)
@@ -2246,7 +2460,7 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Bypass\n[Software System]" {
   rectangle "==Apache Causeway Security - Bypass\n<size:10>[Container: packaging: jar]</size>" <<2>> as 2
@@ -2303,7 +2517,7 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Keycloak\n[Software System]" {
   rectangle "==Apache Causeway Security - Keycloak\n<size:10>[Container: packaging: jar]</size>" <<2>> as 2
@@ -2369,7 +2583,7 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Shiro\n[Software System]" {
   rectangle "==Apache Causeway Security - Shiro\n<size:10>[Container: packaging: jar]</size>" <<2>> as 2
@@ -2400,7 +2614,7 @@ o.a.i.security.shiro.webmodule.WebModuleShiro +
 
 .Dependencies
 ****
-org.apache.causeway.core:causeway-core-internaltestvintage:jar:<managed> +
+org.apache.causeway.core:causeway-core-internaltestsupport:jar:<managed> +
 org.apache.causeway.core:causeway-core-runtime:jar:<managed> +
 org.apache.causeway.core:causeway-core-runtimeservices:jar:<managed> +
 org.apache.causeway.core:causeway-core-webapp:jar:<managed> +
@@ -2434,7 +2648,7 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Spring\n[Software System]" {
   rectangle "==Apache Causeway Security - Spring\n<size:10>[Container: packaging: jar]</size>" <<2>> as 2
@@ -2501,27 +2715,27 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Common\n[Software System]" {
   rectangle "==Apache Causeway Commons - Prism\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
@@ -2530,10 +2744,10 @@ package "Common\n[Software System]" {
   rectangle "==Apache Causeway Viewer - Commons Model\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
   rectangle "==Apache Causeway Viewer - Commons Services\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
 }
-2 .[#707070].> 5 : ""
-2 .[#707070].> 3 : ""
-2 .[#707070].> 4 : ""
-2 .[#707070].> 6 : ""
+2 .[#707070,thickness=2].> 5 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 4 : ""
+2 .[#707070,thickness=2].> 6 : ""
 @enduml
 ----
 .Projects/Modules (Common)
@@ -2596,7 +2810,7 @@ Directory: /viewers/commons/prism
 
 .Dependencies
 ****
-org.webjars.bowergithub.prismjs:prism:jar:1.28.0 +
+org.webjars.bowergithub.prismjs:prism:jar:1.29.0 +
 ****
 
 |Apache Causeway Viewer - Commons Services
@@ -2642,53 +2856,53 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<7>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<8>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Restful Objects\n[Software System]" {
   rectangle "==Apache Causeway Viewer - RO\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
   rectangle "==Apache Causeway Viewer - RO (AppLib)\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
   rectangle "==Apache Causeway Viewer - RO (Client)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
-  rectangle "==Apache Causeway Viewer - RO (JAX-RS Resteasy v4)\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
+  rectangle "==Apache Causeway Viewer - RO (JAX-RS Resteasy)\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
   rectangle "==Apache Causeway Viewer - RO (Rendering)\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
   rectangle "==Apache Causeway Viewer - RO (Testing)\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
   rectangle "==Apache Causeway Viewer - RO (Viewer)\n<size:10>[Container: packaging: jar]</size>" <<8>> as 8
 }
-2 .[#707070].> 3 : ""
-2 .[#707070].> 4 : ""
-2 .[#707070].> 5 : ""
-2 .[#707070].> 6 : ""
-2 .[#707070].> 7 : ""
-2 .[#707070].> 8 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 4 : ""
+2 .[#707070,thickness=2].> 5 : ""
+2 .[#707070,thickness=2].> 6 : ""
+2 .[#707070,thickness=2].> 7 : ""
+2 .[#707070,thickness=2].> 8 : ""
 @enduml
 ----
 .Projects/Modules (Restful Objects)
@@ -2719,7 +2933,7 @@ Directory: /viewers/restfulobjects/applib
 com.fasterxml.jackson.core:jackson-databind:jar:<managed> +
 org.apache.causeway.commons:causeway-commons:jar:<managed> +
 org.apache.causeway.core:causeway-applib:jar:<managed> +
-org.apache.causeway.core:causeway-core-internaltestvintage:jar:<managed> +
+org.apache.causeway.core:causeway-core-internaltestsupport:jar:<managed> +
 ****
 
 .Document Index Entries
@@ -2747,20 +2961,20 @@ org.springframework:spring-context:jar:<managed> +
 xref:refguide:viewer:index/restfulobjects/client/ActionParameterListBuilder.adoc[ActionParameterListBuilder], xref:refguide:viewer:index/restfulobjects/client/RestfulClient.adoc[RestfulClient], xref:refguide:viewer:index/restfulobjects/client/RestfulClientConfig.adoc[RestfulClientConfig], xref:refguide:viewer:index/restfulobjects/client/auth/BasicAuthFilter.adoc[BasicAuthFilter], xref:refguide:viewer:index/restfulobjects/client/log/ClientConversationFilter.adoc[ClientConversationFilter], [...]
 ****
 
-|Apache Causeway Viewer - RO (JAX-RS Resteasy v4)
+|Apache Causeway Viewer - RO (JAX-RS Resteasy)
 [source,yaml]
 ----
 Group: org.apache.causeway.viewer
-Artifact: causeway-viewer-restfulobjects-jaxrsresteasy4
+Artifact: causeway-viewer-restfulobjects-jaxrsresteasy
 Type: jar
-Directory: /viewers/restfulobjects/jaxrs-resteasy-4
+Directory: /viewers/restfulobjects/jaxrs-resteasy
 ----
 |JAX-RS plugin using jboss resteasy.
 
 .Components
 ****
-o.a.i.viewer.restfulobjects.jaxrsresteasy4.conneg.RestfulObjectsJaxbWriterForXml +
-o.a.i.viewer.restfulobjects.jaxrsresteasy4.webmodule.WebModuleJaxrsResteasy4 +
+o.a.i.viewer.restfulobjects.jaxrsresteasy.conneg.RestfulObjectsJaxbWriterForXml +
+o.a.i.viewer.restfulobjects.jaxrsresteasy.webmodule.WebModuleJaxrsResteasy +
 ****
 
 .Dependencies
@@ -2775,7 +2989,7 @@ org.jboss.resteasy:resteasy-spring-boot-starter:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:viewer:index/restfulobjects/jaxrsresteasy4/CausewayModuleViewerRestfulObjectsJaxrsResteasy4.adoc[CausewayModuleViewerRestfulObjectsJaxrsResteasy4], xref:refguide:viewer:index/restfulobjects/jaxrsresteasy4/conneg/RestfulObjectsJaxbWriterForXml.adoc[RestfulObjectsJaxbWriterForXml], xref:refguide:viewer:index/restfulobjects/jaxrsresteasy4/webmodule/WebModuleJaxrsResteasy4.adoc[WebModuleJaxrsResteasy4]
+xref:refguide:viewer:index/restfulobjects/jaxrsresteasy/CausewayModuleViewerRestfulObjectsJaxrsResteasy.adoc[CausewayModuleViewerRestfulObjectsJaxrsResteasy], xref:refguide:viewer:index/restfulobjects/jaxrsresteasy/conneg/RestfulObjectsJaxbWriterForXml.adoc[RestfulObjectsJaxbWriterForXml], xref:refguide:viewer:index/restfulobjects/jaxrsresteasy/webmodule/WebModuleJaxrsResteasy.adoc[WebModuleJaxrsResteasy]
 ****
 
 |Apache Causeway Viewer - RO (Rendering)
@@ -2798,15 +3012,15 @@ o.a.i.viewer.restfulobjects.rendering.service.conneg.ContentNegotiationServiceOr
 o.a.i.viewer.restfulobjects.rendering.service.conneg.ContentNegotiationServiceXRoDomainType +
 o.a.i.viewer.restfulobjects.rendering.service.swagger.SwaggerServiceDefault +
 o.a.i.viewer.restfulobjects.rendering.service.swagger.internal.ClassExcluderDefault +
-o.a.i.viewer.restfulobjects.rendering.service.swagger.internal.SwaggerSpecGenerator +
+o.a.i.viewer.restfulobjects.rendering.service.swagger.internal.OpenApiSpecGenerator +
 o.a.i.viewer.restfulobjects.rendering.service.swagger.internal.TaggerDefault +
-o.a.i.viewer.restfulobjects.rendering.service.swagger.internal.ValuePropertyFactoryDefault +
+o.a.i.viewer.restfulobjects.rendering.service.swagger.internal.ValueSchemaFactoryDefault +
 o.a.i.viewer.restfulobjects.rendering.service.valuerender.JsonValueEncoderServiceDefault +
 ****
 
 .Dependencies
 ****
-org.apache.causeway.core:causeway-core-internaltestvintage:jar:<managed> +
+org.apache.causeway.core:causeway-core-internaltestsupport:jar:<managed> +
 org.apache.causeway.core:causeway-core-runtime:jar:<managed> +
 org.apache.causeway.viewer:causeway-viewer-restfulobjects-applib:jar:<managed> +
 ****
@@ -2826,7 +3040,7 @@ Directory: /viewers/restfulobjects/testing
 ----
 |.Dependencies
 ****
-org.apache.causeway.core:causeway-core-internaltestvintage:jar:<managed> +
+org.apache.causeway.core:causeway-core-internaltestsupport:jar:<managed> +
 org.apache.causeway.core:causeway-core-runtime:jar:<managed> +
 org.apache.causeway.viewer:causeway-viewer-restfulobjects-viewer:jar:<managed> +
 ****
@@ -2858,7 +3072,7 @@ o.a.i.viewer.restfulobjects.viewer.resources.VersionResourceServerside +
 .Dependencies
 ****
 com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:<managed> +
-org.apache.causeway.core:causeway-core-internaltestvintage:jar:<managed> +
+org.apache.causeway.core:causeway-core-internaltestsupport:jar:<managed> +
 org.apache.causeway.core:causeway-core-webapp:jar:<managed> +
 org.apache.causeway.viewer:causeway-viewer-commons-services:jar:<managed> +
 org.apache.causeway.viewer:causeway-viewer-restfulobjects-rendering:jar:<managed> +
@@ -2890,32 +3104,32 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<7>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Wicket\n[Software System]" {
   rectangle "==Apache Causeway Viewer - Wicket\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
@@ -2925,11 +3139,11 @@ package "Wicket\n[Software System]" {
   rectangle "==Apache Causeway Viewer - Wicket (UI Components)\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
   rectangle "==Apache Causeway Viewer - Wicket (Viewer)\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
 }
-2 .[#707070].> 3 : ""
-2 .[#707070].> 4 : ""
-2 .[#707070].> 5 : ""
-2 .[#707070].> 6 : ""
-2 .[#707070].> 7 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 4 : ""
+2 .[#707070,thickness=2].> 5 : ""
+2 .[#707070,thickness=2].> 6 : ""
+2 .[#707070,thickness=2].> 7 : ""
 @enduml
 ----
 .Projects/Modules (Wicket)
@@ -2945,7 +3159,10 @@ Artifact: causeway-viewer-wicket
 Type: pom
 Directory: /viewers/wicket
 ----
-|
+|.Dependencies
+****
+de.agilecoders.wicket:wicket-bootstrap-extensions:jar:<managed> +
+****
 
 |Apache Causeway Viewer - Wicket (Applib)
 [source,yaml]
@@ -3043,7 +3260,7 @@ org.webjars:jquery:jar:<managed> +
 org.webjars:jquery-ui:jar:<managed> +
 org.webjars:momentjs:jar:<managed> +
 org.webjars:select2:jar:<managed> +
-org.webjars.bower:summernote:jar:<managed> +
+org.webjars.npm:summernote:jar:<managed> +
 org.wicketstuff:wicketstuff-select2:jar:<managed> +
 ****
 
@@ -3079,7 +3296,7 @@ o.a.i.viewer.wicket.viewer.webmodule.WebModuleWicket +
 ****
 commons-io:commons-io:jar:<managed> +
 de.agilecoders.wicket:wicket-bootstrap-core:jar:<managed> +
-org.apache.causeway.core:causeway-core-internaltestvintage:jar:<managed> +
+org.apache.causeway.core:causeway-core-internaltestsupport:jar:<managed> +
 org.apache.causeway.viewer:causeway-viewer-wicket-ui:jar:<managed> +
 org.apache.wicket:wicket-auth-roles:jar:<managed> +
 org.apache.wicket:wicket-spring:jar:<managed> +
@@ -3112,57 +3329,57 @@ left to right direction
 skinparam rectangle<<11>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<12>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<7>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<8>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<9>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<10>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Valuetypes\n[Software System]" {
   rectangle "==Apache Causeway Val - Joda Time (applib)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
@@ -3177,16 +3394,16 @@ package "Valuetypes\n[Software System]" {
   rectangle "==Apache Causeway Val - Vega (ui)\n<size:10>[Container: packaging: pom]</size>" <<11>> as 11
   rectangle "==Apache Causeway Value types\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
 }
-3 .[#707070].> 4 : ""
-3 .[#707070].> 5 : ""
-6 .[#707070].> 8 : ""
-6 .[#707070].> 9 : ""
-6 .[#707070].> 7 : ""
-6 .[#707070].> 10 : ""
-6 .[#707070].> 11 : ""
-11 .[#707070].> 12 : ""
-2 .[#707070].> 3 : ""
-2 .[#707070].> 6 : ""
+3 .[#707070,thickness=2].> 4 : ""
+3 .[#707070,thickness=2].> 5 : ""
+6 .[#707070,thickness=2].> 8 : ""
+6 .[#707070,thickness=2].> 9 : ""
+6 .[#707070,thickness=2].> 7 : ""
+6 .[#707070,thickness=2].> 10 : ""
+6 .[#707070,thickness=2].> 11 : ""
+11 .[#707070,thickness=2].> 12 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 6 : ""
 @enduml
 ----
 .Projects/Modules (Valuetypes)
@@ -3420,42 +3637,42 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<7>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<8>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<9>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Asciidoc\n[Software System]" {
   rectangle "==Apache Causeway Val - Asciidoctor (MetaModel)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
@@ -3467,12 +3684,12 @@ package "Asciidoc\n[Software System]" {
   rectangle "==Apache Causeway Val - Asciidoctor (ui wicket)\n<size:10>[Container: packaging: jar]</size>" <<9>> as 9
   rectangle "==Apache Causeway Val - Asciidoctor (ui)\n<size:10>[Container: packaging: pom]</size>" <<7>> as 7
 }
-2 .[#707070].> 4 : ""
-2 .[#707070].> 5 : ""
-2 .[#707070].> 3 : ""
-2 .[#707070].> 6 : ""
-2 .[#707070].> 7 : ""
-7 .[#707070].> 9 : ""
+2 .[#707070,thickness=2].> 4 : ""
+2 .[#707070,thickness=2].> 5 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 6 : ""
+2 .[#707070,thickness=2].> 7 : ""
+7 .[#707070,thickness=2].> 9 : ""
 @enduml
 ----
 .Projects/Modules (Asciidoc)
@@ -3586,10 +3803,10 @@ Directory: /valuetypes/asciidoc/ui
 ----
 |.Dependencies
 ****
-com.github.jnr:jnr-constants:jar:0.10.3 +
-com.github.jnr:jnr-enxio:jar:0.32.13 +
-com.github.jnr:jnr-ffi:jar:2.2.12 +
-com.github.jnr:jnr-posix:jar:3.1.15 +
+com.github.jnr:jnr-constants:jar:0.10.4 +
+com.github.jnr:jnr-enxio:jar:0.32.14 +
+com.github.jnr:jnr-ffi:jar:2.2.13 +
+com.github.jnr:jnr-posix:jar:3.1.16 +
 org.apache.causeway.core:causeway-core-metamodel:jar:<managed> +
 org.apache.causeway.valuetypes:causeway-valuetypes-asciidoc-applib:jar:<managed> +
 org.asciidoctor:asciidoctorj:jar:${asciidoctorj.version} +
@@ -3659,37 +3876,37 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<7>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<8>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Markdown\n[Software System]" {
   rectangle "==Apache Causeway Val - Markdown (MetaModel)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
@@ -3700,12 +3917,12 @@ package "Markdown\n[Software System]" {
   rectangle "==Apache Causeway Val - Markdown (ui wicket)\n<size:10>[Container: packaging: jar]</size>" <<8>> as 8
   rectangle "==Apache Causeway Val - Markdown (ui)\n<size:10>[Container: packaging: pom]</size>" <<7>> as 7
 }
-2 .[#707070].> 4 : ""
-2 .[#707070].> 5 : ""
-2 .[#707070].> 3 : ""
-2 .[#707070].> 6 : ""
-2 .[#707070].> 7 : ""
-7 .[#707070].> 8 : ""
+2 .[#707070,thickness=2].> 4 : ""
+2 .[#707070,thickness=2].> 5 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 6 : ""
+2 .[#707070,thickness=2].> 7 : ""
+7 .[#707070,thickness=2].> 8 : ""
 @enduml
 ----
 .Projects/Modules (Markdown)
@@ -3870,257 +4087,257 @@ left to right direction
 skinparam rectangle<<44>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<45>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<46>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<47>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<48>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<49>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<50>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<51>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<52>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<10>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<11>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<12>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<13>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<14>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<15>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<16>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<17>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<18>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<19>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<7>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<8>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<9>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<20>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<21>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<22>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<23>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<24>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<25>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<26>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<27>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<28>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<29>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<30>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<31>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<32>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<33>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<34>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<35>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<36>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<37>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<38>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<39>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<40>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<41>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<42>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<43>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Extensions\n[Software System]" {
   rectangle "==Apache Causeway Ext - Audit Trail\n<size:10>[Container: packaging: pom]</size>" <<3>> as 3
@@ -4175,56 +4392,56 @@ package "Extensions\n[Software System]" {
   rectangle "==Apache Causeway Ext - pdf.js Wicket\n<size:10>[Container: packaging: pom]</size>" <<30>> as 30
   rectangle "==Apache Causeway Extensions\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
 }
-3 .[#707070].> 4 : ""
-3 .[#707070].> 5 : ""
-3 .[#707070].> 6 : ""
-7 .[#707070].> 8 : ""
-9 .[#707070].> 10 : ""
-9 .[#707070].> 11 : ""
-9 .[#707070].> 12 : ""
-13 .[#707070].> 14 : ""
-13 .[#707070].> 15 : ""
-13 .[#707070].> 16 : ""
-13 .[#707070].> 17 : ""
-18 .[#707070].> 19 : ""
-20 .[#707070].> 21 : ""
-22 .[#707070].> 23 : ""
-22 .[#707070].> 24 : ""
-24 .[#707070].> 25 : ""
-24 .[#707070].> 26 : ""
-33 .[#707070].> 34 : ""
-33 .[#707070].> 35 : ""
-33 .[#707070].> 36 : ""
-33 .[#707070].> 38 : ""
-33 .[#707070].> 37 : ""
-33 .[#707070].> 39 : ""
-33 .[#707070].> 40 : ""
-33 .[#707070].> 41 : ""
-46 .[#707070].> 47 : ""
-49 .[#707070].> 50 : ""
-49 .[#707070].> 52 : ""
-49 .[#707070].> 51 : ""
-42 .[#707070].> 43 : ""
-42 .[#707070].> 44 : ""
-42 .[#707070].> 45 : ""
-27 .[#707070].> 28 : ""
-27 .[#707070].> 29 : ""
-27 .[#707070].> 30 : ""
-30 .[#707070].> 31 : ""
-30 .[#707070].> 32 : ""
-2 .[#707070].> 3 : ""
-2 .[#707070].> 7 : ""
-2 .[#707070].> 9 : ""
-2 .[#707070].> 13 : ""
-2 .[#707070].> 18 : ""
-2 .[#707070].> 20 : ""
-2 .[#707070].> 22 : ""
-2 .[#707070].> 33 : ""
-2 .[#707070].> 46 : ""
-2 .[#707070].> 48 : ""
-2 .[#707070].> 49 : ""
-2 .[#707070].> 42 : ""
-2 .[#707070].> 27 : ""
+3 .[#707070,thickness=2].> 4 : ""
+3 .[#707070,thickness=2].> 5 : ""
+3 .[#707070,thickness=2].> 6 : ""
+7 .[#707070,thickness=2].> 8 : ""
+9 .[#707070,thickness=2].> 10 : ""
+9 .[#707070,thickness=2].> 11 : ""
+9 .[#707070,thickness=2].> 12 : ""
+13 .[#707070,thickness=2].> 14 : ""
+13 .[#707070,thickness=2].> 15 : ""
+13 .[#707070,thickness=2].> 16 : ""
+13 .[#707070,thickness=2].> 17 : ""
+18 .[#707070,thickness=2].> 19 : ""
+20 .[#707070,thickness=2].> 21 : ""
+22 .[#707070,thickness=2].> 23 : ""
+22 .[#707070,thickness=2].> 24 : ""
+24 .[#707070,thickness=2].> 25 : ""
+24 .[#707070,thickness=2].> 26 : ""
+33 .[#707070,thickness=2].> 34 : ""
+33 .[#707070,thickness=2].> 35 : ""
+33 .[#707070,thickness=2].> 36 : ""
+33 .[#707070,thickness=2].> 38 : ""
+33 .[#707070,thickness=2].> 37 : ""
+33 .[#707070,thickness=2].> 39 : ""
+33 .[#707070,thickness=2].> 40 : ""
+33 .[#707070,thickness=2].> 41 : ""
+46 .[#707070,thickness=2].> 47 : ""
+49 .[#707070,thickness=2].> 50 : ""
+49 .[#707070,thickness=2].> 52 : ""
+49 .[#707070,thickness=2].> 51 : ""
+42 .[#707070,thickness=2].> 43 : ""
+42 .[#707070,thickness=2].> 44 : ""
+42 .[#707070,thickness=2].> 45 : ""
+27 .[#707070,thickness=2].> 28 : ""
+27 .[#707070,thickness=2].> 29 : ""
+27 .[#707070,thickness=2].> 30 : ""
+30 .[#707070,thickness=2].> 31 : ""
+30 .[#707070,thickness=2].> 32 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 7 : ""
+2 .[#707070,thickness=2].> 9 : ""
+2 .[#707070,thickness=2].> 13 : ""
+2 .[#707070,thickness=2].> 18 : ""
+2 .[#707070,thickness=2].> 20 : ""
+2 .[#707070,thickness=2].> 22 : ""
+2 .[#707070,thickness=2].> 33 : ""
+2 .[#707070,thickness=2].> 46 : ""
+2 .[#707070,thickness=2].> 48 : ""
+2 .[#707070,thickness=2].> 49 : ""
+2 .[#707070,thickness=2].> 42 : ""
+2 .[#707070,thickness=2].> 27 : ""
 @enduml
 ----
 .Projects/Modules (Extensions)
@@ -4558,28 +4775,16 @@ Directory: /extensions/core/executionoutbox/restclient
 ----
 |.Dependencies
 ****
-com.approvaltests:approvaltests:jar:<managed> +
-com.fasterxml.jackson.core:jackson-core:jar:<managed> +
-com.fasterxml.jackson.core:jackson-databind:jar:<managed> +
 com.h2database:h2:jar:<managed> +
-jakarta.ws.rs:jakarta.ws.rs-api:jar:<managed> +
-org.apache.causeway.core:causeway-core-runtimeservices:jar:<managed> +
+org.apache.causeway.commons:causeway-commons:jar:<managed> +
+org.apache.causeway.core:causeway-core-internaltestsupport:jar:<managed> +
 org.apache.causeway.core:causeway-schema:jar:<managed> +
 org.apache.causeway.extensions:causeway-extensions-executionoutbox-applib:test-jar:<managed> +
 org.apache.causeway.extensions:causeway-extensions-executionoutbox-persistence-jpa:jar:<managed> +
 org.apache.causeway.extensions:causeway-extensions-executionoutbox-persistence-jpa:test-jar:<managed> +
 org.apache.causeway.mavendeps:causeway-mavendeps-webapp:pom:<managed> +
-org.apache.causeway.security:causeway-security-bypass:jar:<managed> +
 org.apache.causeway.testing:causeway-testing-fixtures-applib:jar:<managed> +
-org.apache.causeway.testing:causeway-testing-unittestsupport-applib:jar:<managed> +
-org.apache.causeway.viewer:causeway-viewer-restfulobjects-jaxrsresteasy4:jar:<managed> +
-org.apache.causeway.viewer:causeway-viewer-restfulobjects-viewer:jar:<managed> +
-org.apache.cxf:cxf-rt-rs-client:jar:<managed> +
-org.assertj:assertj-core:jar:<managed> +
-org.mockito:mockito-core:jar:<managed> +
-org.slf4j:slf4j-api:jar:<managed> +
-org.springframework.boot:spring-boot-starter-test:jar:<managed> +
-org.springframework.boot:spring-boot-starter-web:jar:<managed> +
+org.apache.causeway.viewer:causeway-viewer-restfulobjects-client:jar:2.0.0-SNAPSHOT +
 ****
 
 .Document Index Entries
@@ -5318,37 +5523,37 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<7>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<8>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Applib: Excel\n[Software System]" {
   rectangle "==Apache Causeway Ext - Excel (Fixtures)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
@@ -5359,11 +5564,11 @@ package "Applib: Excel\n[Software System]" {
   rectangle "==Apache Causeway Ext - Wicket Viewer - Excel Download (ui)\n<size:10>[Container: packaging: jar]</size>" <<8>> as 8
   rectangle "==Apache Causeway Sub - Excel (testing support)\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
 }
-2 .[#707070].> 4 : ""
-2 .[#707070].> 5 : ""
-2 .[#707070].> 3 : ""
-2 .[#707070].> 6 : ""
-7 .[#707070].> 8 : ""
+2 .[#707070,thickness=2].> 4 : ""
+2 .[#707070,thickness=2].> 5 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 6 : ""
+7 .[#707070,thickness=2].> 8 : ""
 @enduml
 ----
 .Projects/Modules (Applib: Excel)
@@ -5399,7 +5604,7 @@ o.a.i.extensions.excel.applib.service.ExcelServiceDefault +
 .Dependencies
 ****
 org.apache.causeway.core:causeway-applib:jar:<managed> +
-org.apache.causeway.core:causeway-core-internaltestvintage:jar:<managed> +
+org.apache.causeway.core:causeway-core-internaltestsupport:jar:<managed> +
 org.apache.causeway.core:causeway-core-runtime:jar:<managed> +
 org.apache.causeway.persistence:causeway-persistence-jdo-applib:jar:<managed> +
 org.apache.poi:poi-ooxml:jar:<managed> +
@@ -5408,7 +5613,7 @@ org.apache.poi:poi-ooxml-lite:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:extensions:index/excel/applib/AggregationType.adoc[AggregationType], xref:refguide:extensions:index/excel/applib/CausewayModuleExtExcelApplib.adoc[CausewayModuleExtExcelApplib], xref:refguide:extensions:index/excel/applib/ExcelMetaDataEnabled.adoc[ExcelMetaDataEnabled], xref:refguide:extensions:index/excel/applib/ExcelService.adoc[ExcelService], xref:refguide:extensions:index/excel/applib/Mode.adoc[Mode], xref:refguide:extensions:index/excel/applib/RowHandler.adoc[RowHandle [...]
+xref:refguide:extensions:index/excel/applib/AggregationType.adoc[AggregationType], xref:refguide:extensions:index/excel/applib/CausewayModuleExtExcelApplib.adoc[CausewayModuleExtExcelApplib], xref:refguide:extensions:index/excel/applib/ExcelMetaDataEnabled.adoc[ExcelMetaDataEnabled], xref:refguide:extensions:index/excel/applib/ExcelService.adoc[ExcelService], xref:refguide:extensions:index/excel/applib/Mode.adoc[Mode], xref:refguide:extensions:index/excel/applib/RowHandler.adoc[RowHandle [...]
 ****
 
 |Apache Causeway Ext - Excel (Fixtures)
@@ -5426,7 +5631,6 @@ org.apache.causeway.extensions:causeway-extensions-excel-applib:jar:<managed> +
 org.apache.causeway.extensions:causeway-extensions-excel-testing:jar:<managed> +
 org.apache.causeway.persistence:causeway-persistence-jdo-datanucleus:jar:<managed> +
 org.apache.causeway.testing:causeway-testing-fixtures-applib:jar:<managed> +
-org.projectlombok:lombok:jar:<managed> +
 ****
 
 |Apache Causeway Ext - Excel (Integ Tests)
@@ -5524,22 +5728,22 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Core: Command Log\n[Software System]" {
   rectangle "==Apache Causeway Ext - Command Log\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
@@ -5547,9 +5751,9 @@ package "Core: Command Log\n[Software System]" {
   rectangle "==Apache Causeway Ext - Command Log Implementation (JDO)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
   rectangle "==Apache Causeway Ext - Command Log Implementation (JPA)\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
 }
-2 .[#707070].> 3 : ""
-2 .[#707070].> 4 : ""
-2 .[#707070].> 5 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 4 : ""
+2 .[#707070,thickness=2].> 5 : ""
 @enduml
 ----
 .Projects/Modules (Core: Command Log)
@@ -5597,7 +5801,7 @@ org.quartz-scheduler:quartz:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:extensions:index/commandlog/applib/app/CommandLogMenu.adoc[CommandLogMenu], xref:refguide:extensions:index/commandlog/applib/contributions/HasInteractionId_commandLogEntry.adoc[HasInteractionId_commandLogEntry], xref:refguide:extensions:index/commandlog/applib/contributions/HasUsername_recentCommandsByUser.adoc[HasUsername_recentCommandsByUser], xref:refguide:extensions:index/commandlog/applib/contributions/Object_recentCommands.adoc[Object_recentCommands], xref:refguide:ex [...]
+xref:refguide:extensions:index/commandlog/applib/app/CommandLogMenu.adoc[CommandLogMenu], xref:refguide:extensions:index/commandlog/applib/contributions/HasInteractionId_commandLogEntry.adoc[HasInteractionId_commandLogEntry], xref:refguide:extensions:index/commandlog/applib/contributions/HasUsername_recentCommandsByUser.adoc[HasUsername_recentCommandsByUser], xref:refguide:extensions:index/commandlog/applib/contributions/Object_recentCommands.adoc[Object_recentCommands], xref:refguide:ex [...]
 ****
 
 |Apache Causeway Ext - Command Log Implementation (JDO)
@@ -5693,42 +5897,42 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<7>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<8>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<9>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Tooling\n[Software System]" {
   rectangle "==Apache Causeway - Tooling\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
@@ -5740,13 +5944,13 @@ package "Tooling\n[Software System]" {
   rectangle "==Apache Causeway - Tooling - Model for AsciiDoc\n<size:10>[Container: packaging: jar]</size>" <<8>> as 8
   rectangle "==Apache Causeway - Tooling - Project Model (Code mining)\n<size:10>[Container: packaging: jar]</size>" <<9>> as 9
 }
-2 .[#707070].> 3 : ""
-2 .[#707070].> 4 : ""
-2 .[#707070].> 6 : ""
-2 .[#707070].> 5 : ""
-2 .[#707070].> 7 : ""
-2 .[#707070].> 8 : ""
-2 .[#707070].> 9 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 4 : ""
+2 .[#707070,thickness=2].> 6 : ""
+2 .[#707070,thickness=2].> 5 : ""
+2 .[#707070,thickness=2].> 7 : ""
+2 .[#707070,thickness=2].> 8 : ""
+2 .[#707070,thickness=2].> 9 : ""
 @enduml
 ----
 .Projects/Modules (Tooling)
@@ -5769,7 +5973,7 @@ eg. code mining, automated documentation.
 .Dependencies
 ****
 org.apache.causeway.core:causeway-core-internaltestsupport:jar:${project.version} +
-org.checkerframework:checker-qual:jar:3.27.0 +
+org.checkerframework:checker-qual:jar:3.28.0 +
 org.mapstruct:mapstruct-processor:jar:1.5.3.Final +
 org.projectlombok:lombok:jar:<managed> +
 org.slf4j:slf4j-api:jar:<managed> +
@@ -5931,117 +6135,117 @@ left to right direction
 skinparam rectangle<<22>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<11>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
-skinparam rectangle<<12>> {
+skinparam rectangle<<23>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
-skinparam rectangle<<23>> {
+skinparam rectangle<<12>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
-skinparam rectangle<<13>> {
+skinparam rectangle<<24>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
-skinparam rectangle<<24>> {
+skinparam rectangle<<13>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<14>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<15>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<16>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<17>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<18>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<19>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<7>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<8>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<9>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<20>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<10>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<21>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Regression Tests\n[Software System]" {
   rectangle "==Apache Causeway - Regression Tests\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
@@ -6068,28 +6272,28 @@ package "Regression Tests\n[Software System]" {
   rectangle "==Apache Causeway - Regression Tests (stable) - Viewers JDO\n<size:10>[Container: packaging: jar]</size>" <<23>> as 23
   rectangle "==Apache Causeway - Regression Tests (stable) - Viewers JPA\n<size:10>[Container: packaging: jar]</size>" <<24>> as 24
 }
-3 .[#707070].> 4 : ""
-3 .[#707070].> 5 : ""
-3 .[#707070].> 6 : ""
-2 .[#707070].> 8 : ""
-2 .[#707070].> 9 : ""
-2 .[#707070].> 3 : ""
-2 .[#707070].> 10 : ""
-2 .[#707070].> 7 : ""
-2 .[#707070].> 11 : ""
-2 .[#707070].> 12 : ""
-2 .[#707070].> 13 : ""
-2 .[#707070].> 14 : ""
-2 .[#707070].> 15 : ""
-2 .[#707070].> 16 : ""
-2 .[#707070].> 17 : ""
-2 .[#707070].> 18 : ""
-2 .[#707070].> 19 : ""
-2 .[#707070].> 20 : ""
-2 .[#707070].> 21 : ""
-2 .[#707070].> 22 : ""
-2 .[#707070].> 23 : ""
-2 .[#707070].> 24 : ""
+3 .[#707070,thickness=2].> 4 : ""
+3 .[#707070,thickness=2].> 5 : ""
+3 .[#707070,thickness=2].> 6 : ""
+2 .[#707070,thickness=2].> 8 : ""
+2 .[#707070,thickness=2].> 9 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 10 : ""
+2 .[#707070,thickness=2].> 7 : ""
+2 .[#707070,thickness=2].> 11 : ""
+2 .[#707070,thickness=2].> 12 : ""
+2 .[#707070,thickness=2].> 13 : ""
+2 .[#707070,thickness=2].> 14 : ""
+2 .[#707070,thickness=2].> 15 : ""
+2 .[#707070,thickness=2].> 16 : ""
+2 .[#707070,thickness=2].> 17 : ""
+2 .[#707070,thickness=2].> 18 : ""
+2 .[#707070,thickness=2].> 19 : ""
+2 .[#707070,thickness=2].> 20 : ""
+2 .[#707070,thickness=2].> 21 : ""
+2 .[#707070,thickness=2].> 22 : ""
+2 .[#707070,thickness=2].> 23 : ""
+2 .[#707070,thickness=2].> 24 : ""
 @enduml
 ----
 .Projects/Modules (Regression Tests)
@@ -6106,11 +6310,10 @@ Type: pom
 Directory: /regressiontests
 ----
 |Collection of JUnit tests covering core functionalities of the framework.
-(Targeted for JVM 11+)
 
 .Dependencies
 ****
-org.apache.causeway.testing:causeway-testing-integtestsupport-applib:jar:${project.version} +
+org.apache.causeway.testing:causeway-testing-integtestsupport-applib:jar:<managed> +
 org.apache.causeway.testing:causeway-testing-unittestsupport-applib:jar:<managed> +
 org.projectlombok:lombok:jar:<managed> +
 ****
@@ -6359,6 +6562,7 @@ Directory: /regressiontests/stable-layouts
 org.apache.causeway.core:causeway-applib:jar:<managed> +
 org.apache.causeway.core:causeway-core-config:jar:<managed> +
 org.apache.causeway.core:causeway-core-runtimeservices:jar:<managed> +
+org.apache.causeway.regressiontests:causeway-regressiontests-stable:jar:<managed> +
 org.apache.causeway.testing:causeway-testing-fixtures-applib:jar:<managed> +
 org.apache.causeway.viewer:causeway-viewer-wicket-applib:jar:<managed> +
 ****
@@ -6506,7 +6710,7 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Incubator\n[Software System]" {
   rectangle "==Apache Causeway Incubator\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
@@ -6549,7 +6753,7 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Kroviz Client\n[Software System]" {
   rectangle "==Apache Causeway Incubator - Client kroViz\n<size:10>[Container: packaging: jar]</size>" <<2>> as 2
@@ -6592,27 +6796,27 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<6>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "GraphQL Viewer\n[Software System]" {
   rectangle "==Apache Causeway Inc - Viewer GraphQL\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
@@ -6621,10 +6825,10 @@ package "GraphQL Viewer\n[Software System]" {
   rectangle "==Apache Causeway Inc - Viewer GraphQL (Test)\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
   rectangle "==Apache Causeway Inc - Viewer GraphQL (Viewer)\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
 }
-2 .[#707070].> 3 : ""
-2 .[#707070].> 4 : ""
-2 .[#707070].> 5 : ""
-2 .[#707070].> 6 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 4 : ""
+2 .[#707070,thickness=2].> 5 : ""
+2 .[#707070,thickness=2].> 6 : ""
 @enduml
 ----
 .Projects/Modules (GraphQL Viewer)
@@ -6738,22 +6942,22 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Vaadin Viewer\n[Software System]" {
   rectangle "==Apache Causeway Inc - Viewer Vaadin\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
@@ -6761,9 +6965,9 @@ package "Vaadin Viewer\n[Software System]" {
   rectangle "==Apache Causeway Inc - Viewer Vaadin (UI Components)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
   rectangle "==Apache Causeway Inc - Viewer Vaadin (Viewer)\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
 }
-2 .[#707070].> 3 : ""
-2 .[#707070].> 4 : ""
-2 .[#707070].> 5 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 4 : ""
+2 .[#707070,thickness=2].> 5 : ""
 @enduml
 ----
 .Projects/Modules (Vaadin Viewer)
@@ -6793,12 +6997,12 @@ Directory: /incubator/viewers/vaadin/model
 ****
 com.github.fge:jackson-coreutils:jar:1.8 +
 com.vaadin:vaadin:jar:<managed> +
-io.swagger:swagger-compat-spec-parser:jar:1.0.51 +
-io.swagger:swagger-parser:jar:1.0.51 +
-io.swagger.core.v3:swagger-core:jar:2.1.12 +
-io.swagger.core.v3:swagger-models:jar:2.1.12 +
-io.swagger.parser.v3:swagger-parser-core:jar:2.0.20 +
-io.swagger.parser.v3:swagger-parser-v3:jar:2.0.20 +
+io.swagger:swagger-compat-spec-parser:jar:1.0.64 +
+io.swagger:swagger-parser:jar:1.0.64 +
+io.swagger.core.v3:swagger-core:jar:2.2.7 +
+io.swagger.core.v3:swagger-models:jar:2.2.7 +
+io.swagger.parser.v3:swagger-parser-core:jar:2.1.9 +
+io.swagger.parser.v3:swagger-parser-v3:jar:2.1.9 +
 org.apache.causeway.core:causeway-core-internaltestsupport:jar:<managed> +
 org.apache.causeway.core:causeway-core-webapp:jar:<managed> +
 org.apache.causeway.viewer:causeway-viewer-commons-model:jar:<managed> +
@@ -6877,22 +7081,22 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<5>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "JavaFX Viewer\n[Software System]" {
   rectangle "==Apache Causeway Inc - Viewer JavaFX\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
@@ -6900,9 +7104,9 @@ package "JavaFX Viewer\n[Software System]" {
   rectangle "==Apache Causeway Inc - Viewer JavaFX (UI Components)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
   rectangle "==Apache Causeway Inc - Viewer JavaFX (Viewer)\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
 }
-2 .[#707070].> 3 : ""
-2 .[#707070].> 4 : ""
-2 .[#707070].> 5 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 4 : ""
+2 .[#707070,thickness=2].> 5 : ""
 @enduml
 ----
 .Projects/Modules (JavaFX Viewer)
@@ -7010,25 +7214,25 @@ left to right direction
 skinparam rectangle<<2>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<3>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 skinparam rectangle<<4>> {
   BackgroundColor #438dd5
   FontColor #fffffe
-  BorderColor #2E6295
+  BorderColor #2e6295
 }
 package "Other\n[Software System]" {
   rectangle "==Apache Causeway Ext - Command Replay\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
   rectangle "==Apache Causeway Ext - Command Replay for Primary\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
   rectangle "==Apache Causeway Ext - Command Replay for Secondary\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
 }
-2 .[#707070].> 3 : ""
-2 .[#707070].> 4 : ""
+2 .[#707070,thickness=2].> 3 : ""
+2 .[#707070,thickness=2].> 4 : ""
 @enduml
 ----
 .Projects/Modules (Other)
@@ -7094,6 +7298,7 @@ o.a.i.extensions.commandreplay.secondary.analyser.CommandReplayAnalyserResult +
 o.a.i.extensions.commandreplay.secondary.analysis.CommandReplayAnalysisService +
 o.a.i.extensions.commandreplay.secondary.config.SecondaryConfig +
 o.a.i.extensions.commandreplay.secondary.fetch.CommandFetcher +
+o.a.i.extensions.commandreplay.secondary.job.ReplicateAndReplayJob +
 ****
 
 .Dependencies
@@ -7105,12 +7310,13 @@ org.apache.causeway.core:causeway-schema:jar:<managed> +
 org.apache.causeway.extensions:causeway-extensions-commandlog-applib:jar:<managed> +
 org.apache.causeway.testing:causeway-testing-fixtures-applib:jar:<managed> +
 org.apache.causeway.viewer:causeway-viewer-restfulobjects-client:jar:<managed> +
-org.apache.causeway.viewer:causeway-viewer-restfulobjects-jaxrsresteasy4:jar:<managed> +
+org.apache.causeway.viewer:causeway-viewer-restfulobjects-jaxrsresteasy:jar:<managed> +
 org.glassfish.jersey.ext:jersey-spring5:jar:<managed> +
+org.springframework.boot:spring-boot-starter-quartz:jar:<managed> +
 ****
 
 .Document Index Entries
 ****
-xref:refguide:extensions:index/commandreplay/secondary/CausewayModuleExtCommandReplaySecondary.adoc[CausewayModuleExtCommandReplaySecondary], xref:refguide:extensions:index/commandreplay/secondary/analyser/CommandReplayAnalyser.adoc[CommandReplayAnalyser], xref:refguide:extensions:index/commandreplay/secondary/analyser/CommandReplayAnalyserException.adoc[CommandReplayAnalyserException], xref:refguide:extensions:index/commandreplay/secondary/analyser/CommandReplayAnalyserResult.adoc[Comma [...]
+xref:refguide:extensions:index/commandreplay/secondary/CausewayModuleExtCommandReplaySecondary.adoc[CausewayModuleExtCommandReplaySecondary], xref:refguide:extensions:index/commandreplay/secondary/analyser/CommandReplayAnalyser.adoc[CommandReplayAnalyser], xref:refguide:extensions:index/commandreplay/secondary/analyser/CommandReplayAnalyserException.adoc[CommandReplayAnalyserException], xref:refguide:extensions:index/commandreplay/secondary/analyser/CommandReplayAnalyserResult.adoc[Comma [...]
 ****
 |===