You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2023/03/21 18:28:29 UTC

[causeway] branch master updated (b2819bc562 -> e87d18ff68)

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

danhaywood pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/causeway.git


    from b2819bc562 CAUSEWAY-3391: fixes param (obj. ref.) not shown if it has no choices
     new 6bf275f2b8 updates docs in demo app for @DomainObject#entityPropertyChange.
     new e87d18ff68 CAUSEWAY-3255: updates to website

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../components/docs/modules/ROOT/pages/about.adoc  | 41 +++++++---
 .../modules/ROOT/pages/landing-page/catalogs.adoc  | 22 ------
 .../docs/modules/ROOT/partials/component-nav.adoc  |  2 +-
 .../modules/ROOT/partials/module-nav/catalogs.adoc |  8 --
 .../ROOT/partials/module-nav/components.adoc       | 13 ++--
 .../ROOT/partials/module-nav/extensions.adoc}      | 51 +++++++++----
 .../modules/ROOT/partials/module-nav/guides.adoc   |  3 +
 .../modules/applib-classes/pages/value-types.adoc  |  2 +-
 .../applib-classes/partials/module-nav.adoc        |  1 -
 .../modules/ROOT/pages/2020/2.0.0-M3/relnotes.adoc |  2 +-
 .../modules/ROOT/partials/extensions.adoc          |  2 +-
 antora/supplemental-ui/index.html                  |  3 +-
 .../resources/MarkupVariableResolverService.java   | 58 ++++++++++++---
 .../_changes/ExposeCapturedChanges_clear.java      | 11 +--
 .../ExposeCapturedChanges_recentChanges.java       |  4 +-
 .../ExposePersistedCommands_commands.java          |  1 +
 ...utionListenerToCaptureInteractionsInMemory.java | 61 ---------------
 .../ExposeCapturedInteractions_clear.java          | 50 -------------
 ...tions.java => ExposePersistedInteractions.java} |  2 +-
 ... ExposePersistedInteractions_interactions.java} | 16 ++--
 .../ExposePropertyChanges.java}                    |  4 +-
 .../ExposePropertyChanges_propertyChanges.java}    | 27 +++----
 .../ActionCommandPublishingJdo-description.adoc    | 48 ++----------
 .../ActionCommandPublishingJpa-description.adoc    | 48 ++----------
 .../ActionExecutionPublishingEntity.java           |  4 +-
 .../ActionExecutionPublishingJdo-description.adoc  |  4 +-
 .../ActionExecutionPublishingJpa-description.adoc  |  4 +-
 .../DomainObjectEntityChangePublishingEntity.java  |  1 -
 ...ObjectEntityChangePublishingVm-description.adoc | 87 ++++++----------------
 .../DomainObjectEntityChangePublishingVm.java      |  3 +-
 ...omainObjectEntityChangePublishingVm_delete.java | 46 +++++++-----
 ...ObjectEntityChangePublishingDisabledEntity.java |  1 +
 ...hingVm_publishingDisabledAnnotatedEntities.java |  3 +
 ...ityChangePublishingDisabledJdo-description.adoc |  4 +-
 ...ityChangePublishingDisabledJpa-description.adoc |  4 +-
 ...shingVm_publishingEnabledAnnotatedEntities.java |  2 +
 ...tityChangePublishingEnabledJdo-description.adoc |  4 +-
 ...tityChangePublishingEnabledJpa-description.adoc |  4 +-
 ...ChangePublishingEnabledMetaAnnotatedEntity.java |  1 +
 ...gVm_publishingEnabledMetaAnnotatedEntities.java |  2 +
 ...lishingEnabledMetaAnnotatedJdo-description.adoc |  7 +-
 ...ityChangePublishingEnabledMetaAnnotatedJdo.java |  1 +
 ...lishingEnabledMetaAnnotatedJpa-description.adoc |  7 +-
 ...blishingEnabledMetaAnnotOverriddenEntities.java |  3 +
 ...gEnabledMetaAnnotOverriddenJdo-description.adoc | 16 ++--
 ...gEnabledMetaAnnotOverriddenJpa-description.adoc | 19 +++--
 .../DomainObjectMixinMethodVm-description.adoc     |  6 +-
 .../DomainObjectLifecyleEventsVm-description.adoc  |  6 +-
 .../PropertyCommandPublishingJdo-description.adoc  | 77 ++++++++++---------
 .../PropertyCommandPublishingJpa-description.adoc  | 22 +++---
 .../PropertyExecutionPublishingEntity.java         |  4 +-
 ...PropertyExecutionPublishingJdo-description.adoc |  8 +-
 ...PropertyExecutionPublishingJpa-description.adoc |  6 +-
 .../dom/homepage/DemoHomePage-description.adoc     |  2 +-
 .../src/main/java/demoapp/dom/menubars.layout.xml  | 82 ++++++++++----------
 .../src/main/resources/static/css/application.css  |  7 +-
 .../resources/ResourceReaderService_Test.java      |  8 +-
 .../src/main/resources/static/index.html           |  2 +
 .../src}/resources/static/index.html               |  2 +
 .../jpa/src/{ => main}/resources/log4j2-spring.xml |  0
 .../src/main/resources/static/index.html           |  2 +
 extensions/adoc/antora.yml                         |  2 +-
 extensions/adoc/modules/ROOT/pages/about.adoc      | 11 +--
 .../shiro-realm-ldap/partials/module-nav.adoc      |  2 +-
 .../vw/pdfjs/adoc/modules/pdfjs/pages/about.adoc   | 11 +--
 .../adoc/modules/ROOT/partials/extensions.adoc     |  6 +-
 .../adoc/modules/unittestsupport/pages/about.adoc  |  2 +-
 valuetypes/adoc/modules/ROOT/pages/about.adoc      |  2 +-
 .../pages/extending/replacing-page-elements.adoc   |  4 +-
 69 files changed, 423 insertions(+), 558 deletions(-)
 delete mode 100644 antora/components/docs/modules/ROOT/pages/landing-page/catalogs.adoc
 delete mode 100644 antora/components/docs/modules/ROOT/partials/module-nav/catalogs.adoc
 copy antora/components/{refguide-index/modules/extensions/pages/index/secman/applib/user/dom/ApplicationUserStatus.adoc => docs/modules/ROOT/partials/module-nav/extensions.adoc} (50%)
 delete mode 100644 examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExecutionListenerToCaptureInteractionsInMemory.java
 delete mode 100644 examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposeCapturedInteractions_clear.java
 rename examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/{ExposeCapturedInteractions.java => ExposePersistedInteractions.java} (95%)
 rename examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/{ExposeCapturedInteractions_interactions.java => ExposePersistedInteractions_interactions.java} (69%)
 copy examples/demo/domain/src/main/java/demoapp/dom/domain/{_changes/ExposeCapturedChanges.java => _propertychanges/ExposePropertyChanges.java} (91%)
 copy examples/demo/domain/src/main/java/demoapp/dom/domain/{_changes/ExposeCapturedChanges_recentChanges.java => _propertychanges/ExposePropertyChanges_propertyChanges.java} (66%)
 copy examples/demo/wicket/{common => jdo}/src/main/resources/static/index.html (99%)
 copy examples/demo/wicket/{common/src/main => jpa-and-graphql/src}/resources/static/index.html (99%)
 rename examples/demo/wicket/jpa/src/{ => main}/resources/log4j2-spring.xml (100%)
 rename examples/demo/wicket/{common => jpa}/src/main/resources/static/index.html (99%)


[causeway] 02/02: CAUSEWAY-3255: updates to website

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit e87d18ff6871a3fc0604c5a3723ec55d9c570e26
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Mar 21 18:15:57 2023 +0000

    CAUSEWAY-3255: updates to website
---
 .../components/docs/modules/ROOT/pages/about.adoc  | 41 +++++++++++++++-------
 .../modules/ROOT/pages/landing-page/catalogs.adoc  | 22 ------------
 .../docs/modules/ROOT/partials/component-nav.adoc  |  2 +-
 .../modules/ROOT/partials/module-nav/catalogs.adoc |  8 -----
 .../ROOT/partials/module-nav/components.adoc       | 13 +++----
 .../ROOT/partials/module-nav/extensions.adoc       | 38 ++++++++++++++++++++
 .../modules/ROOT/partials/module-nav/guides.adoc   |  3 ++
 .../modules/applib-classes/pages/value-types.adoc  |  2 +-
 .../applib-classes/partials/module-nav.adoc        |  1 -
 .../modules/ROOT/pages/2020/2.0.0-M3/relnotes.adoc |  2 +-
 .../modules/ROOT/partials/extensions.adoc          |  2 +-
 antora/supplemental-ui/index.html                  |  3 +-
 extensions/adoc/antora.yml                         |  2 +-
 extensions/adoc/modules/ROOT/pages/about.adoc      | 11 +++---
 .../shiro-realm-ldap/partials/module-nav.adoc      |  2 +-
 .../vw/pdfjs/adoc/modules/pdfjs/pages/about.adoc   | 11 +++---
 .../adoc/modules/ROOT/partials/extensions.adoc     |  6 ++--
 .../adoc/modules/unittestsupport/pages/about.adoc  |  2 +-
 valuetypes/adoc/modules/ROOT/pages/about.adoc      |  2 +-
 .../pages/extending/replacing-page-elements.adoc   |  4 +--
 20 files changed, 104 insertions(+), 73 deletions(-)

diff --git a/antora/components/docs/modules/ROOT/pages/about.adoc b/antora/components/docs/modules/ROOT/pages/about.adoc
index db30fa2743..1214e9fb7d 100644
--- a/antora/components/docs/modules/ROOT/pages/about.adoc
+++ b/antora/components/docs/modules/ROOT/pages/about.adoc
@@ -60,6 +60,10 @@ _Core_
 * *xref:testing:ROOT:about.adoc[Testing Guide]*
 * *xref:security:ROOT:about.adoc[Security Guide]*
 
+_For use in apps_
+
+* xref:valuetypes:ROOT:about.adoc[Value Types]
+
 _Development_
 
 * xref:setupguide:ROOT:about.adoc[Setup Guide]
@@ -69,6 +73,13 @@ _Development_
 [discrete]
 == Components
 
+_Security_
+
+* xref:security:bypass:about.adoc[Bypass]
+* xref:security:shiro:about.adoc[Shiro]
+* xref:security:spring:about.adoc[Spring]
+* xref:security:keycloak:about.adoc[Keycloak]
+
 _Viewers_
 
 * xref:vw:ROOT:about.adoc[Web UI (Wicket)]
@@ -79,25 +90,31 @@ _Persistence_
 * xref:pjpa:ROOT:about.adoc[JPA (EclipseLink)]
 * xref:pjdo:ROOT:about.adoc[JDO (DataNucleus)]
 
-_Security_
-
-* xref:security:bypass:about.adoc[Bypass]
-* xref:security:shiro:about.adoc[Shiro]
-* xref:security:spring:about.adoc[Spring]
-* xref:security:keycloak:about.adoc[Keycloak]
-
 
 |
 [discrete]
-== Catalogs
+== (Common) Extensions
+
+
+_Core_
+
+** *xref:userguide:commandlog:about.adoc[]*
+** xref:userguide:executionoutbox:about.adoc[]
+** *xref:userguide:flyway:about.adoc[]*
+
+
+_Security_
 
-_For Use in Domain Apps_
+** *xref:security:secman:about.adoc[SecMan]*
+** *xref:security:audittrail:about.adoc[]*
+** xref:security:spring-oauth2:about.adoc[]
+** xref:security:sessionlog:about.adoc[]
 
-* *xref:valuetypes:ROOT:about.adoc[Value Type Catalog]*
 
-_Extending the framework itself_
+_Web UI (Wicket)_
 
-* *xref:extensions:ROOT:about.adoc[Extensions Catalog]*
+** *xref:vw:exceldownload:about.adoc[]*
+** *xref:vw:pdfjs:about.adoc[]*
 
 
 |
diff --git a/antora/components/docs/modules/ROOT/pages/landing-page/catalogs.adoc b/antora/components/docs/modules/ROOT/pages/landing-page/catalogs.adoc
deleted file mode 100644
index 27522a9468..0000000000
--- a/antora/components/docs/modules/ROOT/pages/landing-page/catalogs.adoc
+++ /dev/null
@@ -1,22 +0,0 @@
-= Catalogs
-
-: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 [...]
-
-The framework includes two catalogs:
-
-* xref:valuetypes:ROOT:about.adoc[Value Type Catalog]
-+
-The modules in this catalog provide implementations of various value types, for example Markdown.
-They are intended to be consumed by your application.
-+
-Each will have an applib submodule (for use within the domain logic) as well as various extension modules to be made available to the framework itself (to teach it how to persist or render the value type).
-
-* xref:extensions:ROOT:about.adoc[Extensions Catalog]
-+
-These modules in this catalog extend the capabilities of the framework itself.
-They are generally not consumed directly by your application.
-For example, the "Excel Download" extension allows collections to be downloaded as an Excel `.xlsx` spreadsheet in the Wicket viewer.
-+
-That said, some extensions do also provide an applib.
-For example the xref:vw:fullcalendar:about.adoc[fullcalendar] extension provides an applib so that domain objects can expose a date (typically a Java interface to be implemented); this allows the extension to plot them on a calendar.
-
diff --git a/antora/components/docs/modules/ROOT/partials/component-nav.adoc b/antora/components/docs/modules/ROOT/partials/component-nav.adoc
index 0f1f5f94d2..5f0dcc61b5 100644
--- a/antora/components/docs/modules/ROOT/partials/component-nav.adoc
+++ b/antora/components/docs/modules/ROOT/partials/component-nav.adoc
@@ -4,7 +4,7 @@ include::docs:ROOT:partial$module-nav/demos-and-tutorials.adoc[]
 include::docs:ROOT:partial$module-nav/resources.adoc[]
 include::docs:ROOT:partial$module-nav/guides.adoc[]
 include::docs:ROOT:partial$module-nav/components.adoc[]
-include::docs:ROOT:partial$module-nav/catalogs.adoc[]
+include::docs:ROOT:partial$module-nav/extensions.adoc[]
 include::docs:support:partial$module-nav.adoc[]
 include::docs:ROOT:partial$module-nav/framework.adoc[]
 include::docs:ROOT:partial$module-nav/further-resources.adoc[]
diff --git a/antora/components/docs/modules/ROOT/partials/module-nav/catalogs.adoc b/antora/components/docs/modules/ROOT/partials/module-nav/catalogs.adoc
deleted file mode 100644
index 4fd3b612f8..0000000000
--- a/antora/components/docs/modules/ROOT/partials/module-nav/catalogs.adoc
+++ /dev/null
@@ -1,8 +0,0 @@
-
-: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 [...]
-
-
-* Catalogs
-
-**  xref:valuetypes:ROOT:about.adoc[Value Type Catalog]
-**  xref:extensions:ROOT:about.adoc[Extensions Catalog]
diff --git a/antora/components/docs/modules/ROOT/partials/module-nav/components.adoc b/antora/components/docs/modules/ROOT/partials/module-nav/components.adoc
index 246b9c7725..b4e521a8e5 100644
--- a/antora/components/docs/modules/ROOT/partials/module-nav/components.adoc
+++ b/antora/components/docs/modules/ROOT/partials/module-nav/components.adoc
@@ -3,6 +3,13 @@
 
 * Components
 
+** Security
+
+*** xref:security:bypass:about.adoc[Bypass]
+*** xref:security:shiro:about.adoc[Shiro]
+*** xref:security:spring:about.adoc[Spring]
+*** xref:security:keycloak:about.adoc[Keycloak]
+
 ** Viewers
 
 *** xref:vw:ROOT:about.adoc[Web UI (Wicket)]
@@ -13,9 +20,3 @@
 *** xref:pjpa:ROOT:about.adoc[JPA (EclipseLink)]
 *** xref:pjdo:ROOT:about.adoc[JDO (DataNucleus)]
 
-** Security
-
-*** xref:security:bypass:about.adoc[Bypass]
-*** xref:security:shiro:about.adoc[Shiro]
-*** xref:security:spring:about.adoc[Spring]
-*** xref:security:keycloak:about.adoc[Keycloak]
diff --git a/antora/components/docs/modules/ROOT/partials/module-nav/extensions.adoc b/antora/components/docs/modules/ROOT/partials/module-nav/extensions.adoc
new file mode 100644
index 0000000000..9848c8d9d6
--- /dev/null
+++ b/antora/components/docs/modules/ROOT/partials/module-nav/extensions.adoc
@@ -0,0 +1,38 @@
+
+: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 [...]
+
+
+* Extensions
+
+** Core
+
+*** xref:userguide:commandlog:about.adoc[]
+*** xref:userguide:executionlog:about.adoc[]
+*** xref:userguide:executionoutbox:about.adoc[]
+*** xref:userguide:executionrepublisher:about.adoc[]
+*** xref:userguide:excel:about.adoc[]
+*** xref:userguide:flyway:about.adoc[]
+
+
+** Security
+
+*** xref:security:secman:about.adoc[]
+*** xref:security:audittrail:about.adoc[]
+*** xref:security:spring-oauth2:about.adoc[Spring OAuth2]
+*** xref:security:shiro-realm-ldap:about.adoc[LDAP Realm for Shiro]
+*** xref:security:sessionlog:about.adoc[]
+
+
+
+** _Web UI (Wicket viewer)_
+
+*** xref:vw:exceldownload:about.adoc[Excel Download]
+*** xref:vw:fullcalendar:about.adoc[Full Calendar]
+*** xref:vw:pdfjs:about.adoc[PDF.js]
+*** xref:vw:sse:about.adoc[Server Side Events]
+
+
+** _REST API (Restful Objects)_
+
+*** xref:vro:cors:about.adoc[CORS]
+
diff --git a/antora/components/docs/modules/ROOT/partials/module-nav/guides.adoc b/antora/components/docs/modules/ROOT/partials/module-nav/guides.adoc
index cbeaa5eb79..5fa03d7ed6 100644
--- a/antora/components/docs/modules/ROOT/partials/module-nav/guides.adoc
+++ b/antora/components/docs/modules/ROOT/partials/module-nav/guides.adoc
@@ -10,6 +10,9 @@
 *** xref:testing:ROOT:about.adoc[Testing Guide]
 *** xref:security:ROOT:about.adoc[Security Guide]
 
+** for use in apps
+***  xref:valuetypes:ROOT:about.adoc[Value Types]
+
 ** Development
 *** xref:setupguide:ROOT:about.adoc[Setup Guide]
 *** xref:conguide:ROOT:about.adoc[Contributors' Guide]
diff --git a/antora/components/refguide/modules/applib-classes/pages/value-types.adoc b/antora/components/refguide/modules/applib-classes/pages/value-types.adoc
index 2039158150..6baa60ebb5 100644
--- a/antora/components/refguide/modules/applib-classes/pages/value-types.adoc
+++ b/antora/components/refguide/modules/applib-classes/pages/value-types.adoc
@@ -53,4 +53,4 @@ The framework also defines a number of custom value types:
 * xref:refguide:applib:index/value/Password.adoc[Password]
 
 In addition, there are a number of non-core value types that can be brought in individually.
-These can be found in the xref:valuetypes:ROOT:about.adoc[Value Type Catalog].
+These can be found in the catalog of xref:valuetypes:ROOT:about.adoc[Value Types].
diff --git a/antora/components/refguide/modules/applib-classes/partials/module-nav.adoc b/antora/components/refguide/modules/applib-classes/partials/module-nav.adoc
index 9a8805fd08..29f289228e 100644
--- a/antora/components/refguide/modules/applib-classes/partials/module-nav.adoc
+++ b/antora/components/refguide/modules/applib-classes/partials/module-nav.adoc
@@ -19,7 +19,6 @@
 
 ** xref:applib-classes:utility.adoc[Utility Classes]
 *** xref:applib:index/util/Enums.adoc[Enums]
-*** xref:applib:index/util/JaxbUtil.adoc[JaxbUtil]
 *** xref:applib:index/util/ObjectContracts.adoc[ObjectContracts]
 *** xref:applib:index/util/Reasons.adoc[Reasons]
 *** xref:applib:index/util/ReasonBuffer.adoc[ReasonBuffer]
diff --git a/antora/components/relnotes/modules/ROOT/pages/2020/2.0.0-M3/relnotes.adoc b/antora/components/relnotes/modules/ROOT/pages/2020/2.0.0-M3/relnotes.adoc
index 2dd4a0f542..9634365556 100644
--- a/antora/components/relnotes/modules/ROOT/pages/2020/2.0.0-M3/relnotes.adoc
+++ b/antora/components/relnotes/modules/ROOT/pages/2020/2.0.0-M3/relnotes.adoc
@@ -28,7 +28,7 @@ This milestone also introduces a number of new features:
 * New extensions:
 ** xref:userguide:flyway:about.adoc[Flyway] (integrating with Spring Boot's support)
 ** xref:vro:cors:[CORS] for the REST API (xref:vro:ROOT:about.adoc[REST API (Restful Objects viewer)])
-** xref:vw:pdfjs:about.adoc[pdf.js] (for xref:vw:ROOT:about.adoc[Web UI (Wicket viewer)])
+** xref:vw:pdfjs:about.adoc[PDF.js] (for xref:vw:ROOT:about.adoc[Web UI (Wicket viewer)])
 ** xref:vw:fullcalendar:about.adoc[fullcalendar] (for xref:vw:ROOT:about.adoc[Web UI (Wicket viewer)])
 ** xref:vw:exceldownload:about.adoc[excel download] (for xref:vw:ROOT:about.adoc[Web UI (Wicket viewer)])
 
diff --git a/antora/components/userguide/modules/ROOT/partials/extensions.adoc b/antora/components/userguide/modules/ROOT/partials/extensions.adoc
index bbb33f79ee..b2e90c3368 100644
--- a/antora/components/userguide/modules/ROOT/partials/extensions.adoc
+++ b/antora/components/userguide/modules/ROOT/partials/extensions.adoc
@@ -1,7 +1,7 @@
 include::userguide:commandlog:partial$module-nav.adoc[]
-include::userguide:excel:partial$module-nav.adoc[]
 include::userguide:executionlog:partial$module-nav.adoc[]
 include::userguide:executionoutbox:partial$module-nav.adoc[]
 include::userguide:executionrepublisher:partial$module-nav.adoc[]
+include::userguide:excel:partial$module-nav.adoc[]
 include::userguide:flyway:partial$module-nav.adoc[]
 
diff --git a/antora/supplemental-ui/index.html b/antora/supplemental-ui/index.html
index 01fee003f8..1caedc266e 100644
--- a/antora/supplemental-ui/index.html
+++ b/antora/supplemental-ui/index.html
@@ -114,8 +114,9 @@
             <li><a href="docs/latest/about.html">Table of Contents</a></li>
             <li><hr/></li>
             <li><a href="docs/latest/landing-page/guides.html">Guides</a></li>
+            <li><a href="valuetypes/latest/about.html">Value Types</a></li>
             <li><a href="docs/latest/landing-page/components.html">Components</a></li>
-            <li><a href="docs/latest/landing-page/catalogs.html">Catalogs</a></li>
+            <li><a href="extensions/latest/about.html">Extensions</a></li>
           </ul>
         </li>
         <li class="menu-has-children">
diff --git a/extensions/adoc/antora.yml b/extensions/adoc/antora.yml
index 2dde8c1363..f8e2599875 100644
--- a/extensions/adoc/antora.yml
+++ b/extensions/adoc/antora.yml
@@ -16,7 +16,7 @@
 #  under the License.
 
 name: extensions
-title: "Extensions Catalog"
+title: "Extensions"
 version: latest
 start_page: ROOT:about.adoc
 nav:
diff --git a/extensions/adoc/modules/ROOT/pages/about.adoc b/extensions/adoc/modules/ROOT/pages/about.adoc
index c08acdef5b..62391a0d7c 100644
--- a/extensions/adoc/modules/ROOT/pages/about.adoc
+++ b/extensions/adoc/modules/ROOT/pages/about.adoc
@@ -1,4 +1,4 @@
-= Extensions Catalog
+= Extensions
 
 
 :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 [...]
@@ -25,14 +25,15 @@ include::security:ROOT:partial$extensions.adoc[]
 
 
 
-|xref:vro::about.adoc[Restful Objects] extensions:
+|xref:vw::about.adoc[Wicket viewer] extensions:
 
-include::vro:ROOT:partial$extensions.adoc[]
+include::vw:ROOT:partial$extensions.adoc[]
 
 
-|xref:vw::about.adoc[Wicket viewer] extensions:
+|xref:vro::about.adoc[Restful Objects] extensions:
+
+include::vro:ROOT:partial$extensions.adoc[]
 
-include::vw:ROOT:partial$extensions.adoc[]
 
 |===
 
diff --git a/extensions/security/shiro-realm-ldap/adoc/modules/shiro-realm-ldap/partials/module-nav.adoc b/extensions/security/shiro-realm-ldap/adoc/modules/shiro-realm-ldap/partials/module-nav.adoc
index 7251f6367a..5afe011462 100644
--- a/extensions/security/shiro-realm-ldap/adoc/modules/shiro-realm-ldap/partials/module-nav.adoc
+++ b/extensions/security/shiro-realm-ldap/adoc/modules/shiro-realm-ldap/partials/module-nav.adoc
@@ -1,4 +1,4 @@
 
 
 
-** xref:security:shiro-realm-ldap:about.adoc[Shiro LDAP Realm]
+** xref:security:shiro-realm-ldap:about.adoc[LDAP Realm for Shiro]
diff --git a/extensions/vw/pdfjs/adoc/modules/pdfjs/pages/about.adoc b/extensions/vw/pdfjs/adoc/modules/pdfjs/pages/about.adoc
index a774e1c6bd..463d9d9fd7 100644
--- a/extensions/vw/pdfjs/adoc/modules/pdfjs/pages/about.adoc
+++ b/extensions/vw/pdfjs/adoc/modules/pdfjs/pages/about.adoc
@@ -2,7 +2,7 @@
 
 :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 [...]
 
-The PDF.js module integrates with the xref:vw:ROOT:about.adoc[Wicket Viewer], rendering a `Blob` property containing a PDF using the link:https://mozilla.github.io/pdf.js/[pdf.js] library.
+The PDF.js module integrates with the xref:vw:ROOT:about.adoc[Wicket Viewer], rendering a `Blob` property containing a PDF using the link:https://mozilla.github.io/pdf.js/[PDF.js] library.
 
 
 == Usage
@@ -11,16 +11,17 @@ To use the extension, annotate an xref:refguide:applib:index/value/Blob.adoc[Blo
 
 For example:
 
-[source,xml]
-.pom.xml
+[source,java]
 ----
-@PdfJsViewer
+@PdfJsViewer            // <.>
 @Property()
 @PropertyLayout(fieldSetId = "content", sequence = "1")
 public Blob getAttachment() { ... }
 ----
 
-IMPORTANT: The `Blob` should only ever return a bytes that correspond to a PDF, with a mime type of "application/pdf".
+<.> indicates that the `Blob` returns a set of bytes that correspond to a PDF, and so should be rendered as such.
++
+NOTE: The `Blob` is expected also to have a mime type of `application/pdf`.
 
 Optionally, you can also provide an implementation of the xref:refguide:extensions:index/pdfjs/applib/spi/PdfJsViewerAdvisor.adoc[] SPI, which advises on the size of the viewer (and has callbacks to keep track of which page of the PDF is being viewed).
 The framework provides a fallback implementation that sets the height to 800px, and scaled to 75% normal size.
diff --git a/security/adoc/modules/ROOT/partials/extensions.adoc b/security/adoc/modules/ROOT/partials/extensions.adoc
index 4906738fd6..de7cb84bf0 100644
--- a/security/adoc/modules/ROOT/partials/extensions.adoc
+++ b/security/adoc/modules/ROOT/partials/extensions.adoc
@@ -1,6 +1,6 @@
-include::security:shiro-realm-ldap:partial$module-nav.adoc[]
-include::security:spring-oauth2:partial$module-nav.adoc[]
-include::security:secman:partial$module-nav.adoc[]
+** xref:security:secman:about.adoc[SecMan]
 include::security:audittrail:partial$module-nav.adoc[]
+include::security:spring-oauth2:partial$module-nav.adoc[]
+include::security:shiro-realm-ldap:partial$module-nav.adoc[]
 include::security:sessionlog:partial$module-nav.adoc[]
 
diff --git a/testing/unittestsupport/adoc/modules/unittestsupport/pages/about.adoc b/testing/unittestsupport/adoc/modules/unittestsupport/pages/about.adoc
index 43f08d3438..65997694f9 100644
--- a/testing/unittestsupport/adoc/modules/unittestsupport/pages/about.adoc
+++ b/testing/unittestsupport/adoc/modules/unittestsupport/pages/about.adoc
@@ -231,7 +231,7 @@ As here, it is often sufficient to provide a single instance (as it is compared
 
 === XML Marshalling Support
 
-Apache Causeway' unit testing support provides the xref:refguide:testing:index/unittestsupport/applib/matchers/JaxbMatchers.adoc[JaxbMatchers] while the core applib also provides the useful xref:refguide:applib:index/util/JaxbUtil.adoc[JaxbUtil] class.
+Apache Causeway' unit testing support provides the xref:refguide:testing:index/unittestsupport/applib/matchers/JaxbMatchers.adoc[JaxbMatchers] while the core applib also provides xref:refguide:applib:index/services/jaxb/JaxbService.adoc[JaxbService.Simple] service implementation.
 
 These can be useful for example if you have example XML-serialized representations of the SOAP requests and response payloads and want to use these within your tests.
 
diff --git a/valuetypes/adoc/modules/ROOT/pages/about.adoc b/valuetypes/adoc/modules/ROOT/pages/about.adoc
index 7962428e6f..579e378fdf 100644
--- a/valuetypes/adoc/modules/ROOT/pages/about.adoc
+++ b/valuetypes/adoc/modules/ROOT/pages/about.adoc
@@ -1,4 +1,4 @@
-= Value Type Catalog
+= Value Types
 
 :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 [...]
 
diff --git a/viewers/wicket/adoc/modules/ROOT/pages/extending/replacing-page-elements.adoc b/viewers/wicket/adoc/modules/ROOT/pages/extending/replacing-page-elements.adoc
index 4e41ef103e..dc26a12bc5 100644
--- a/viewers/wicket/adoc/modules/ROOT/pages/extending/replacing-page-elements.adoc
+++ b/viewers/wicket/adoc/modules/ROOT/pages/extending/replacing-page-elements.adoc
@@ -6,7 +6,7 @@
 
 
 Replacing elements of the page is the most powerful general-purpose way to customize the look-n-feel of the viewer.
-Examples include the xref:vw:fullcalendar:about.adoc[Fullcalendar], xref:vw:exceldownload:about.adoc[Excel Download] and xref:vw:pdfjs:about.adoc[pdf.js] components.
+Examples include the xref:vw:fullcalendar:about.adoc[Fullcalendar], xref:vw:exceldownload:about.adoc[Excel Download] and xref:vw:pdfjs:about.adoc[PDF.js] components.
 
 The pages generated by Apache Causeway' Wicket viewer are built up of numerous elements, from fine-grained widgets for property/parameter fields, to much larger components that take responsibility for rendering an entire entity, or a collection of entities.
 Under the covers these are all implementations of the the Apache Wicket `Component` API.
@@ -100,7 +100,7 @@ In the case of (either standalone or parented) collections, though, the viewer w
 For example, out-of-the-box Apache Causeway provides a table view, a summary view (totals/sums/averages of any data), and a collapsed view.
 These are selected by clicking on the toolbar by each collection.
 
-Additional views though could render the objects in the collection as a variety of ways; as illustrated by the xref:vw:pdfjs:about.adoc[pdf.js], xref:vw:fullcalendar:about.adoc[Fullcalendar] and xref:vw:exceldownload:about.adoc[Excel Download] extensions.
+Additional views though could render the objects in the collection as a variety of ways; as illustrated by the xref:vw:pdfjs:about.adoc[PDF.js], xref:vw:fullcalendar:about.adoc[Fullcalendar] and xref:vw:exceldownload:about.adoc[Excel Download] extensions.
 
 Wicket itself has lots of components available at its http://wicketstuff.org[wicketstuff.org] companion website; you might find some of these useful for your own customizations.
 


[causeway] 01/02: updates docs in demo app for @DomainObject#entityPropertyChange.

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 6bf275f2b813a2924262551540b7c4254d69ce6b
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Mar 21 09:55:24 2023 +0000

    updates docs in demo app for @DomainObject#entityPropertyChange.
---
 .../resources/MarkupVariableResolverService.java   | 58 ++++++++++++---
 .../_changes/ExposeCapturedChanges_clear.java      | 11 +--
 .../ExposeCapturedChanges_recentChanges.java       |  4 +-
 .../ExposePersistedCommands_commands.java          |  1 +
 ...utionListenerToCaptureInteractionsInMemory.java | 61 ---------------
 ...tions.java => ExposePersistedInteractions.java} |  2 +-
 ... ExposePersistedInteractions_interactions.java} | 16 ++--
 .../ExposePropertyChanges.java}                    | 33 ++------
 .../ExposePropertyChanges_propertyChanges.java}    | 27 +++----
 .../ActionCommandPublishingJdo-description.adoc    | 48 ++----------
 .../ActionCommandPublishingJpa-description.adoc    | 48 ++----------
 .../ActionExecutionPublishingEntity.java           |  4 +-
 .../ActionExecutionPublishingJdo-description.adoc  |  4 +-
 .../ActionExecutionPublishingJpa-description.adoc  |  4 +-
 .../DomainObjectEntityChangePublishingEntity.java  |  1 -
 ...ObjectEntityChangePublishingVm-description.adoc | 87 ++++++----------------
 .../DomainObjectEntityChangePublishingVm.java      |  3 +-
 ...omainObjectEntityChangePublishingVm_delete.java | 46 +++++++-----
 ...ObjectEntityChangePublishingDisabledEntity.java |  1 +
 ...hingVm_publishingDisabledAnnotatedEntities.java |  3 +
 ...ityChangePublishingDisabledJdo-description.adoc |  4 +-
 ...ityChangePublishingDisabledJpa-description.adoc |  4 +-
 ...shingVm_publishingEnabledAnnotatedEntities.java |  2 +
 ...tityChangePublishingEnabledJdo-description.adoc |  4 +-
 ...tityChangePublishingEnabledJpa-description.adoc |  4 +-
 ...ChangePublishingEnabledMetaAnnotatedEntity.java |  1 +
 ...gVm_publishingEnabledMetaAnnotatedEntities.java |  2 +
 ...lishingEnabledMetaAnnotatedJdo-description.adoc |  7 +-
 ...ityChangePublishingEnabledMetaAnnotatedJdo.java |  1 +
 ...lishingEnabledMetaAnnotatedJpa-description.adoc |  7 +-
 ...blishingEnabledMetaAnnotOverriddenEntities.java |  3 +
 ...gEnabledMetaAnnotOverriddenJdo-description.adoc | 16 ++--
 ...gEnabledMetaAnnotOverriddenJpa-description.adoc | 19 +++--
 .../DomainObjectMixinMethodVm-description.adoc     |  6 +-
 .../DomainObjectLifecyleEventsVm-description.adoc  |  6 +-
 .../PropertyCommandPublishingJdo-description.adoc  | 77 ++++++++++---------
 .../PropertyCommandPublishingJpa-description.adoc  | 22 +++---
 .../PropertyExecutionPublishingEntity.java         |  4 +-
 ...PropertyExecutionPublishingJdo-description.adoc |  8 +-
 ...PropertyExecutionPublishingJpa-description.adoc |  6 +-
 .../dom/homepage/DemoHomePage-description.adoc     |  2 +-
 .../src/main/java/demoapp/dom/menubars.layout.xml  | 82 ++++++++++----------
 .../src/main/resources/static/css/application.css  |  7 +-
 .../resources/ResourceReaderService_Test.java      |  8 +-
 .../src/main/resources/static/index.html           |  2 +
 .../src}/resources/static/index.html               |  2 +
 .../jpa/src/{ => main}/resources/log4j2-spring.xml |  0
 .../src/main/resources/static/index.html           |  2 +
 48 files changed, 325 insertions(+), 445 deletions(-)

diff --git a/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/MarkupVariableResolverService.java b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/MarkupVariableResolverService.java
index 5b0789022b..82f80a009b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/MarkupVariableResolverService.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/_infra/resources/MarkupVariableResolverService.java
@@ -18,38 +18,72 @@
  */
 package demoapp.dom._infra.resources;
 
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.apache.causeway.commons.internal.collections._Maps;
+import org.springframework.core.env.Environment;
 import org.springframework.stereotype.Service;
 
 import org.apache.causeway.commons.internal.base._Refs;
-import org.apache.causeway.commons.internal.collections._Maps;
 import org.apache.causeway.core.config.CausewayConfiguration;
 
 import lombok.val;
 
+import static org.apache.causeway.commons.internal.collections._Maps.newLinkedHashMap;
+
 @Service
 @Named("demo.MarkupVariableResolverService")
 public class MarkupVariableResolverService {
 
     private final Map<String, String> constants;
 
+
     @Inject
-    public MarkupVariableResolverService(final CausewayConfiguration configuration) {
-        constants = _Maps.unmodifiable(
-                "SOURCES_CAUSEWAY", "https://github.com/apache/causeway/blob/master/core/applib/src/main/java",
-                "SOURCES_DEMO", "https://github.com/apache/causeway/tree/master/examples/demo/domain/src/main/java",
-                "ISSUES_DEMO", "https://issues.apache.org/jira/",
-                "CAUSEWAY_VERSION", Optional.ofNullable(
-                        configuration.getViewer().getCommon().getApplication().getVersion())
-                        .orElse("unkown-version")
-            );
+    public MarkupVariableResolverService(final CausewayConfiguration configuration, final Environment environment) {
+        constants = computeConstants(configuration, environment);
+    }
+
+    private static Map<String, String> computeConstants(CausewayConfiguration configuration, Environment environment) {
+
+        val map = _Maps.<String,String>newLinkedHashMap();
+        val orm = determineOrmProfileFrom(environment);
+
+        map.put("SOURCES_CAUSEWAY", "https://github.com/apache/causeway/blob/master/core/applib/src/main/java");
+        map.put("SOURCES_DEMO", "https://github.com/apache/causeway/tree/master/examples/demo/domain/src/main/java");
+        map.put("ISSUES_DEMO", "https://issues.apache.org/jira/");
+        map.put("CAUSEWAY_VERSION", determineCausewayVersion(configuration));
+        map.put("ORM_TITLECASE", titleCase(orm));
+        map.put("ORM_LOWERCASE", orm.toLowerCase());
+
+        return Collections.unmodifiableMap(map);
     }
 
+    private static String determineCausewayVersion(CausewayConfiguration configuration) {
+        return Optional.ofNullable(configuration.getViewer().getCommon().getApplication().getVersion())
+                .orElse("unknown-version");
+    }
+
+    private static String determineOrmProfileFrom(Environment environment) {
+        val activeProfiles = Arrays.asList(environment.getActiveProfiles());
+        if(activeProfiles.contains("demo-jpa")) {
+            return "jpa";
+        }
+        if(activeProfiles.contains("demo-jdo")) {
+            return "jdo";
+        }
+        throw new IllegalStateException("Could not determine ORM");
+    }
+
+    private static String titleCase(String str) {
+        return str.substring(0,1).toUpperCase() + str.substring(1).toLowerCase(Locale.ROOT);
+    }
+
+
+
+
     /**
      * For the given {@code input} replaces '${var-name}' with the variable's value.
      * @param input
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/_changes/ExposeCapturedChanges_clear.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/_changes/ExposeCapturedChanges_clear.java
index 409db70862..d044d732cb 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/_changes/ExposeCapturedChanges_clear.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/_changes/ExposeCapturedChanges_clear.java
@@ -25,30 +25,27 @@ import org.apache.causeway.applib.annotation.ActionLayout;
 import org.apache.causeway.applib.annotation.SemanticsOf;
 
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingVm;
+import lombok.RequiredArgsConstructor;
 
+@SuppressWarnings("CdiManagedBeanInconsistencyInspection")
 //tag::class[]
 @Action(
     semantics = SemanticsOf.IDEMPOTENT)
 @ActionLayout(
     associateWith = "changes")
+@RequiredArgsConstructor
 public class ExposeCapturedChanges_clear {
     // ...
 //end::class[]
 
     private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
 
-    public ExposeCapturedChanges_clear(DomainObjectEntityChangePublishingVm domainObjectAuditingVm) {
-        this.domainObjectAuditingVm = domainObjectAuditingVm;
-    }
-
-
     //tag::class[]
     public DomainObjectEntityChangePublishingVm act() {
         entityChangesSubscriberToCaptureChangesInMemory.clear();
         return domainObjectAuditingVm;
     }
 
-    @Inject
-    EntityChangesSubscriberToCaptureChangesInMemory entityChangesSubscriberToCaptureChangesInMemory;;
+    @Inject EntityChangesSubscriberToCaptureChangesInMemory entityChangesSubscriberToCaptureChangesInMemory;;
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/_changes/ExposeCapturedChanges_recentChanges.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/_changes/ExposeCapturedChanges_recentChanges.java
index 8d6f7f8d72..7b17f9cc5a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/_changes/ExposeCapturedChanges_recentChanges.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/_changes/ExposeCapturedChanges_recentChanges.java
@@ -29,6 +29,7 @@ import org.apache.causeway.applib.annotation.MemberSupport;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+@SuppressWarnings("CdiManagedBeanInconsistencyInspection")
 //tag::class[]
 @Collection
 @RequiredArgsConstructor
@@ -50,7 +51,6 @@ public class ExposeCapturedChanges_recentChanges {
         return list;
     }
 
-    @Inject
-    EntityChangesSubscriberToCaptureChangesInMemory entityChangesSubscriberToCaptureChangesInMemory;
+    @Inject EntityChangesSubscriberToCaptureChangesInMemory entityChangesSubscriberToCaptureChangesInMemory;
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/_commands/ExposePersistedCommands_commands.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/_commands/ExposePersistedCommands_commands.java
index f26bb8eb50..7e09d3cd2c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/_commands/ExposePersistedCommands_commands.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/_commands/ExposePersistedCommands_commands.java
@@ -29,6 +29,7 @@ import org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntryRepos
 
 import lombok.RequiredArgsConstructor;
 
+@SuppressWarnings("CdiManagedBeanInconsistencyInspection")
 //tag::class[]
 @Collection
 @CollectionLayout(defaultView = "table")
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExecutionListenerToCaptureInteractionsInMemory.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExecutionListenerToCaptureInteractionsInMemory.java
deleted file mode 100644
index 072477c746..0000000000
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExecutionListenerToCaptureInteractionsInMemory.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *  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 agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package demoapp.dom.domain._interactions;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Stream;
-
-import org.springframework.stereotype.Service;
-
-import org.apache.causeway.applib.services.iactn.Execution;
-import org.apache.causeway.applib.services.publishing.spi.ExecutionSubscriber;
-import org.apache.causeway.applib.util.schema.InteractionDtoUtils;
-import org.apache.causeway.schema.ixn.v2.InteractionDto;
-
-import lombok.val;
-
-//tag::class[]
-@Service
-public class ExecutionListenerToCaptureInteractionsInMemory implements ExecutionSubscriber {
-
-    private final List<InteractionDto> executions = new ArrayList<>();
-
-    @Override
-    public void onExecution(Execution<?, ?> execution) {
-        val dto = InteractionDtoUtils.newInteractionDto(            // <.>
-                    execution, InteractionDtoUtils.Strategy.DEEP);
-        executions.add(dto);
-    }
-    // ...
-//end::class[]
-
-//tag::demo[]
-    public Stream<InteractionDto> streamInteractionDtos() {
-        return executions.stream();
-    }
-
-    public void clear() {
-        executions.clear();
-    }
-//end::demo[]
-
-//tag::class[]
-}
-//end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposeCapturedInteractions.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposePersistedInteractions.java
similarity index 95%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposeCapturedInteractions.java
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposePersistedInteractions.java
index 84fc218d1d..69da83967b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposeCapturedInteractions.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposePersistedInteractions.java
@@ -22,6 +22,6 @@ package demoapp.dom.domain._interactions;
  * Marker interface for mixins to contribute to.
  */
 //tag::class[]
-public interface ExposeCapturedInteractions {
+public interface ExposePersistedInteractions {
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposeCapturedInteractions_interactions.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposePersistedInteractions_interactions.java
similarity index 69%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposeCapturedInteractions_interactions.java
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposePersistedInteractions_interactions.java
index be7c5ff9ce..15ad10754d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposeCapturedInteractions_interactions.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposePersistedInteractions_interactions.java
@@ -24,30 +24,34 @@ import java.util.List;
 import javax.inject.Inject;
 
 import org.apache.causeway.applib.annotation.Collection;
+import org.apache.causeway.extensions.executionlog.applib.dom.ExecutionLogEntry;
+import org.apache.causeway.extensions.executionlog.applib.dom.ExecutionLogEntryRepository;
 
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+@SuppressWarnings("CdiManagedBeanInconsistencyInspection")
 //tag::class[]
 @Collection
 @RequiredArgsConstructor
-public class ExposeCapturedInteractions_interactions {
+public class ExposePersistedInteractions_interactions {
     // ...
 //end::class[]
 
-    private final ExposeCapturedInteractions exposeCapturedInteractions;
+    @SuppressWarnings("unused")
+    private final ExposePersistedInteractions exposePersistedInteractions;
 
 //tag::class[]
     public List<InteractionDtoVm> coll() {
         val list = new LinkedList<InteractionDtoVm>();
-        executionListenerToCaptureInteractionsInMemory
-                .streamInteractionDtos()
+        executionLogEntryRepository.findAll()
+                .stream()
+                .map(x -> x.getInteractionDto())
                 .map(InteractionDtoVm::new)
                 .forEach(list::push);   // reverse order
         return list;
     }
 
-    @Inject
-    ExecutionListenerToCaptureInteractionsInMemory executionListenerToCaptureInteractionsInMemory;
+    @Inject ExecutionLogEntryRepository<? extends ExecutionLogEntry> executionLogEntryRepository;
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposeCapturedInteractions_clear.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/_propertychanges/ExposePropertyChanges.java
similarity index 50%
rename from examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposeCapturedInteractions_clear.java
rename to examples/demo/domain/src/main/java/demoapp/dom/domain/_propertychanges/ExposePropertyChanges.java
index 2b9b0a5f38..b8156a66a7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/_interactions/ExposeCapturedInteractions_clear.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/_propertychanges/ExposePropertyChanges.java
@@ -16,35 +16,12 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.domain._interactions;
-
-import javax.inject.Inject;
-
-import org.apache.causeway.applib.annotation.Action;
-import org.apache.causeway.applib.annotation.ActionLayout;
-import org.apache.causeway.applib.annotation.SemanticsOf;
-
-import lombok.RequiredArgsConstructor;
-
-//tag::class[]
-@Action(
-    semantics = SemanticsOf.IDEMPOTENT)
-@ActionLayout(
-    associateWith = "interactions")
-@RequiredArgsConstructor
-public class ExposeCapturedInteractions_clear {
-    // ...
-//end::class[]
-
-    private final ExposeCapturedInteractions exposeCapturedInteractions;
+package demoapp.dom.domain._propertychanges;
 
+/**
+ * Marker interface for mixins to contribute to.
+ */
 //tag::class[]
-    public ExposeCapturedInteractions act() {
-        executionListenerToCaptureInteractionsInMemory.clear();
-        return exposeCapturedInteractions;
-    }
-
-    @Inject
-    ExecutionListenerToCaptureInteractionsInMemory executionListenerToCaptureInteractionsInMemory;
+public interface ExposePropertyChanges {
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/_changes/ExposeCapturedChanges_recentChanges.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/_propertychanges/ExposePropertyChanges_propertyChanges.java
similarity index 66%
copy from examples/demo/domain/src/main/java/demoapp/dom/domain/_changes/ExposeCapturedChanges_recentChanges.java
copy to examples/demo/domain/src/main/java/demoapp/dom/domain/_propertychanges/ExposePropertyChanges_propertyChanges.java
index 8d6f7f8d72..bc4fd0a6e3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/_changes/ExposeCapturedChanges_recentChanges.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/_propertychanges/ExposePropertyChanges_propertyChanges.java
@@ -16,41 +16,36 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package demoapp.dom.domain._changes;
+package demoapp.dom.domain._propertychanges;
+
+import lombok.RequiredArgsConstructor;
 
-import java.util.LinkedList;
 import java.util.List;
 
 import javax.inject.Inject;
 
 import org.apache.causeway.applib.annotation.Collection;
 import org.apache.causeway.applib.annotation.MemberSupport;
+import org.apache.causeway.extensions.audittrail.applib.dom.AuditTrailEntry;
+import org.apache.causeway.extensions.audittrail.applib.dom.AuditTrailEntryRepository;
 
-import lombok.RequiredArgsConstructor;
-import lombok.val;
-
+@SuppressWarnings("CdiManagedBeanInconsistencyInspection")
 //tag::class[]
 @Collection
 @RequiredArgsConstructor
-public class ExposeCapturedChanges_recentChanges {
+public class ExposePropertyChanges_propertyChanges {
     // ...
 //end::class[]
 
     @SuppressWarnings("unused")
-    private final ExposeCapturedChanges exposeCapturedChanges;
+    private final ExposePropertyChanges exposeexposePropertyChanges;
 
     @MemberSupport
 //tag::class[]
-    public List<ChangesVm> coll() {
-        val list = new LinkedList<ChangesVm>();
-        entityChangesSubscriberToCaptureChangesInMemory
-                .streamChangedEntities()
-                .map(ChangesVm::new)
-                .forEach(list::push);   // reverse order
-        return list;
+    public List<? extends AuditTrailEntry> coll() {
+        return auditTrailEntryRepository.findAll();
     }
 
-    @Inject
-    EntityChangesSubscriberToCaptureChangesInMemory entityChangesSubscriberToCaptureChangesInMemory;
+    @Inject AuditTrailEntryRepository<? extends AuditTrailEntry> auditTrailEntryRepository;
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jdo/ActionCommandPublishingJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jdo/ActionCommandPublishingJdo-description.adoc
index 45bbc60868..e923b678ab 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jdo/ActionCommandPublishingJdo-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jdo/ActionCommandPublishingJdo-description.adoc
@@ -1,20 +1,20 @@
 :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 [...]
 
-The `command` element is used to allow or suppress the reification of an action invocation into a xref:refguide:applib:index/services/command/Command.adoc[Command].
+The `command` element is used to allow or suppress the reification of an action invocation into a https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command].
 
-When allowed (the default), then the xref:refguide:applib:index/services/command/Command.adoc[Command] is sent to registered implementation(s) of https://causeway.apache.org/refguide/2.0.0-M3/applib-svc/CommandServiceListener.html#section-top[CommandServiceListener] SPI, _after_ the interaction has completed.
+When allowed (the default), then the https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command] is sent to registered implementation(s) of https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/CommandSubscriber.html SPI, _after_ the interaction has completed.
 One use case is to replicate and replay commands to a secondary system, for example for regression testing.
 For more on this, see the "Command Replay" section below.
 
-Commands are also used under the covers to allow actions invocations to be made asynchronously using the link:https://causeway.apache.org/refguide/2.0.0-M3/applib-svc/WrapperFactory.html[WrapperFactory].
+Commands are also used under the covers to allow actions invocations to be made asynchronously using the https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/wrapper/WrapperFactory.html[WrapperFactory].
 This can be useful for long-running actions.
 
 [NOTE]
 ====
-The list of persisted xref:refguide:applib:index/services/command/Command.adoc[Command]s can be viewed in a collection on the left bottom of this page.
-xref:refguide:applib:index/services/command/Command.adoc[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
+The list of persisted https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s can be viewed in a collection on the left bottom of this page.
+https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
 
-If running in prototype mode, the list of persisted xref:refguide:applib:index/services/command/Command.adoc[Command]s can also be truncated from the activity menu.
+If running in prototype mode, the list of persisted https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s can also be truncated from the activity menu.
 ====
 
 == Annotated
@@ -111,9 +111,9 @@ include::../ActionCommandPublishingEntity_mixinUpdatePropertyMetaAnnotationOverr
 
 == CommandSubscriber
 
-The demo includes the link:https://causeway.apache.org/extensions/2.0.0-M3/commandlog/about.html[Command Log] extension, so every command is persisted.
+The demo includes the link:https://causeway.apache.org/userguide/${CAUSEWAY_VERSION}/commandlog/about.html[Command Log] extension, so every command is persisted.
 These can be viewed in the collection at the left bottom of the page.
-xref:refguide:applib:index/services/command/Command.adoc[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
+https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
 
 
 == Configuration
@@ -135,35 +135,3 @@ In addition to globally enabling or disabling command reification, it is also po
 This enables commands for all actions except those that have safe (that is, query-only) semantics.
 In other words actions are reified to commands except for those that don't change (aren't declared as changing) the state of the system.
 
-//
-// command replay moved to the incubator for the time being
-//
-//== Command Replay
-//
-//The link:https://causeway.apache.org/extensions/2.0.0-M3/commandlog/about.html[Command Log] extension provides an implementation of `CommandServiceListener` to allow xref:refguide:applib:index/services/command/Command.adoc[Command]s to be persisted.
-//It also provides a RESTful endpoint to allow xref:refguide:applib:index/services/command/Command.adoc[Command]s to be queried.
-//This is used by the link:https://causeway.apache.org/extensions/2.0.0-M3/commandreplay/about.html[Command Replay] extension to allow commands to be replayed on a secondary system, for regression testing.
-//
-//The associated `commandDtoProcessor()` element allows the xref:refguide:applib:index/services/command/Command.adoc[Command] XML representation (as a `CommandDto`) to be processed before being surfaced through the REST endpoint.
-//One use case is to allow data to be obfuscated for security, or to replace large payloads (such as Blobs) with a smaller dummy payload.
-//As well as specifying DTO processing at the action level, it can be specified globally by implementing the link:https://causeway.apache.org/refguide/2.0.0-M3/applib-svc/CommandDtoProcessorService.html[CommandDtoProcessorService] SPI.
-//
-//The command replay can be demonstrated by running a second instance of the demo app, using the "secondary" Spring Boot profile.
-//This is most easily done by specifying a system property:
-//
-//    -Dspring.profiles.active=secondary
-//
-//This activates the `application-secondary.properties` configuration file:
-//
-//[source,properties]
-//----
-//causeway.extensions.commandreplay.primary-access.base-url-restful=http://localhost:8080/restful/
-//causeway.extensions.commandreplay.primary-access.user=sven
-//causeway.extensions.commandreplay.primary-access.password=pass
-//causeway.extensions.commandreplay.primary-access.base-url-wicket=http://localhost:8080/wicket/
-//
-//server.port=9090
-//----
-//
-//The secondary instance of demoapp is accessible at link:http://localhost:9090[].
-//Since both primary and secondary start with the same initial state, any commands executed on the primary are replicated to the secondary and result in the same changes of state.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jpa/ActionCommandPublishingJpa-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jpa/ActionCommandPublishingJpa-description.adoc
index 1badd95913..93bbce0992 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jpa/ActionCommandPublishingJpa-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/commandPublishing/jpa/ActionCommandPublishingJpa-description.adoc
@@ -1,20 +1,20 @@
 :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 [...]
 
-The `command` element is used to allow or suppress the reification of an action invocation into a xref:refguide:applib:index/services/command/Command.adoc[Command].
+The `command` element is used to allow or suppress the reification of an action invocation into a https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command].
 
-When allowed (the default), then the xref:refguide:applib:index/services/command/Command.adoc[Command] is sent to registered implementation(s) of https://causeway.apache.org/refguide/2.0.0-M3/applib-svc/CommandServiceListener.html#section-top[CommandServiceListener] SPI, _after_ the interaction has completed.
+When allowed (the default), then the https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command] is sent to registered implementation(s) of https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/CommandServiceListener.html#section-top[CommandServiceListener] SPI, _after_ the interaction has completed.
 One use case is to replicate and replay commands to a secondary system, for example for regression testing.
 For more on this, see the "Command Replay" section below.
 
-Commands are also used under the covers to allow actions invocations to be made asynchronously using the link:https://causeway.apache.org/refguide/2.0.0-M3/applib-svc/WrapperFactory.html[WrapperFactory].
+Commands are also used under the covers to allow actions invocations to be made asynchronously using the link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/wrapper/WrapperFactory.html[WrapperFactory].
 This can be useful for long-running actions.
 
 [NOTE]
 ====
-The list of persisted xref:refguide:applib:index/services/command/Command.adoc[Command]s can be viewed in a collection on the left bottom of this page.
-xref:refguide:applib:index/services/command/Command.adoc[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
+The list of persisted https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s can be viewed in a collection on the left bottom of this page.
+https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
 
-If running in prototype mode, the list of persisted xref:refguide:applib:index/services/command/Command.adoc[Command]s can also be truncated from the activity menu.
+If running in prototype mode, the list of persisted https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s can also be truncated from the activity menu.
 ====
 
 == Annotated
@@ -111,9 +111,9 @@ include::../ActionCommandPublishingEntity_mixinUpdatePropertyMetaAnnotationOverr
 
 == CommandSubscriber
 
-The demo includes the link:https://causeway.apache.org/extensions/2.0.0-M3/commandlog/about.html[Command Log] extension, so every command is persisted.
+The demo includes the link:https://causeway.apache.org/userguide/${CAUSEWAY_VERSION}/commandlog/about.html extension, so every command is persisted.
 These can be viewed in the collection at the left bottom of the page.
-xref:refguide:applib:index/services/command/Command.adoc[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
+https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
 
 
 == Configuration
@@ -135,35 +135,3 @@ In addition to globally enabling or disabling command reification, it is also po
 This enables commands for all actions except those that have safe (that is, query-only) semantics.
 In other words actions are reified to commands except for those that don't change (aren't declared as changing) the state of the system.
 
-//
-// command replay moved to the incubator for the time being
-//
-//== Command Replay
-//
-//The link:https://causeway.apache.org/extensions/2.0.0-M3/commandlog/about.html[Command Log] extension provides an implementation of `CommandServiceListener` to allow xref:refguide:applib:index/services/command/Command.adoc[Command]s to be persisted.
-//It also provides a RESTful endpoint to allow xref:refguide:applib:index/services/command/Command.adoc[Command]s to be queried.
-//This is used by the link:https://causeway.apache.org/extensions/2.0.0-M3/commandreplay/about.html[Command Replay] extension to allow commands to be replayed on a secondary system, for regression testing.
-//
-//The associated `commandDtoProcessor()` element allows the xref:refguide:applib:index/services/command/Command.adoc[Command] XML representation (as a `CommandDto`) to be processed before being surfaced through the REST endpoint.
-//One use case is to allow data to be obfuscated for security, or to replace large payloads (such as Blobs) with a smaller dummy payload.
-//As well as specifying DTO processing at the action level, it can be specified globally by implementing the link:https://causeway.apache.org/refguide/2.0.0-M3/applib-svc/CommandDtoProcessorService.html[CommandDtoProcessorService] SPI.
-//
-//The command replay can be demonstrated by running a second instance of the demo app, using the "secondary" Spring Boot profile.
-//This is most easily done by specifying a system property:
-//
-//    -Dspring.profiles.active=secondary
-//
-//This activates the `application-secondary.properties` configuration file:
-//
-//[source,properties]
-//----
-//causeway.extensions.commandreplay.primary-access.base-url-restful=http://localhost:8080/restful/
-//causeway.extensions.commandreplay.primary-access.user=sven
-//causeway.extensions.commandreplay.primary-access.password=pass
-//causeway.extensions.commandreplay.primary-access.base-url-wicket=http://localhost:8080/wicket/
-//
-//server.port=9090
-//----
-//
-//The secondary instance of demoapp is accessible at link:http://localhost:9090[].
-//Since both primary and secondary start with the same initial state, any commands executed on the primary are replicated to the secondary and result in the same changes of state.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity.java
index 4acbff16e7..5414821f43 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/ActionExecutionPublishingEntity.java
@@ -24,14 +24,14 @@ import org.apache.causeway.applib.annotation.DomainObject;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolder;
-import demoapp.dom.domain._interactions.ExposeCapturedInteractions;
+import demoapp.dom.domain._interactions.ExposePersistedInteractions;
 
 @Named("demo.ActionExecutionPublishingEntity") // shared permissions with concrete sub class
 @DomainObject
 public abstract class ActionExecutionPublishingEntity
 implements
     HasAsciiDocDescription,
-    ExposeCapturedInteractions,
+        ExposePersistedInteractions,
     ValueHolder<String> {
 
     @Override
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jdo/ActionExecutionPublishingJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jdo/ActionExecutionPublishingJdo-description.adoc
index 92e22cfa52..5d7ebaa626 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jdo/ActionExecutionPublishingJdo-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jdo/ActionExecutionPublishingJdo-description.adoc
@@ -2,13 +2,13 @@
 
 WARNING: TODO publishing was renamed to executionPublishing
 
-The `publishing` element specifies that the invocation of an object action should be published to registered implementation(s) of link:https://causeway.apache.org/refguide/2.0.0-M3/applib-svc/PublisherService.html#spi[`PublisherService` SPI].
+The `publishing` element specifies that the invocation of an object action should be published to registered implementation(s) of link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/ExecutionSubscriber.html#spi[`ExecutionSubscriber` SPI].
 
 This is performed _after_ the action has been invoked.
 
 The publishing from the framework to the SPI is in-memory.
 A typical SPI implementation would then publish over the network, or perhaps store in a database.
-(Note that the framework provides an link:https://causeway.apache.org/mappings/2.0.0-M3/outbox-publisher/about.html[out-of-the-box implementation] of the link:https://microservices.io/patterns/data/transactional-outbox.html[outbox pattern]).
+(Note that the framework provides an link:https://causeway.apache.org/userguide/${CAUSEWAY_VERSION}/executionoutbox/about.html[out-of-the-box implementation] of the link:https://microservices.io/patterns/data/transactional-outbox.html[outbox pattern]).
 
 The element can be specified using either the `@Action` annotation, or through a meta-annotation.
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jpa/ActionExecutionPublishingJpa-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jpa/ActionExecutionPublishingJpa-description.adoc
index 2aadfdfb44..18e17faa99 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jpa/ActionExecutionPublishingJpa-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/actions/Action/executionPublishing/jpa/ActionExecutionPublishingJpa-description.adoc
@@ -2,13 +2,13 @@
 
 WARNING: TODO publishing was renamed to executionPublishing
 
-The `publishing` element specifies that the invocation of an object action should be published to registered implementation(s) of link:https://causeway.apache.org/refguide/2.0.0-M3/applib-svc/PublisherService.html#spi[`PublisherService` SPI].
+The `publishing` element specifies that the invocation of an object action should be published to registered implementation(s) of link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/ExecutionSubscriber.html#spi[`ExecutionSubscriber` SPI].
 
 This is performed _after_ the action has been invoked.
 
 The publishing from the framework to the SPI is in-memory.
 A typical SPI implementation would then publish over the network, or perhaps store in a database.
-(Note that the framework provides an link:https://causeway.apache.org/mappings/2.0.0-M3/outbox-publisher/about.html[out-of-the-box implementation] of the link:https://microservices.io/patterns/data/transactional-outbox.html[outbox pattern]).
+(Note that the framework provides an link:https://causeway.apache.org/userguide/${CAUSEWAY_VERSION}/executionoutbox/about.html[out-of-the-box implementation] of the link:https://microservices.io/patterns/data/transactional-outbox.html[outbox pattern]).
 
 The element can be specified using either the `@Action` annotation, or through a meta-annotation.
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingEntity.java
index 7baa999cf4..7ab2574ecd 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingEntity.java
@@ -32,7 +32,6 @@ import demoapp.dom.domain._changes.ExposeCapturedChanges;
 public abstract class DomainObjectEntityChangePublishingEntity
 implements
     HasAsciiDocDescription,
-    ExposeCapturedChanges,
     ValueHolder<String> {
 
     @Override
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm-description.adoc
index 0ddc81656a..26d3624260 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm-description.adoc
@@ -1,20 +1,13 @@
 :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 [...]
 
-WARNING: TODO: was renamed/moved from auditing+publishing to entityChangePublishing
-
-The `entityChangePublishing` element for a domain object means that all registered implementation(s) of the (internal) xref:refguide:core:index/metamodel/services/publishing/ExecutionPublisher.adoc[ExecutionPublisher]
-
-link:https://causeway.apache.org/refguide/2.0.0-M3/applib-svc/PublisherService.html#spi[`PublisherService` SPI] will be notified of the identity and nature of the change (created/updated/deleted) to the domain object.
-
-:examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/DomainObjectPublishingVm-description.adoc
-This is done _after_ the interaction in which the object(s) was changed has completed.
+The `entityChangePublishing` element for a domain object means that all registered implementation(s) of the link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/EntityChangesSubscriber.html#spi[EntityChangesSubscriber] SPI will be notified of the identity and nature of the change (created/updated/deleted) to each modified domain objects.
+This is provided in the https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/schema/chg.html[ChangesDto], obtained from the  link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/EntityChanges.html[`EntityChanges`] parameter of the callback.
 
 This notification is done only once per interaction, so will include _all_ domain objects that were changed.
-The event object can be converted to type xref:https://causeway.apache.org/refguide/2.0.0-M3/schema/chg.html[ChangesDto].
+The event object can be converted to type .
 
 Common use cases are to replicate data to another system, or for gathering metrics ("which objects change the most?").
 A typical SPI implementation could publish the event over the network, or perhaps store in a database.
-(Note that the framework provides an link:https://causeway.apache.org/mappings/2.0.0-M3/outbox-publisher/about.html[out-of-the-box implementation] of the link:https://microservices.io/patterns/data/transactional-outbox.html[outbox pattern]).
 
 The element can be specified using either the `@DomainObject` annotation, or through a meta-annotation.
 
@@ -23,68 +16,32 @@ NOTE: Publishing of domain objects is only supported for domain entities, not vi
 
 == Explanation of the Demo
 
-The demo provides a view model which can be used to create, update or delete four variations of a domain entity:
+This current page is a view model which has four collections of entities, each a different annotations:
+
+* annotated using `@DomainObject(entityChangePublishing=...)` as enabled
+
+* annotated using `@DomainObject(entityChangePublishing=...)` as disabled
 
-* annotated using `@DomainObject(entityChangePublishing=...)` for both enabled and disabled
 * meta-annotated as enabled
+
 * meta-annotated as disabled, but then overridden
 
-These can be updated using the view model's `create`, `update all` and `delete` actions, generating publishing events.
-
-TIP: Click through to the entity objects to see examples of the annotations applied.
-
-
-//
-// to fix up
-//
-//== ExecutionSubscriber
-//
-//The demo also has a simple implementation of `ExecutionSubscriber` that just stores the DTOs in memory:
-//
-//[source,java]
-//----
-//include::spiimpl/PublisherServiceSpiForDomainObject.java[tags=class]
-//----
-//<.> serializes to `ChangesDto`, as defined by the link:https://causeway.apache.org/refguide/2.0.0-M3/schema/chg.html[Apache Causeway schema].
-//
-//The demo implementation also provides a way to query these executions:
-//
-//[source,java,indent=0]
-//----
-//include::spiimpl/PublisherServiceSpiForDomainObject.java[tags=demo]
-//----
-//
-//Supporting mixins surface this list as contributions on the object:
-//
-//* `publishedObjects` collection:
-//+
-//[source,java,indent=0]
-//----
-//include::spiimpl/DomainObjectPublishingVm_publishedObjects.java[tags=class]
-//----
-//
-//* `clearPublishedObjects` action:
-//+
-//[source,java,indent=0]
-//----
-//include::spiimpl/DomainObjectPublishingVm_clearPublishedObjects.java[tags=class]
-//----
-//
-//
-//For the three (of the four in total) domain entities where publishing is enabled, this collection should be appended to when the `create`, `update all` or `delete` actions are invoked.
-//
-//[NOTE]
-//====
-//Because the `Publisher` is notified after the interaction has completed, it's necessary to refresh the page to see the collection of changes being updated.
-//
-//This can be done simply by clicking on the view model's title.
-//====
+Navigate into each of the domain entities to see the code examples.
+
+Using this view model, you can use the `create` action to create an instance for each of the four variations.
+With the `update all` action, you can update each of the instances.
+Or, with the `delete` action you can delete the first entity in each collection.
+You can also update an individual entity by drilling through to it and invoking its action.
+
+The demo includes an implementation of link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/EntityChangesSubscriber.html#spi[EntityChangesSubscriber] that captures changes and simply holds them in-memory.
+To observe these captured changes that have been made, just scroll down on this page and inspect the "changes" collection.
+(There will be some anyway from the fixture scripts run when the application first bootstraps.)
 
 
 == Configuration
 
-By default, publishing of domain objects is disabled.
-This can be configured globally:
+By default, publishing of changes to domain objects is disabled.
+It is enabled as follows:
 
 [source,yaml]
 .application.yml
@@ -93,6 +50,6 @@ causeway:
   applib:
     annotation:
       domain-object:
-        entityChangePublishing: none
+        entity-change-publishing: all
 ----
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm.java
index d146981ae6..9e6cff593b 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm.java
@@ -29,6 +29,7 @@ import org.apache.causeway.applib.annotation.Nature;
 import org.apache.causeway.applib.annotation.ObjectSupport;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
+import demoapp.dom.domain._changes.ExposeCapturedChanges;
 
 //tag::class[]
 @XmlRootElement(name = "root")
@@ -37,7 +38,7 @@ import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 @Named("demo.DomainObjectEntityChangePublishingVm")
 @DomainObject(
         nature=Nature.VIEW_MODEL)
-public class DomainObjectEntityChangePublishingVm implements HasAsciiDocDescription {
+public class DomainObjectEntityChangePublishingVm implements HasAsciiDocDescription, ExposeCapturedChanges {
 
     @ObjectSupport public String title() {
         return "DomainObject#entityChangePublishing";
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_delete.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_delete.java
index ea25893ddc..189bade120 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_delete.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/DomainObjectEntityChangePublishingVm_delete.java
@@ -32,18 +32,21 @@ import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectEntityChangePublishingEnabledEntity;
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity;
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity;
+import lombok.RequiredArgsConstructor;
 
+import java.util.Collections;
+import java.util.List;
+
+@SuppressWarnings("CdiManagedBeanInconsistencyInspection")
 //tag::class[]
 @Action(semantics = SemanticsOf.IDEMPOTENT)
 @ActionLayout(
     describedAs = "Deletes one publishing enabled entity and one publishing disabled entity",
     sequence = "3.0")
+@RequiredArgsConstructor
 public class DomainObjectEntityChangePublishingVm_delete {
 
     private final DomainObjectEntityChangePublishingVm domainObjectAuditingVm;
-    public DomainObjectEntityChangePublishingVm_delete(final DomainObjectEntityChangePublishingVm domainObjectAuditingVm) {
-        this.domainObjectAuditingVm = domainObjectAuditingVm;
-    }
 
     @MemberSupport public DomainObjectEntityChangePublishingVm act(
             @Nullable final DomainObjectEntityChangePublishingEnabledEntity enabledEntity
@@ -68,34 +71,43 @@ public class DomainObjectEntityChangePublishingVm_delete {
     @MemberSupport public DomainObjectEntityChangePublishingEnabledEntity default0Act() {
         return publishingEnabledEntities.first().orElse(null);
     }
+    @MemberSupport public List<? extends DomainObjectEntityChangePublishingEnabledEntity> choices0Act() {
+        return listOf(default0Act());
+    }
     @MemberSupport public DomainObjectEntityChangePublishingDisabledEntity default1Act() {
         return publishingDisabledEntities.first().orElse(null);
     }
+    @MemberSupport public List<? extends DomainObjectEntityChangePublishingDisabledEntity> choices1Act() {
+        return listOf(default1Act());
+    }
     @MemberSupport public DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity default2Act() {
         return publishingEnabledMetaAnnotatedEntities.first().orElse(null);
     }
+    @MemberSupport public List<? extends DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity> choices2Act() {
+        return listOf(default2Act());
+    }
     @MemberSupport public DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity default3Act() {
         return publishingEnabledMetaAnnotOverriddenEntities.first().orElse(null);
     }
+    @MemberSupport public List<? extends DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity> choices3Act() {
+        return listOf(default3Act());
+    }
     @MemberSupport public String disableAct() {
-        if(!publishingEnabledEntities.first().isPresent()) { return "No EnabledJdo to delete"; }
-        if(!publishingDisabledEntities.first().isPresent()) { return "No DisabledJdo to delete"; }
-        if(!publishingEnabledMetaAnnotatedEntities.first().isPresent()) { return "No MetaAnnotated to delete"; }
-        if(!publishingEnabledMetaAnnotOverriddenEntities.first().isPresent()) { return "No MetaAnnotated But Overridden to delete"; }
+        if(publishingEnabledEntities.first().isEmpty()) { return "No Enabled entity to delete"; }
+        if(publishingDisabledEntities.first().isEmpty()) { return "No Disabled entity to delete"; }
+        if(publishingEnabledMetaAnnotatedEntities.first().isEmpty()) { return "No MetaAnnotated entity to delete"; }
+        if(publishingEnabledMetaAnnotOverriddenEntities.first().isEmpty()) { return "No MetaAnnotated But Overridden entity to delete"; }
         return null;
     }
 
-    @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledEntity> publishingEnabledEntities;
-
-    @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingDisabledEntity> publishingDisabledEntities;
-
-    @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity> publishingEnabledMetaAnnotatedEntities;
+    private static <T> List<? extends T> listOf(T t) {
+        return t == null ? Collections.emptyList() : Collections.singletonList(t);
+    }
 
-    @Inject
-    ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity> publishingEnabledMetaAnnotOverriddenEntities;
+    @Inject ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledEntity> publishingEnabledEntities;
+    @Inject ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingDisabledEntity> publishingDisabledEntities;
+    @Inject ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity> publishingEnabledMetaAnnotatedEntities;
+    @Inject ValueHolderRepository<String, ? extends DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenEntity> publishingEnabledMetaAnnotOverriddenEntities;
 
 }
 //end::class[]
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingDisabledEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingDisabledEntity.java
index 3549846113..3bc7fffe29 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingDisabledEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingDisabledEntity.java
@@ -24,6 +24,7 @@ import org.apache.causeway.applib.annotation.DomainObject;
 
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingEntity;
 
+@SuppressWarnings("CdiManagedBeanInconsistencyInspection")
 @Named("demo.DomainObjectEntityChangePublishingDisabledEntity") // shared permissions with concrete sub class
 @DomainObject
 public abstract class DomainObjectEntityChangePublishingDisabledEntity
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingVm_publishingDisabledAnnotatedEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingVm_publishingDisabledAnnotatedEntities.java
index 20ab76fc7c..f39600f661 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingVm_publishingDisabledAnnotatedEntities.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/DomainObjectEntityChangePublishingVm_publishingDisabledAnnotatedEntities.java
@@ -23,12 +23,15 @@ import java.util.List;
 import javax.inject.Inject;
 
 import org.apache.causeway.applib.annotation.Collection;
+import org.apache.causeway.applib.annotation.CollectionLayout;
 
 import demoapp.dom._infra.values.ValueHolderRepository;
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingVm;
 import lombok.RequiredArgsConstructor;
 
+@SuppressWarnings("CdiManagedBeanInconsistencyInspection")
 @Collection()
+@CollectionLayout(paged = 3)
 @RequiredArgsConstructor
 public class DomainObjectEntityChangePublishingVm_publishingDisabledAnnotatedEntities {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jdo/DomainObjectEntityChangePublishingDisabledJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jdo/DomainObjectEntityChangePublishingDisabledJdo-description.adoc
index f0c35e9679..509de0df4a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jdo/DomainObjectEntityChangePublishingDisabledJdo-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jdo/DomainObjectEntityChangePublishingDisabledJdo-description.adoc
@@ -1,8 +1,6 @@
 :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 [...]
 
-WARNING: TODO: was renamed/moved from auditing+publishing to entityChangePublishing
-
-If entityChangePublishing has been enabled by default, then it can of course also be disabled:
+If entityChangePublishing has been enabled by default, then it can also be disabled on a per-class basis:
 
 [source,java,indent=0]
 ----
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jpa/DomainObjectEntityChangePublishingDisabledJpa-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jpa/DomainObjectEntityChangePublishingDisabledJpa-description.adoc
index abc6e3ebb2..1452a3ebed 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jpa/DomainObjectEntityChangePublishingDisabledJpa-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/disabled/jpa/DomainObjectEntityChangePublishingDisabledJpa-description.adoc
@@ -1,8 +1,6 @@
 :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 [...]
 
-WARNING: TODO: was renamed/moved from auditing+publishing to entityChangePublishing
-
-If entityChangePublishing has been enabled by default, then it can of course also be disabled:
+If entityChangePublishing has been enabled by default, then it can also be disabled on a per-class basis:
 
 [source,java,indent=0]
 ----
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledAnnotatedEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledAnnotatedEntities.java
index 35ce275bc8..9a1e904ea1 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledAnnotatedEntities.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledAnnotatedEntities.java
@@ -23,6 +23,7 @@ import java.util.List;
 import javax.inject.Inject;
 
 import org.apache.causeway.applib.annotation.Collection;
+import org.apache.causeway.applib.annotation.CollectionLayout;
 import org.apache.causeway.applib.annotation.MemberSupport;
 
 import demoapp.dom._infra.values.ValueHolderRepository;
@@ -30,6 +31,7 @@ import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObje
 import lombok.RequiredArgsConstructor;
 
 @Collection()
+@CollectionLayout(paged = 3)
 @RequiredArgsConstructor
 public class DomainObjectEntityChangePublishingVm_publishingEnabledAnnotatedEntities {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jdo/DomainObjectEntityChangePublishingEnabledJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jdo/DomainObjectEntityChangePublishingEnabledJdo-description.adoc
index e503a6821c..f31d2d3910 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jdo/DomainObjectEntityChangePublishingEnabledJdo-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jdo/DomainObjectEntityChangePublishingEnabledJdo-description.adoc
@@ -1,8 +1,6 @@
 :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 [...]
 
-WARNING: TODO: was renamed/moved from auditing+publishing to entityChangePublishing
-
-The `entityChangePublishing` element can be specified explicitly using an annotation through `@DomainObject#entityChangePublishing()`:
+If entityChangePublishing has been disabled by default, then it can also be enabled on a per-class basis:
 
 [source,java,indent=0]
 ----
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jpa/DomainObjectEntityChangePublishingEnabledJpa-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jpa/DomainObjectEntityChangePublishingEnabledJpa-description.adoc
index 02eb0565c8..cd56928862 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jpa/DomainObjectEntityChangePublishingEnabledJpa-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/annotated/enabled/jpa/DomainObjectEntityChangePublishingEnabledJpa-description.adoc
@@ -1,8 +1,6 @@
 :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 [...]
 
-WARNING: TODO: was renamed/moved from auditing+publishing to entityChangePublishing
-
-The `entityChangePublishing` element can be specified explicitly using an annotation through `@DomainObject#entityChangePublishing()`:
+If entityChangePublishing has been disabled by default, then it can also be enabled on a per-class basis:
 
 [source,java,indent=0]
 ----
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity.java
index 755f7d9e6f..47686a2f0a 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity.java
@@ -24,6 +24,7 @@ import org.apache.causeway.applib.annotation.DomainObject;
 
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingEntity;
 
+@SuppressWarnings("CdiManagedBeanInconsistencyInspection")
 @Named("demo.DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity") // shared permissions with concrete sub class
 @DomainObject
 public abstract class DomainObjectEntityChangePublishingEnabledMetaAnnotatedEntity
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotatedEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotatedEntities.java
index 273080ecd3..d44373f8a7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotatedEntities.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotatedEntities.java
@@ -23,12 +23,14 @@ import java.util.List;
 import javax.inject.Inject;
 
 import org.apache.causeway.applib.annotation.Collection;
+import org.apache.causeway.applib.annotation.CollectionLayout;
 
 import demoapp.dom._infra.values.ValueHolderRepository;
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingVm;
 import lombok.RequiredArgsConstructor;
 
 @Collection()
+@CollectionLayout(paged = 3)
 @RequiredArgsConstructor
 public class DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotatedEntities {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo-description.adoc
index 154724c210..aea9fcd574 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo-description.adoc
@@ -1,10 +1,9 @@
 :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 [...]
 
-WARNING: TODO: was renamed/moved from auditing+publishing to entityChangePublishing
 
-The `entityChangePublishing` element can also be specified using a custom meta-annotation:
+The `entityChangePublishing` element can be specified using a custom meta-annotation:
 
-* the meta-annotation is defined as:
+* with a meta-annotation defined as:
 +
 [source,java]
 ----
@@ -13,7 +12,7 @@ include::../../DomainObjectEntityChangePublishingEnabledMetaAnnotation.java[tags
 <.> annotated for a domain object
 <.> annotation can be applied to the type or a further meta-annotation type only
 
-* and can be applied to a domain object:
+* it can be applied to a domain object:
 +
 [source,java,indent=0]
 ----
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo.java
index d3119401fe..f6db96758c 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdo.java
@@ -37,6 +37,7 @@ import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.
 import lombok.Getter;
 import lombok.Setter;
 
+@SuppressWarnings("CdiManagedBeanInconsistencyInspection")
 @Profile("demo-jdo")
 //tag::class[]
 @PersistenceCapable(identityType = IdentityType.DATASTORE, schema = "demo")
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa-description.adoc
index afc24d0884..0523e2378f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnot/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotatedJpa-description.adoc
@@ -1,10 +1,9 @@
 :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 [...]
 
-WARNING: TODO: was renamed/moved from auditing+publishing to entityChangePublishing
 
-The `entityChangePublishing` element can also be specified using a custom meta-annotation:
+The `entityChangePublishing` element can be specified using a custom meta-annotation:
 
-* the meta-annotation is defined as:
+* with a meta-annotation defined as:
 +
 [source,java]
 ----
@@ -13,7 +12,7 @@ include::../../DomainObjectEntityChangePublishingEnabledMetaAnnotation.java[tags
 <.> annotated for a domain object
 <.> annotation can be applied to the type or a further meta-annotation type only
 
-* and can be applied to a domain object:
+* it can be applied to a domain object:
 +
 [source,java,indent=0]
 ----
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotOverriddenEntities.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotOverriddenEntities.java
index 952de3ca1c..6a0f644555 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotOverriddenEntities.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotOverriddenEntities.java
@@ -23,12 +23,15 @@ import java.util.List;
 import javax.inject.Inject;
 
 import org.apache.causeway.applib.annotation.Collection;
+import org.apache.causeway.applib.annotation.CollectionLayout;
 
 import demoapp.dom._infra.values.ValueHolderRepository;
 import demoapp.dom.domain.objects.DomainObject.entityChangePublishing.DomainObjectEntityChangePublishingVm;
 import lombok.RequiredArgsConstructor;
 
+@SuppressWarnings("CdiManagedBeanInconsistencyInspection")
 @Collection()
+@CollectionLayout(paged = 3)
 @RequiredArgsConstructor
 public class DomainObjectEntityChangePublishingVm_publishingEnabledMetaAnnotOverriddenEntities {
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo-description.adoc
index 26b6ab8687..8fba151bc3 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jdo/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo-description.adoc
@@ -1,24 +1,24 @@
 :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 [...]
 
-WARNING: TODO: was renamed/moved from auditing+publishing to entityChangePublishing
+If the `entityChangePublishing` element has been specified using a custom meta-annotation, for example as disabled, it can still be overridden on a per-class basis.
 
-The `entityChangePublishing` element can also be specified using a custom meta-annotation:
+This would be useful if you used a common meta-annotation for a bunch of semantics, but wanted to override just this `entityChangePublishing` semantic for a particular class.
 
-:examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/metaAnnotOverridden/enabled/DomainObjectPublishingEnabledMetaAnnotOverriddenJdo-description.adoc
-
-* the meta-annotation is defined as:
+* So, with a meta-annotation is defined as:
 +
 [source,java]
 ----
 include::../../DomainObjectEntityChangePublishingDisabledMetaAnnotation.java[tags=class]
 ----
-<.> annotated for a domain object
+<.> disables the `entityChangePublishing` for all domain object that it is applied to
 <.> annotation can be applied to the type or a further meta-annotation type only
 
-* and can be applied to a domain object:
+* it can be overridden at the domain class:
 +
 [source,java,indent=0]
 ----
 include::DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdo.java[tags=class]
 ----
-<.> semantic is inherited from the meta-annotation
+<.> the `entityChangePublishing` semantic is inherited from the meta-annotation, however...
+<.> it is overridden at the domain class level
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa-description.adoc
index 0c432133f3..46cb2fa9dc 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/entityChangePublishing/metaAnnotOverridden/enabled/jpa/DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa-description.adoc
@@ -1,25 +1,24 @@
 :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 [...]
 
-WARNING: TODO: was renamed/moved from auditing+publishing to entityChangePublishing
+If the `entityChangePublishing` element has been specified using a custom meta-annotation, for example as disabled, it can still be overridden on a per-class basis.
 
-The `entityChangePublishing` element can also be specified using a custom meta-annotation:
+This would be useful if you used a common meta-annotation for a bunch of semantics, but wanted to override just this `entityChangePublishing` semantic for a particular class.
 
-:examples/demo/domain/src/main/java/demoapp/dom/annotDomain/DomainObject/publishing/metaAnnotOverridden/enabled/DomainObjectPublishingEnabledMetaAnnotOverriddenJdo-description.adoc
-
-* the meta-annotation is defined as:
+* So, with a meta-annotation is defined as:
 +
 [source,java]
 ----
 include::../../DomainObjectEntityChangePublishingDisabledMetaAnnotation.java[tags=class]
 ----
-<.> annotated for a domain object
+<.> disables the `entityChangePublishing` for all domain object that it is applied to
 <.> annotation can be applied to the type or a further meta-annotation type only
 
-* and can be applied to a domain object:
+* it can be overridden at the domain class:
 +
 [source,java,indent=0]
 ----
-include::DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa
-.java[tags=class]
+include::DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJpa.java[tags=class]
 ----
-<.> semantic is inherited from the meta-annotation
+<.> the `entityChangePublishing` semantic is inherited from the meta-annotation, however...
+<.> it is overridden at the domain class level
+
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/mixinMethod/DomainObjectMixinMethodVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/mixinMethod/DomainObjectMixinMethodVm-description.adoc
index 3ab6bc5e1c..2992beaaab 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/mixinMethod/DomainObjectMixinMethodVm-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/mixinMethod/DomainObjectMixinMethodVm-description.adoc
@@ -5,7 +5,9 @@ The `mixinMethod` attribute ...
 WARNING: TODO[CAUSEWAY-3312]
 Applicable only if #nature() is Nature#MIXIN , indicates the name of the method within the mixin class to be inferred as the action of that mixin.
 Supporting methods are then derived from that method name. For example, if the mixin method name is "act", then the disable supporting method will be "disableAct".
-Typical examples are "act", "prop", "coll", "exec", "execute", "invoke", "apply" and so on. The default name is $$.
-NOTE: it's more typical to instead use xref:refguide:applib:index/annotation/Action.adoc[Action] , xref:refguide:applib:index/annotation/Property.adoc[Property] or xref:refguide:applib:index/annotation/Collection.adoc[Collection] as the class-level annotation, indicating that the domain object is a mixin. The mixin method name for these is, respectively, "act", "prop" and "coll".
+Typical examples are "act", "prop", "coll", "exec", "execute", "invoke", "apply" and so on.
+The default name is $$.
+NOTE: it's more typical to instead use https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/annotation/Action.html[Action] , https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/annotation/Property.html[Property] or https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/annotation/Collection.html[Collection] as the class-level annotation, indicating that the domain object is a mixin.
+The mixin method name for these is, respectively, "act", "prop" and "coll".
 
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/xxxLifecycleEvent/DomainObjectLifecyleEventsVm-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/xxxLifecycleEvent/DomainObjectLifecyleEventsVm-description.adoc
index e0fe807e5b..ddfcc44bad 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/xxxLifecycleEvent/DomainObjectLifecyleEventsVm-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/objects/DomainObject/xxxLifecycleEvent/DomainObjectLifecyleEventsVm-description.adoc
@@ -3,7 +3,7 @@
 [#actionDomainEvent]
 == actionDomainEvent
 
-Indicates that an invocation of _any_ action of the domain object (that do not themselves specify their own `@Action(domainEvent=...)` should be posted to the _org.apache.causeway.applib.services.eventbus.EventBusService event bus_ using the specified custom (subclass of) xref:refguide:applib:index/events/domain/ActionDomainEvent.adoc[ActionDomainEvent] .
+Indicates that an invocation of _any_ action of the domain object (that do not themselves specify their own `@Action(domainEvent=...)` should be posted to the _org.apache.causeway.applib.services.eventbus.EventBusService event bus_ using the specified custom (subclass of) https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/events/domain/ActionDomainEvent.html[ActionDomainEvent] .
 
 For example:
 
@@ -25,7 +25,7 @@ This subclass must provide a no-arg constructor; the fields are set reflectively
 [#propertyDomainEvent]
 == propertyDomainEvent
 
-Indicates that changes to _any_ property of the domain object (that do not themselves specify their own `@Property(domainEvent=...)` should be posted to the _org.apache.causeway.applib.services.eventbus.EventBusService event bus_ using the specified custom (subclass of) xref:refguide:applib:index/events/domain/PropertyDomainEvent.adoc[PropertyDomainEvent] .
+Indicates that changes to _any_ property of the domain object (that do not themselves specify their own `@Property(domainEvent=...)` should be posted to the _org.apache.causeway.applib.services.eventbus.EventBusService event bus_ using the specified custom (subclass of) https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/events/domain/PropertyDomainEvent.html[PropertyDomainEvent] .
 
 For example:
 
@@ -43,7 +43,7 @@ This subclass must provide a no-arg constructor; the fields are set reflectively
 [#collectionDomainEvent]
 == collectionDomainEvent
 
-Indicates that changes to _any_ collection of the domain object (that do not themselves specify their own `@Collection(domainEvent=...)` should be posted to the _org.apache.causeway.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) xref:refguide:applib:index/events/domain/CollectionDomainEvent.adoc[CollectionDomainEvent] .
+Indicates that changes to _any_ collection of the domain object (that do not themselves specify their own `@Collection(domainEvent=...)` should be posted to the https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/eventbus/EventBusService.html[EventBusService] event bus_ using a custom (subclass of) https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/events/domain/CollectionDomainEvent.html[CollectionDomainEvent] .
 
 For example:
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jdo/PropertyCommandPublishingJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jdo/PropertyCommandPublishingJdo-description.adoc
index 783dd1d18e..cc42c29e2f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jdo/PropertyCommandPublishingJdo-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jdo/PropertyCommandPublishingJdo-description.adoc
@@ -1,20 +1,20 @@
 :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 [...]
 
-The `commandPublishing` element is used to allow or suppress the reification of a property edit into a xref:refguide:applib:index/services/command/Command.adoc[Command].
+The `commandPublishing` element is used to allow or suppress the reification of a property edit into a https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command].
 
 
-When allowed (the default), then the xref:refguide:applib:index/services/command/Command.adoc[Command] is sent to registered implementation(s) of https://causeway.apache.org/refguide/2.0.0-M5/applib-svc/CommandSubscriber.html#section-top[CommandSubscriber] SPI, _after_ the interaction has completed.
+When allowed (the default), then the https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command] is sent to registered implementation(s) of https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/CommandSubscriber.html[CommandSubscriber] SPI, _after_ the interaction has completed.
 One use case is to replicate and replay commands to a secondary system, for example for regression testing.
 For more on this, see the "Command Replay" section below.
 
-Commands are also used under the covers to allow property edits to be made asynchronously using the link:https://causeway.apache.org/refguide/2.0.0-M3/applib-svc/WrapperFactory.html[WrapperFactory].
+Commands are also used under the covers to allow property edits to be made asynchronously using the link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/wrapper/WrapperFactory.html[WrapperFactory].
 
 [NOTE]
 ====
-The list of persisted xref:refguide:applib:index/services/command/Command.adoc[Command]s can be viewed in a collection at the left bottom of the page.
-xref:refguide:applib:index/services/command/Command.adoc[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
+The list of persisted https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s can be viewed in a collection at the left bottom of the page.
+https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
 
-If running in prototype mode, the list of persisted xref:refguide:applib:index/services/command/Command.adoc[Command]s can also be truncated from the activity menu.
+If running in prototype mode, the list of persisted https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s can also be truncated from the activity menu.
 ====
 
 == Annotated
@@ -73,9 +73,9 @@ include::PropertyCommandPublishingJdo.java[tags=meta-annotation-overridden]
 
 == CommandSubscriber
 
-The demo includes the link:https://causeway.apache.org/extensions/2.0.0-M3/commandlog/about.html[Command Log] extension, so every command is persisted.
+The demo includes the link:https://causeway.apache.org/userguide/${CAUSEWAY_VERSION}/commandlog/about.html extension, so every command is persisted.
 These can be viewed in the collection at the bottom of the left page.
-xref:refguide:applib:index/services/command/Command.adoc[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
+https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
 
 
 == Configuration
@@ -97,32 +97,35 @@ In addition to globally enabling or disabling command reification, it is also po
 This enables commands for all actions except those that have safe (that is, query-only) semantics.
 In other words actions are reified to commands except for those that don't change (aren't declared as changing) the state of the system.
 
-== Command Replay
-
-The link:https://causeway.apache.org/extensions/2.0.0-M3/commandlog/about.html[Command Log] extension provides an implementation of `CommandServiceListener` to allow xref:refguide:applib:index/services/command/Command.adoc[Command]s to be persisted.
-It also provides a RESTful endpoint to allow xref:refguide:applib:index/services/command/Command.adoc[Command]s to be queried.
-This is used by the link:https://causeway.apache.org/extensions/2.0.0-M3/commandreplay/about.html[Command Replay] extension to allow commands to be replayed on a secondary system, for regression testing.
-
-The associated `commandDtoProcessor()` element allows the xref:refguide:applib:index/services/command/Command.adoc[Command] XML representation (as a `CommandDto`) to be processed before being surfaced through the REST endpoint.
-One use case is to allow data to be obfuscated for security, or to replace large payloads (such as Blobs) with a smaller dummy payload.
-As well as specifying DTO processing at the action level, it can be specified globally by implementing the link:https://causeway.apache.org/refguide/2.0.0-M3/applib-svc/CommandDtoProcessorService.html[CommandDtoProcessorService] SPI.
-
-The command replay can be demonstrated by running a second instance of the demo app, using the "secondary" Spring Boot profile.
-This is most easily done by specifying a system property:
-
-    -Dspring.profiles.active=secondary
-
-This activates the `application-secondary.properties` configuration file:
-
-[source,properties]
-----
-causeway.extensions.commandreplay.primary-access.base-url-restful=http://localhost:8080/restful/
-causeway.extensions.commandreplay.primary-access.user=sven
-causeway.extensions.commandreplay.primary-access.password=pass
-causeway.extensions.commandreplay.primary-access.base-url-wicket=http://localhost:8080/wicket/
-
-server.port=9090
-----
-
-The secondary instance of demoapp is accessible at link:http://localhost:9090[].
-Since both primary and secondary start with the same initial state, any commands executed on the primary are replicated to the secondary and result in the same changes of state.
+// == Command Replay
+//
+// (moved back to incubator so commented out)
+//
+// The link:https://causeway.apache.org/userguide/${CAUSEWAY_VERSION}/commandlog/about.html extension provides an implementation of `CommandServiceListener` to allow https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s to be persisted.
+// It also provides a RESTful endpoint to allow https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s to be queried.
+//
+// This is used by the link:https://causeway.apache.org/extensions/2.0.0-M3/commandreplay/about.html[Command Replay] extension to allow commands to be replayed on a secondary system, for regression testing.
+//
+// The associated `commandDtoProcessor()` element allows the https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command] XML representation (as a https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/schema/cmd.html[CommandDto]) to be processed before being surfaced through the REST endpoint.
+// One use case is to allow data to be obfuscated for security, or to replace large payloads (such as Blobs) with a smaller dummy payload.
+// As well as specifying DTO processing at the action level, it can be specified globally by implementing the link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/commanddto/processor/spi/CommandDtoProcessorService.html[CommandDtoProcessorService] SPI.
+//
+// The command replay can be demonstrated by running a second instance of the demo app, using the "secondary" Spring Boot profile.
+// This is most easily done by specifying a system property:
+//
+//     -Dspring.profiles.active=secondary
+//
+// This activates the `application-secondary.properties` configuration file:
+//
+// [source,properties]
+// ----
+// causeway.extensions.commandreplay.primary-access.base-url-restful=http://localhost:8080/restful/
+// causeway.extensions.commandreplay.primary-access.user=sven
+// causeway.extensions.commandreplay.primary-access.password=pass
+// causeway.extensions.commandreplay.primary-access.base-url-wicket=http://localhost:8080/wicket/
+//
+// server.port=9090
+// ----
+//
+// The secondary instance of demoapp is accessible at link:http://localhost:9090[].
+// Since both primary and secondary start with the same initial state, any commands executed on the primary are replicated to the secondary and result in the same changes of state.
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jpa/PropertyCommandPublishingJpa-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jpa/PropertyCommandPublishingJpa-description.adoc
index 4e931c8670..336cbea1a5 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jpa/PropertyCommandPublishingJpa-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/commandPublishing/jpa/PropertyCommandPublishingJpa-description.adoc
@@ -1,20 +1,20 @@
 :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 [...]
 
-The `commandPublishing` element is used to allow or suppress the reification of a property edit into a xref:refguide:applib:index/services/command/Command.adoc[Command].
+The `commandPublishing` element is used to allow or suppress the reification of a property edit into a https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command].
 
 
-When allowed (the default), then the xref:refguide:applib:index/services/command/Command.adoc[Command] is sent to registered implementation(s) of https://causeway.apache.org/refguide/2.0.0-M5/applib-svc/CommandSubscriber.html#section-top[CommandSubscriber] SPI, _after_ the interaction has completed.
+When allowed (the default), then the https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command] is sent to registered implementation(s) of https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/CommandSubscriber.html[CommandSubscriber] SPI, _after_ the interaction has completed.
 One use case is to replicate and replay commands to a secondary system, for example for regression testing.
 For more on this, see the "Command Replay" section below.
 
-Commands are also used under the covers to allow property edits to be made asynchronously using the link:https://causeway.apache.org/refguide/2.0.0-M3/applib-svc/WrapperFactory.html[WrapperFactory].
+Commands are also used under the covers to allow property edits to be made asynchronously using the link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/wrapper/WrapperFactory.html[WrapperFactory].
 
 [NOTE]
 ====
-The list of persisted xref:refguide:applib:index/services/command/Command.adoc[Command]s can be viewed in a collection at the left bottom of the page.
-xref:refguide:applib:index/services/command/Command.adoc[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
+The list of persisted https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s can be viewed in a collection at the left bottom of the page.
+https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
 
-If running in prototype mode, the list of persisted xref:refguide:applib:index/services/command/Command.adoc[Command]s can also be truncated from the activity menu.
+If running in prototype mode, the list of persisted https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s can also be truncated from the activity menu.
 ====
 
 == Annotated
@@ -73,9 +73,9 @@ include::PropertyCommandPublishingJpa.java[tags=meta-annotation-overridden]
 
 == CommandSubscriber
 
-The demo includes the link:https://causeway.apache.org/extensions/2.0.0-M3/commandlog/about.html[Command Log] extension, so every command is persisted.
+The demo includes the link:https://causeway.apache.org/userguide/${CAUSEWAY_VERSION}/commandlog/about.html extension, so every command is persisted.
 These can be viewed in the collection at the bottom of the left page.
-xref:refguide:applib:index/services/command/Command.adoc[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
+https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s are persisted after the page rendering phase, so to view a just-persisted command, refresh the page.
 
 
 == Configuration
@@ -102,11 +102,11 @@ In other words actions are reified to commands except for those that don't chang
 //
 //== Command Replay
 //
-//The link:https://causeway.apache.org/extensions/2.0.0-M3/commandlog/about.html[Command Log] extension provides an implementation of `CommandServiceListener` to allow xref:refguide:applib:index/services/command/Command.adoc[Command]s to be persisted.
-//It also provides a RESTful endpoint to allow xref:refguide:applib:index/services/command/Command.adoc[Command]s to be queried.
+//The link:https://causeway.apache.org/userguide/${CAUSEWAY_VERSION}/commandlog/about.html extension provides an implementation of `CommandServiceListener` to allow https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s to be persisted.
+//It also provides a RESTful endpoint to allow https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command]s to be queried.
 //This is used by the link:https://causeway.apache.org/extensions/2.0.0-M3/commandreplay/about.html[Command Replay] extension to allow commands to be replayed on a secondary system, for regression testing.
 //
-//The associated `commandDtoProcessor()` element allows the xref:refguide:applib:index/services/command/Command.adoc[Command] XML representation (as a `CommandDto`) to be processed before being surfaced through the REST endpoint.
+//The associated `commandDtoProcessor()` element allows the https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/command/Command.html[Command] XML representation (as a `CommandDto`) to be processed before being surfaced through the REST endpoint.
 //One use case is to allow data to be obfuscated for security, or to replace large payloads (such as Blobs) with a smaller dummy payload.
 //As well as specifying DTO processing at the action level, it can be specified globally by implementing the link:https://causeway.apache.org/refguide/2.0.0-M3/applib-svc/CommandDtoProcessorService.html[CommandDtoProcessorService] SPI.
 //
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/PropertyExecutionPublishingEntity.java b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/PropertyExecutionPublishingEntity.java
index 2d7eb31d40..21707736b7 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/PropertyExecutionPublishingEntity.java
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/PropertyExecutionPublishingEntity.java
@@ -24,14 +24,14 @@ import org.apache.causeway.applib.annotation.DomainObject;
 
 import demoapp.dom._infra.asciidocdesc.HasAsciiDocDescription;
 import demoapp.dom._infra.values.ValueHolder;
-import demoapp.dom.domain._interactions.ExposeCapturedInteractions;
+import demoapp.dom.domain._interactions.ExposePersistedInteractions;
 
 @Named("demo.PropertyExecutionPublishingEntity") // shared permissions with concrete sub class
 @DomainObject
 public abstract class PropertyExecutionPublishingEntity
 implements
     HasAsciiDocDescription,
-    ExposeCapturedInteractions,
+        ExposePersistedInteractions,
     ValueHolder<String> {
 
     @Override
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jdo/PropertyExecutionPublishingJdo-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jdo/PropertyExecutionPublishingJdo-description.adoc
index d8156d84af..2ed4029162 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jdo/PropertyExecutionPublishingJdo-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jdo/PropertyExecutionPublishingJdo-description.adoc
@@ -1,12 +1,12 @@
 :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 [...]
 
-The `executionPublishing` element specifies that the editing of an object property should be published to registered implementation(s) of link:https://causeway.apache.org/refguide/2.0.0-M5/applib-svc/ExecutionSubscriber.html#spi[`ExecutionSubscriber` SPI].
+The `executionPublishing` element specifies that the editing of an object property should be published to registered implementation(s) of link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/ExecutionSubscriber.html[ExecutionSubscriber] SPI.
 
 This is performed _after_ the property has been changed.
 
 The publishing from the framework to the SPI is in-memory.
 A typical SPI implementation would then publish over the network, or perhaps store in a database.
-(Note that the framework provides an link:https://causeway.apache.org/mappings/2.0.0-M3/outbox-publisher/about.html[out-of-the-box implementation] of the link:https://microservices.io/patterns/data/transactional-outbox.html[outbox pattern]).
+(Note that the framework provides an link:https://causeway.apache.org/userguide/${CAUSEWAY}/executionoutbox/about.html[out-of-the-box implementation] of the link:https://microservices.io/patterns/data/transactional-outbox.html[outbox pattern]).
 
 The element can be specified using either the `@Property` annotation, or through a meta-annotation.
 
@@ -64,13 +64,13 @@ include::PropertyExecutionPublishingJdo.java[tags=meta-annotated-overridden]
 
 == ExecutionSubscriber
 
-The demo provides a simple implementation of `PublisherService` that just stores the DTOs in memory:
+The demo provides a simple implementation of link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/ExecutionSubscriber.html[ExecutionSubscriber] that just stores the DTOs in memory:
 
 [source,java]
 ----
 include::spiimpl/PublisherServiceSpiForProperties.java[tags=class]
 ----
-<.> serializes to `InteractionDto`, as defined by the link:https://causeway.apache.org/refguide/2.0.0-M3/schema/ixn.html[Apache Causeway schema].
+<.> serializes to `InteractionDto`, as defined by the link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/schema/ixn.html[ixn] (Interaction) schema.
 
 The demo implementation also provides a way to query these executions:
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jpa/PropertyExecutionPublishingJpa-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jpa/PropertyExecutionPublishingJpa-description.adoc
index 4a573d480f..caa79cb50f 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jpa/PropertyExecutionPublishingJpa-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/domain/properties/Property/executionPublishing/jpa/PropertyExecutionPublishingJpa-description.adoc
@@ -1,12 +1,12 @@
 :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 [...]
 
-The `executionPublishing` element specifies that the editing of an object property should be published to registered implementation(s) of link:https://causeway.apache.org/refguide/2.0.0-M5/applib-svc/ExecutionSubscriber.html#spi[`ExecutionSubscriber` SPI].
+The `executionPublishing` element specifies that the editing of an object property should be published to registered implementation(s) of link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/publishing/spi/ExecutionSubscriber.html[`ExecutionSubscriber` SPI].
 
 This is performed _after_ the property has been changed.
 
 The publishing from the framework to the SPI is in-memory.
 A typical SPI implementation would then publish over the network, or perhaps store in a database.
-(Note that the framework provides an link:https://causeway.apache.org/mappings/2.0.0-M3/outbox-publisher/about.html[out-of-the-box implementation] of the link:https://microservices.io/patterns/data/transactional-outbox.html[outbox pattern]).
+(Note that the framework provides an link:https://causeway.apache.org/userguide/${CAUSEWAY}/executionoutbox/about.html[out-of-the-box implementation] of the link:https://microservices.io/patterns/data/transactional-outbox.html[outbox pattern]).
 
 The element can be specified using either the `@Property` annotation, or through a meta-annotation.
 
@@ -70,7 +70,7 @@ The demo provides a simple implementation of `PublisherService` that just stores
 ----
 include::spiimpl/PublisherServiceSpiForProperties.java[tags=class]
 ----
-<.> serializes to `InteractionDto`, as defined by the link:https://causeway.apache.org/refguide/2.0.0-M3/schema/ixn.html[Apache Causeway schema].
+<.> serializes to `InteractionDto`, as defined by the link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/schema/ixn.html[ixn] (Interaction) schema.
 
 The demo implementation also provides a way to query these executions:
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage-description.adoc b/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage-description.adoc
index 60eb69ae41..e4fbef952d 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage-description.adoc
+++ b/examples/demo/domain/src/main/java/demoapp/dom/homepage/DemoHomePage-description.adoc
@@ -18,6 +18,6 @@ This application's home page is pretty simple, not much more than a couple of ha
 A more common implementation of a home page is as a dashboard, displaying the most useful current information to the user (perhaps a task list, or alerts).
 Such a home page would have a number of repository services injected into it, in order to query and render those tasks or alerts.
 
-It would probably also have the framework's link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib-svc/UserService.html[UserService] injected, in order that the information displayed is relevant to the current user.
+It would probably also have the framework's link:https://causeway.apache.org/refguide/${CAUSEWAY_VERSION}/applib/index/services/user/UserService.html[UserService] injected, in order that the information displayed is relevant to the current user.
 As you can see, this app's home page does actually do this, in order to "personalise" the title.
 
diff --git a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
index 8fc9658426..f61f6fe148 100644
--- a/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
+++ b/examples/demo/domain/src/main/java/demoapp/dom/menubars.layout.xml
@@ -297,14 +297,9 @@ For latest we use: https://raw.githubusercontent.com/apache/causeway/master/anto
                 <mb3:serviceAction objectType="causeway.applib.LayoutServiceMenu" id="downloadLayouts"/>
                 <mb3:serviceAction objectType="causeway.applib.LayoutServiceMenu" id="downloadMenuBarsLayout"/>
             </mb3:section>
-            <mb3:section>
-                <mb3:named>Site-Map</mb3:named>
-                <mb3:serviceAction objectType="causeway.applib.SitemapServiceMenu" id="downloadSitemap"/>
-            </mb3:section>
             <mb3:section>
                 <mb3:named>Meta Model and Features</mb3:named>
                 <mb3:serviceAction objectType="causeway.applib.MetaModelServiceMenu" id="downloadMetaModel"/>
-                <mb3:serviceAction objectType="causeway.applib.MetaModelServiceMenu" id="downloadMetaModelCsv"/>
                 <mb3:serviceAction objectType="causeway.applib.MetaModelServiceMenu" id="downloadMetaModelDiff"/>
                 <mb3:serviceAction objectType="causeway.feat.ApplicationFeatureMenu" id="allNamespaces"/>
                 <mb3:serviceAction objectType="causeway.feat.ApplicationFeatureMenu" id="allTypes"/>
@@ -319,9 +314,9 @@ For latest we use: https://raw.githubusercontent.com/apache/causeway/master/anto
             </mb3:section>
             <mb3:section>
                 <mb3:named>REST API</mb3:named>
-                <mb3:serviceAction objectType="causeway.viewer.restfulobjects.SwaggerServiceMenu" id="openSwaggerUi"/>
-                <mb3:serviceAction objectType="causeway.viewer.restfulobjects.SwaggerServiceMenu" id="openRestApi"/>
-                <mb3:serviceAction objectType="causeway.viewer.restfulobjects.SwaggerServiceMenu" id="downloadSwaggerSchemaDefinition"/>
+                <mb3:serviceAction objectType="causeway.viewer.roRendering.SwaggerServiceMenu" id="openSwaggerUi"/>
+                <mb3:serviceAction objectType="causeway.viewer.roRendering.SwaggerServiceMenu" id="openRestApi"/>
+                <mb3:serviceAction objectType="causeway.viewer.roRendering.SwaggerServiceMenu" id="downloadSwaggerSchemaDefinition"/>
             </mb3:section>
             <mb3:section>
                 <mb3:named>i18n</mb3:named>
@@ -329,6 +324,12 @@ For latest we use: https://raw.githubusercontent.com/apache/causeway/master/anto
                 <mb3:serviceAction objectType="causeway.applib.TranslationServicePoMenu" id="resetTranslationCache"/>
                 <mb3:serviceAction objectType="causeway.applib.TranslationServicePoMenu" id="switchToReadingTranslations"/>
                 <mb3:serviceAction objectType="causeway.applib.TranslationServicePoMenu" id="switchToWritingTranslations"/>
+            </mb3:section>
+            <mb3:section>
+                <mb3:named>Manual Testing</mb3:named>
+                <mb3:serviceAction objectType="causeway.applib.SitemapServiceMenu" id="downloadSitemap">
+                    <cpt:named>Download Site-Map Template (Adoc)</cpt:named>
+                </mb3:serviceAction>
             </mb3:section>
 			<mb3:section>
                 <mb3:named>Prototype Actions (on Object)</mb3:named>
@@ -341,6 +342,39 @@ For latest we use: https://raw.githubusercontent.com/apache/causeway/master/anto
             </mb3:section>
         </mb3:menu>
 
+        <mb3:menu>
+            <mb3:named>Activity</mb3:named>
+            <mb3:section>
+                <mb3:named>Sessions</mb3:named>
+                <mb3:serviceAction id="activeSessions" objectType="causeway.ext.sessionLog.SessionLogMenu"/>
+                <mb3:serviceAction id="findSessions" objectType="causeway.ext.sessionLog.SessionLogMenu"/>
+            </mb3:section>
+            <mb3:section>
+                <mb3:named>Commands</mb3:named>
+                <mb3:serviceAction id="activeCommands" objectType="causeway.ext.commandLog.CommandLogMenu"/>
+                <mb3:serviceAction id="findMostRecent" objectType="causeway.ext.commandLog.CommandLogMenu"/>
+                <mb3:serviceAction id="findCommands" objectType="causeway.ext.commandLog.CommandLogMenu"/>
+                <mb3:serviceAction id="findAll" objectType="causeway.ext.commandLog.CommandLogMenu"/>
+            </mb3:section>
+            <mb3:section>
+                <mb3:named>Execution Log</mb3:named>
+                <mb3:serviceAction id="findMostRecent" objectType="causeway.ext.executionLog.ExecutionLogMenu"/>
+                <mb3:serviceAction id="findExecutions" objectType="causeway.ext.executionLog.ExecutionLogMenu"/>
+                <mb3:serviceAction id="findAll" objectType="causeway.ext.executionLog.ExecutionLogMenu"/>
+            </mb3:section>
+            <mb3:section>
+                <mb3:named>Audit Trail</mb3:named>
+                <mb3:serviceAction id="findMostRecent" objectType="causeway.ext.auditTrail.AuditTrailMenu"/>
+                <mb3:serviceAction id="findAuditEntries" objectType="causeway.ext.auditTrail.AuditTrailMenu"/>
+                <mb3:serviceAction id="findAll" objectType="causeway.ext.auditTrail.AuditTrailMenu"/>
+            </mb3:section>
+            <mb3:section>
+                <mb3:named>Execution Outbox</mb3:named>
+                <mb3:serviceAction id="findOldest" objectType="causeway.ext.executionOutbox.ExecutionOutboxMenu"/>
+                <mb3:serviceAction id="findAll" objectType="causeway.ext.executionOutbox.ExecutionOutboxMenu"/>
+            </mb3:section>
+        </mb3:menu>
+
         <mb3:menu>
             <mb3:named>Security</mb3:named>
             <mb3:section>
@@ -364,32 +398,6 @@ For latest we use: https://raw.githubusercontent.com/apache/causeway/master/anto
                 <mb3:serviceAction objectType="causeway.ext.secman.ApplicationTenancyMenu" id="findTenancies"/>
             </mb3:section>
         </mb3:menu>
-        <mb3:menu>
-            <mb3:named>Activity</mb3:named>
-            <mb3:section>
-                <mb3:named>Command Log</mb3:named>
-                <mb3:serviceAction objectType="causeway.ext.commandLog.CommandLogMenu" id="activeCommands"/>
-                <mb3:serviceAction objectType="causeway.ext.commandLog.CommandLogMenu" id="findCommands"/>
-                <mb3:serviceAction objectType="causeway.ext.commandLog.CommandLogMenu" id="findCommandById"/>
-                <mb3:serviceAction objectType="causeway.ext.commandLog.CommandLogMenu" id="truncateLog"/>
-            </mb3:section>
-            <mb3:section>
-                <mb3:named>Command Replay - Primary</mb3:named>
-                <mb3:serviceAction objectType="causeway.ext.commandReplayPrimary.CommandReplayOnPrimaryService" id="findCommands"/>
-                <mb3:serviceAction objectType="causeway.ext.commandReplayPrimary.CommandReplayOnPrimaryService" id="downloadCommands"/>
-                <mb3:serviceAction objectType="causeway.ext.commandReplayPrimary.CommandReplayOnPrimaryService" id="downloadCommandById"/>
-            </mb3:section>
-            <mb3:section>
-                <mb3:named>Command Replay - Secondary</mb3:named>
-                <mb3:serviceAction objectType="causeway.ext.commandReplaySecondary.CommandReplayOnSecondaryService" id="findMostRecentReplayed"/>
-                <mb3:serviceAction objectType="causeway.ext.commandReplaySecondary.CommandReplayOnSecondaryService" id="uploadCommands"/>
-            </mb3:section>
-            <mb3:section>
-                <mb3:named>Demo Replay Controller</mb3:named>
-                <mb3:serviceAction objectType="demo.web.DemoReplayController" id="pauseReplay"/>
-                <mb3:serviceAction objectType="demo.web.DemoReplayController" id="resumeReplay"/>
-            </mb3:section>
-        </mb3:menu>
 
     </mb3:secondary>
     <mb3:tertiary>
@@ -411,10 +419,8 @@ For latest we use: https://raw.githubusercontent.com/apache/causeway/master/anto
             </mb3:section>
             <mb3:section>
                 <mb3:named>Security</mb3:named>
-                <mb3:serviceAction objectType="causeway.ext.secman.MeService" id="me">
-                    <cpt:named>Me (SecMan)</cpt:named>
-                </mb3:serviceAction>
-                <mb3:serviceAction objectType="causeway.applib.UserMenu" id="me"/>
+                <mb3:serviceAction objectType="causeway.applib.UserMenu" id="me"/>  <!-- this is hidden by secman -->
+                <mb3:serviceAction objectType="causeway.ext.secman.MeService" id="me"/>
 	            <mb3:serviceAction objectType="causeway.security.LogoutMenu" id="logout"/>
 	        </mb3:section>
 
diff --git a/examples/demo/domain/src/main/resources/static/css/application.css b/examples/demo/domain/src/main/resources/static/css/application.css
index 8212eabf04..01f8147763 100644
--- a/examples/demo/domain/src/main/resources/static/css/application.css
+++ b/examples/demo/domain/src/main/resources/static/css/application.css
@@ -281,7 +281,12 @@ div.listingblock div.title {
 }
 
 /* customized Prism theme COY */
-.listingblock pre[class*="language-"]::after, 
+.listingblock pre[class*="language-"]::after,
 .listingblock pre[class*="language-"]::before {
 	box-shadow: none;
 }
+
+
+div.sectionbody > div.ulist {
+    margin-left: 10px;
+}
diff --git a/examples/demo/domain/src/test/java/demoapp/dom/_infra/resources/ResourceReaderService_Test.java b/examples/demo/domain/src/test/java/demoapp/dom/_infra/resources/ResourceReaderService_Test.java
index 00143d945b..6448a28b31 100644
--- a/examples/demo/domain/src/test/java/demoapp/dom/_infra/resources/ResourceReaderService_Test.java
+++ b/examples/demo/domain/src/test/java/demoapp/dom/_infra/resources/ResourceReaderService_Test.java
@@ -26,6 +26,10 @@ import org.junit.jupiter.api.Test;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.causeway.core.config.CausewayConfiguration;
+import org.springframework.core.env.Environment;
+import org.springframework.core.env.Profiles;
+import org.springframework.core.env.StandardEnvironment;
+import org.springframework.mock.env.MockEnvironment;
 
 import lombok.val;
 
@@ -36,8 +40,8 @@ class ResourceReaderService_Test {
     @BeforeEach
     void setUp() {
         resourceReaderService = new ResourceReaderService();
-        resourceReaderService.markupVariableResolverService = 
-                new MarkupVariableResolverService(new CausewayConfiguration(null));
+        resourceReaderService.markupVariableResolverService =
+                new MarkupVariableResolverService(new CausewayConfiguration(null), new MockEnvironment().withProperty("spring.profiles.active", "demo-jpa"));
     }
 
     @Test
diff --git a/examples/demo/wicket/common/src/main/resources/static/index.html b/examples/demo/wicket/jdo/src/main/resources/static/index.html
similarity index 99%
copy from examples/demo/wicket/common/src/main/resources/static/index.html
copy to examples/demo/wicket/jdo/src/main/resources/static/index.html
index f3d892ebfe..52c7b9ff47 100644
--- a/examples/demo/wicket/common/src/main/resources/static/index.html
+++ b/examples/demo/wicket/jdo/src/main/resources/static/index.html
@@ -66,6 +66,7 @@
                         <a href="http://restfulobjects.org"  target="_blank">Restful Objects</a> spec.
                     </p>
                 </li>
+                <!--
                 <li>
                     <p>
                         <b><a href="kroviz/index.html">Kroviz (INCUBATING)</a></b>
@@ -89,6 +90,7 @@
                         This viewer is still in the Apache Causeway Incubator - use at your own risk and please report bugs.
                     </p>
                 </li>
+                -->
             </ul>
 
             <p>
diff --git a/examples/demo/wicket/common/src/main/resources/static/index.html b/examples/demo/wicket/jpa-and-graphql/src/resources/static/index.html
similarity index 99%
copy from examples/demo/wicket/common/src/main/resources/static/index.html
copy to examples/demo/wicket/jpa-and-graphql/src/resources/static/index.html
index f3d892ebfe..7ea10e294e 100644
--- a/examples/demo/wicket/common/src/main/resources/static/index.html
+++ b/examples/demo/wicket/jpa-and-graphql/src/resources/static/index.html
@@ -66,6 +66,7 @@
                         <a href="http://restfulobjects.org"  target="_blank">Restful Objects</a> spec.
                     </p>
                 </li>
+                <!--
                 <li>
                     <p>
                         <b><a href="kroviz/index.html">Kroviz (INCUBATING)</a></b>
@@ -78,6 +79,7 @@
                         This viewer is still in the Apache Causeway Incubator - use at your own risk and please report bugs.
                     </p>
                 </li>
+                -->
                 <li>
                     <p>
                         <b>
diff --git a/examples/demo/wicket/jpa/src/resources/log4j2-spring.xml b/examples/demo/wicket/jpa/src/main/resources/log4j2-spring.xml
similarity index 100%
rename from examples/demo/wicket/jpa/src/resources/log4j2-spring.xml
rename to examples/demo/wicket/jpa/src/main/resources/log4j2-spring.xml
diff --git a/examples/demo/wicket/common/src/main/resources/static/index.html b/examples/demo/wicket/jpa/src/main/resources/static/index.html
similarity index 99%
rename from examples/demo/wicket/common/src/main/resources/static/index.html
rename to examples/demo/wicket/jpa/src/main/resources/static/index.html
index f3d892ebfe..52c7b9ff47 100644
--- a/examples/demo/wicket/common/src/main/resources/static/index.html
+++ b/examples/demo/wicket/jpa/src/main/resources/static/index.html
@@ -66,6 +66,7 @@
                         <a href="http://restfulobjects.org"  target="_blank">Restful Objects</a> spec.
                     </p>
                 </li>
+                <!--
                 <li>
                     <p>
                         <b><a href="kroviz/index.html">Kroviz (INCUBATING)</a></b>
@@ -89,6 +90,7 @@
                         This viewer is still in the Apache Causeway Incubator - use at your own risk and please report bugs.
                     </p>
                 </li>
+                -->
             </ul>
 
             <p>