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

danhaywood pushed a commit to branch ISIS-3271
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 232b3b948f8ee5cc8018b5d35abc1a94a1bd04f0
Author: Dan Haywood <[email protected]>
AuthorDate: Thu Nov 3 15:32:38 2022 +0000

    ISIS-3255: updating docs and javadocs is all
---
 .../adoc/modules/commandlog/pages/about.adoc       | 120 +++++++++++-----
 .../commandsubscriber-vs-executionsubscriber.adoc  |  18 +++
 .../commandlog/applib/app/CommandLogMenu.java      |   3 +
 .../commandlog/applib/dom/CommandLogEntry.java     |   2 +
 .../applib/dom/CommandLogEntryRepository.java      |   5 +
 .../commandlog/applib/dom/ReplayState.java         |   9 ++
 .../dom/mixins/CommandLogEntry_childCommands.java  |   3 +
 .../mixins/CommandLogEntry_openResultObject.java   |   3 +
 .../mixins/CommandLogEntry_siblingCommands.java    |   3 +
 .../excel/applib/CausewayModuleExtExcelApplib.java |   2 +-
 .../excel/applib/service/ExcelServiceDefault.java  |   9 +-
 .../DemoFixture_extending_ExcelFixture2.java       |   5 +-
 .../adoc/modules/executionlog/pages/about.adoc     | 155 ++++++++++++++++++++-
 .../CausewayModuleExtExecutionLogApplib.java       |   3 +
 .../executionlog/applib/app/ExecutionLogMenu.java  |   3 +
 .../executionlog/applib/dom/ExecutionLogEntry.java |   2 +
 .../applib/dom/ExecutionLogEntryRepository.java    |   2 +
 .../applib/dom/ExecutionLogEntryType.java          |   3 +
 .../ExecutionLogEntry_siblingExecutions.java       |   3 +
 .../ExecutionSubscriberForExecutionLog.java        |   3 +
 .../adoc/modules/executionoutbox/pages/about.adoc  |  25 ++++
 .../CausewayModuleExtExecutionOutboxApplib.java    |   3 +
 .../applib/app/ExecutionOutboxMenu.java            |   3 +
 .../applib/dom/ExecutionOutboxEntry.java           |   2 +
 .../applib/dom/ExecutionOutboxEntryRepository.java |   2 +
 .../applib/dom/ExecutionOutboxEntryType.java       |   3 +
 .../applib/restapi/OutboxEvents.java               |   3 +
 .../applib/restapi/OutboxRestApi.java              |   3 +
 .../ContentMappingServiceForOutboxEvents.java      |   3 +
 .../ExecutionSubscriberForExecutionOutbox.java     |   3 +
 .../ExecutionLogEntry_copyToOutbox.java            |  12 ++
 .../adoc/modules/audittrail/pages/about.adoc       |  74 +++++-----
 .../audittrail/applib/app/AuditTrailMenu.java      |   3 +
 .../feature/api/ApplicationFeatureChoices.java     |   2 +
 .../ApplicationFeatureViewModel_permissions.java   |   4 +
 .../app/ApplicationOrphanedPermissionManager.java  |   4 +
 ...OrphanedPermissionManager_relocateSelected.java |   4 +
 .../ApplicationPermissionRepositoryAbstract.java   |   4 +
 .../dom/mixins/ApplicationPermission_allow.java    |   4 +
 .../dom/mixins/ApplicationPermission_changing.java |   4 +
 .../dom/mixins/ApplicationPermission_delete.java   |   4 +
 .../dom/mixins/ApplicationPermission_feature.java  |   4 +
 .../mixins/ApplicationPermission_updateRole.java   |   4 +
 .../dom/mixins/ApplicationPermission_veto.java     |   4 +
 .../dom/mixins/ApplicationPermission_viewing.java  |   4 +
 .../permission/menu/ApplicationPermissionMenu.java |   4 +
 .../dom/ApplicationRoleRepositoryAbstract.java     |   4 +
 .../dom/mixins/ApplicationRole_addPermission.java  |   4 +
 .../role/dom/mixins/ApplicationRole_addUser.java   |   4 +
 .../role/dom/mixins/ApplicationRole_delete.java    |   4 +
 .../mixins/ApplicationRole_removePermissions.java  |   4 +
 .../dom/mixins/ApplicationRole_removeUsers.java    |   4 +
 .../mixins/ApplicationRole_updateDescription.java  |   4 +
 .../dom/mixins/ApplicationRole_updateName.java     |   4 +
 .../applib/role/man/ApplicationRoleManager.java    |   4 +
 .../mixins/ApplicationRoleManager_allRoles.java    |   4 +
 .../ApplicationRoleManager_exportAsYaml.java       |   4 +
 .../man/mixins/ApplicationRoleManager_newRole.java |   4 +
 .../applib/role/menu/ApplicationRoleMenu.java      |   4 +
 .../seed/CausewayAppFeatureRoleAndPermissions.java |   2 +
 .../CausewayConfigurationRoleAndPermissions.java   |   2 +
 .../CausewayExtAuditTrailRoleAndPermissions.java   |   2 +-
 .../CausewayExtCommandLogRoleAndPermissions.java   |   2 +-
 .../CausewayExtExecutionLogRoleAndPermissions.java |   2 +-
 ...usewayExtExecutionOutboxRoleAndPermissions.java |   2 +-
 .../CausewayExtH2ConsoleRoleAndPermissions.java    |   2 +-
 .../CausewayExtSecmanAdminRoleAndPermissions.java  |   7 +-
 ...ewayExtSecmanRegularUserRoleAndPermissions.java |   2 +-
 .../CausewayExtSessionLogRoleAndPermissions.java   |   2 +-
 ...yPersistenceJdoMetaModelRoleAndPermissions.java |   2 +-
 .../CausewaySudoImpersonateRoleAndPermissions.java |   4 +
 ...werRestfulObjectsSwaggerRoleAndPermissions.java |   2 +-
 .../dom/ApplicationTenancyRepositoryAbstract.java  |   4 +
 .../dom/mixins/ApplicationTenancy_addChild.java    |   4 +
 .../dom/mixins/ApplicationTenancy_addUser.java     |   4 +
 .../dom/mixins/ApplicationTenancy_delete.java      |   4 +
 .../dom/mixins/ApplicationTenancy_removeChild.java |   4 +
 .../dom/mixins/ApplicationTenancy_removeUser.java  |   4 +
 .../dom/mixins/ApplicationTenancy_updateName.java  |   4 +
 .../dom/mixins/ApplicationTenancy_users.java       |   4 +
 .../fixtures/AbstractTenancyFixtureScript.java     |   4 +
 .../tenancy/man/ApplicationTenancyManager.java     |   4 +
 .../ApplicationTenancyManager_allTenancies.java    |   4 +
 .../ApplicationTenancyManager_newTenancy.java      |   4 +
 .../tenancy/menu/ApplicationTenancyMenu.java       |   4 +
 .../user/contributions/HasUsername_open.java       |   4 +
 .../dom/ApplicationUserRepositoryAbstract.java     |   4 +
 .../user/dom/mixins/ApplicationUser_addRole.java   |   4 +
 .../user/dom/mixins/ApplicationUser_delete.java    |   4 +
 .../user/dom/mixins/ApplicationUser_duplicate.java |   4 +
 .../user/dom/mixins/ApplicationUser_lock.java      |   4 +
 .../dom/mixins/ApplicationUser_removeRoles.java    |   4 +
 .../dom/mixins/ApplicationUser_resetPassword.java  |   4 +
 .../user/dom/mixins/ApplicationUser_timeZone.java  |   4 +
 .../user/dom/mixins/ApplicationUser_unlock.java    |   4 +
 .../mixins/ApplicationUser_updateAccountType.java  |   4 +
 .../dom/mixins/ApplicationUser_updateAtPath.java   |   4 +
 .../mixins/ApplicationUser_updateEmailAddress.java |   4 +
 .../mixins/ApplicationUser_updateFaxNumber.java    |   4 +
 .../dom/mixins/ApplicationUser_updateLocale.java   |   4 +
 .../dom/mixins/ApplicationUser_updateName.java     |   4 +
 .../dom/mixins/ApplicationUser_updatePassword.java |   4 +
 .../mixins/ApplicationUser_updatePhoneNumber.java  |   4 +
 .../dom/mixins/ApplicationUser_updateUsername.java |   4 +
 ...ApplicationUser_effectiveMemberPermissions.java |   4 +
 ...ationUser_filterEffectiveMemberPermissions.java |   4 +
 .../dom/mixins/perms/UserPermissionViewModel.java  |   2 +
 .../applib/user/man/ApplicationUserManager.java    |   4 +
 .../mixins/ApplicationUserManager_allUsers.java    |   4 +
 .../ApplicationUserManager_newDelegateUser.java    |   4 +
 .../ApplicationUserManager_newLocalUser.java       |   4 +
 .../applib/user/menu/ApplicationUserMenu.java      |   4 +
 .../secman/applib/util/RegexReplacer.java          |   4 +
 .../adoc/modules/sessionlog/pages/about.adoc       |  26 ++++
 .../sessionlog/applib/app/SessionLogMenu.java      |   5 +-
 .../HasUsername_recentSessionsForUser.java         |   5 +
 .../sessionlog/applib/dom/SessionLogEntry.java     |   6 +
 .../applib/dom/SessionLogEntryRepository.java      |   2 +
 .../spiimpl/SessionLogServiceInitializer.java      |  10 ++
 .../spiimpl/SessionSubscriberForSessionLog.java    |   7 +-
 .../CausewayModuleRestfulObjectsRendering.java     |   2 +-
 121 files changed, 755 insertions(+), 100 deletions(-)

diff --git 
a/extensions/core/commandlog/adoc/modules/commandlog/pages/about.adoc 
b/extensions/core/commandlog/adoc/modules/commandlog/pages/about.adoc
index f9ad99ca03..a151e2ecf0 100644
--- a/extensions/core/commandlog/adoc/modules/commandlog/pages/about.adoc
+++ b/extensions/core/commandlog/adoc/modules/commandlog/pages/about.adoc
@@ -4,14 +4,23 @@
 :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 _commandlog_ module provides an implementation of 
xref:refguide:applib:index/services/publishing/spi/CommandSubscriber.adoc[] SPI 
that persists 
xref:refguide:applib:index/services/command/Command.adoc[Command]s using either 
the xref:pjpa:ROOT:about.adoc[JPA/EclipseLink] or 
xref:pjdo:ROOT:about.adoc[JDO/DataNucleus] object store.
-This can be useful for auditing.
+The _Command Log_ module provides an implementation of 
xref:refguide:applib:index/services/publishing/spi/CommandSubscriber.adoc[] SPI 
that persists 
xref:refguide:applib:index/services/command/Command.adoc[Command]s using either 
the xref:pjpa:ROOT:about.adoc[JPA/EclipseLink] or 
xref:pjdo:ROOT:about.adoc[JDO/DataNucleus] object store.
 
+One use case is to combine with the xref:security:audittrail:about.adoc[] 
extension.
+The _commandlog_ module logs the action invocations or property edits that the 
end-user makes, while the _audit trail_ logs the resultant changes in state to 
domain objects.
+The two logs are correlated using the 
xref:refguide:applib:index/services/iactn/Interaction.adoc#getInteractionId_[interactionId]
 of the owning 
xref:refguide:applib:index/services/iactn/Interaction.adoc[interaction].
 
+Another use case is to support (persisted) background commands, whereby 
actions are not invoked immediately but instead persisted and invoked by a 
background thread; this is described in the 
xref:#background-commands[background commands] section below.
 
-include::docs:mavendeps:partial$setup-and-configure-dependencyManagement.adoc[leveloffset=+1]
+Sometimes the xref:executionlog:about.adoc[] extension is also configured with 
or instead of this extension; see the xref:#notes[notes] below to compare and 
contrast.
 
-In addition, add a section for secman's own BOM:
+
+
+== Setup
+
+include::docs:mavendeps:partial$setup-and-configure-dependencyManagement.adoc[leveloffset=+2]
+
+In addition, add a section for _Command Log_'s own BOM:
 
 [source,xml,subs="attributes+"]
 .pom.xml
@@ -30,7 +39,7 @@ In addition, add a section for secman's own BOM:
 ----
 
 [#dependencies]
-== Dependencies
+=== Dependencies
 
 In the webapp module of your application, add the following dependency:
 
@@ -48,7 +57,7 @@ In the webapp module of your application, add the following 
dependency:
 
 
 [[_update-appmanifest]]
-== Update AppManifest
+=== Update AppManifest
 
 
 In your application's `AppManifest` (top-level Spring `@Configuration` used to 
bootstrap the app), import the CommandLog modules.
@@ -71,9 +80,9 @@ public class AppManifest {
 
 
 [#configure-properties]
-== Configuration Properties
+=== Configuration Properties
 
-Add the database schema used by the CommandLog entities to the configuration 
file:
+Add the database schema used by the _Command Log_ entities to the 
configuration file:
 
 [source,yaml]
 .application.yml
@@ -101,6 +110,70 @@ causeway:
 See 
xref:refguide:config:sections/causeway.extensions.adoc#causeway.extensions.command-log.publish-policy[causeway.extensions.command-log.publish-policy]
 configuration property for more details.
 
 
+[#menubar-layout-xml]
+=== menubar.layout.xml
+
+Once configured, the extension provides a number of menu actions.
+You can use `menubars.layout.xml` to arrange these as you see fit.
+To get you started, the following fragment adds all of the actions to an 
"Activity" secondary menu:
+
+[source,xml]
+.menubars.layout.xml
+----
+<mb3:secondary>
+    ...
+    <mb3:menu>
+        <mb3:named>Activity</mb3:named>
+        ...
+        <mb3:section>
+            <mb3:named>Commands</mb3:named>
+            <mb3:serviceAction id="activeCommands" 
objectType="isis.ext.commandLog.CommandLogMenu"/>
+            <mb3:serviceAction id="findMostRecent" 
objectType="isis.ext.commandLog.CommandLogMenu"/>
+            <mb3:serviceAction id="findCommands" 
objectType="isis.ext.commandLog.CommandLogMenu"/>
+            <mb3:serviceAction id="findAll" 
objectType="isis.ext.commandLog.CommandLogMenu"/>
+        </mb3:section>
+        ...
+    </mb3:menu>
+</mb3:secondary>
+----
+
+[#security-roles]
+=== Security Roles
+
+TODO - v2
+
+
+
+
+[#background-commands]
+== User Interface
+
+The extension provides a number of menu actions and contributions.
+
+The menu actions are as listed in xref:menubar-layout-xml[], above.
+They allow the administrator to query the persisted commands.
+Typically access to these actions would be restricted, see 
xref:security-roles[security roles] above.
+
+The extension also provides these mixins:
+
+* 
xref:refguide:extensions:index/commandlog/applib/contributions/Object_recentCommands.adoc[]
++
+This contributes a `recentCommands` collection to each and every domain object.
++
+This can be explicit positioned through the domain class' own 
xref:userguide:fun:ui.adoc#object-layout[layout file], but this is generally 
not necessary: it will slot into the tab group in the layout file indicated for 
unreferenced collections using `<tabGroup unreferencedCollections="true">`.
+
+* 
xref:refguide:extensions:index/commandlog/applib/contributions/HasUsername_recentCommandsByUser.adoc[]
++
+This contributes the `recentCommandsByUser` collection to any domain object 
that implements the 
xref:refguide:applib:index/mixins/security/HasUsername.adoc[] interface.
++
+Most notably, this is xref:security:secman:about.adoc[] extension's 
xref:refguide:extensions:index/secman/applib/user/dom/ApplicationUser.adoc[] 
entity that represents a logged-on user.
+It is also supported by xref:security:sessionlog:about.adoc
+
+* 
xref:refguide:extensions:index/commandlog/applib/contributions/HasInteractionId_commandLogEntry.adoc[]
+
+
+
+[#background-commands]
 == Background Commands
 
 Sometimes we might want to execute an action not immediately in the current 
users's thread of control, but instead to perform it in the background; for 
example any long-running process.
@@ -217,43 +290,20 @@ If you don't want to use this functionality and want to 
exclude quartz, then add
 
 
 
+[#notes]
 == Notes
 
-Conceptually a *command* represents the _intention_ to execute an action or to 
edit a property ("before" the change), while an *interaction execution* 
represents the actual execution itself ("after" the change).
-
-The 
xref:refguide:applib:index/services/publishing/spi/CommandSubscriber.adoc[] SPI 
and 
xref:refguide:applib:index/services/publishing/spi/ExecutionSubscriber.adoc[] 
SPI allow either to be subscribed to.
-From an auditing perspective, their behaviour is quite similar:
-
-* even though a command represents the _intention_ to invoke an action, its 
xref:refguide:applib:index/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber]
 SPI is only called once the action/property edit has been completed.
-
-* the 
xref:refguide:applib:index/services/publishing/spi/ExecutionSubscriber.adoc[] 
is called as soon as the action has completed.
-In most interactions there will only be a single action called within the 
interaction, hence these two subscribers will be called at almost the same time 
with very similar payloads.
-
-However, there can be some subtle differences:
-
-* the xref:refguide:applib:index/services/wrapper/WrapperFactory.adoc[] 
service allows actions to be invoked "as if" through the user interface.
-Therefore one action can execute another can execute another, creating a 
nested call graph of executions.
-+
-The  
xref:refguide:applib:index/services/publishing/spi/ExecutionSubscriber.adoc[] 
is called after each and every execution as it completes, so will be called 
several times.
-
-* In contrast, the 
xref:refguide:applib:index/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber]
 is called only once, for the top-level (outermost) action.
-
+include::partial$commandsubscriber-vs-executionsubscriber.adoc[]
 
 
 
 == See also
 
+* xref:refguide:applib:index/services/iactn/Interaction.adoc[interaction]
+* xref:refguide:applib:index/services/iactnlayer/InteractionService.adoc[].
 * xref:refguide:applib:index/services/wrapper/WrapperFactory.adoc[] service
 * 
xref:refguide:extensions:index/commandlog/applib/dom/BackgroundService.adoc[BackgroundService]
 service
 * xref:refguide:applib:index/services/publishing/spi/CommandSubscriber.adoc[] 
SPI
 * 
xref:refguide:applib:index/services/publishing/spi/ExecutionSubscriber.adoc[] 
SPI
 * xref:executionlog:about.adoc[] extension
 
-
-
-
-
-
-
-
-
diff --git 
a/extensions/core/commandlog/adoc/modules/commandlog/partials/commandsubscriber-vs-executionsubscriber.adoc
 
b/extensions/core/commandlog/adoc/modules/commandlog/partials/commandsubscriber-vs-executionsubscriber.adoc
new file mode 100644
index 0000000000..3c976b2079
--- /dev/null
+++ 
b/extensions/core/commandlog/adoc/modules/commandlog/partials/commandsubscriber-vs-executionsubscriber.adoc
@@ -0,0 +1,18 @@
+Conceptually a *command* represents the _intention_ to execute an action or to 
edit a property ("before" the change), while an *interaction execution* 
represents the actual execution itself ("after" the change).
+
+The 
xref:refguide:applib:index/services/publishing/spi/CommandSubscriber.adoc[] SPI 
and 
xref:refguide:applib:index/services/publishing/spi/ExecutionSubscriber.adoc[] 
SPI allow either to be subscribed to.
+From an auditing perspective, their behaviour is quite similar:
+
+* even though a command represents the _intention_ to invoke an action, its 
xref:refguide:applib:index/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber]
 SPI is only called once the action/property edit has been completed.
+
+* the 
xref:refguide:applib:index/services/publishing/spi/ExecutionSubscriber.adoc[] 
is called as soon as the action has completed.
+In most interactions there will only be a single action called within the 
interaction, hence these two subscribers will be called at almost the same time 
with very similar payloads.
+
+However, there can be some subtle differences:
+
+* the xref:refguide:applib:index/services/wrapper/WrapperFactory.adoc[] 
service allows actions to be invoked "as if" through the user interface.
+Therefore one action can execute another can execute another, creating a 
nested call graph of executions.
++
+The  
xref:refguide:applib:index/services/publishing/spi/ExecutionSubscriber.adoc[] 
is called after each and every execution as it completes, so will be called 
several times.
+
+* In contrast, the 
xref:refguide:applib:index/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber]
 is called only once, for the top-level (outermost) action.
diff --git 
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/app/CommandLogMenu.java
 
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/app/CommandLogMenu.java
index 28a42bcc64..25df5abafb 100644
--- 
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/app/CommandLogMenu.java
+++ 
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/app/CommandLogMenu.java
@@ -45,6 +45,9 @@ import 
org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntryRepos
 import lombok.RequiredArgsConstructor;
 
 /**
+ * This service exposes a set of menu actions to search and list {@link 
CommandLogEntry command}s, by default under
+ * the &quot;Activity&quot; secondary menu.
+ *
  * @since 2.0 {@index}
  */
 @Named(CommandLogMenu.LOGICAL_TYPE_NAME)
diff --git 
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/CommandLogEntry.java
 
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/CommandLogEntry.java
index 297653ee9f..ebe5361a66 100644
--- 
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/CommandLogEntry.java
+++ 
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/CommandLogEntry.java
@@ -70,6 +70,8 @@ import lombok.val;
  * Note that this class doesn't subclass from {@link Command} ({@link Command}
  * is not an interface), but it does implement {@link HasCommandDto}, 
providing access to
  * {@link CommandDto}, a serialized representation of the {@link Command}.
+ *
+ * @since 2.x {@index}
  */
 @Named(CommandLogEntry.LOGICAL_TYPE_NAME)
 @DomainObject(
diff --git 
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/CommandLogEntryRepository.java
 
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/CommandLogEntryRepository.java
index 8cb4f9f9e0..d8a8267221 100644
--- 
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/CommandLogEntryRepository.java
+++ 
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/CommandLogEntryRepository.java
@@ -51,6 +51,11 @@ import org.apache.causeway.schema.common.v2.InteractionType;
 import lombok.Getter;
 import lombok.val;
 
+/**
+ * Provides supporting functionality for querying {@link CommandLogEntry 
command log entry} entities.
+ *
+ * @since 2.0 {@index}
+ */
 public abstract class CommandLogEntryRepository<C extends CommandLogEntry> {
 
     public static class NotFoundException extends RecoverableException {
diff --git 
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/ReplayState.java
 
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/ReplayState.java
index b29d7887e5..30a137e1aa 100644
--- 
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/ReplayState.java
+++ 
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/ReplayState.java
@@ -18,6 +18,15 @@
  */
 package org.apache.causeway.extensions.commandlog.applib.dom;
 
+/**
+ * Curently unused.
+ *
+ * <p>
+ *     This enum to support the (incubating) <i>Command Replay</i> extension.
+ * </p>
+ *
+ * @since 2.x {@index}
+ */
 public enum ReplayState {
     /**
      * As used on primary system.
diff --git 
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.java
 
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.java
index c6bc1b29fa..424cd30ea1 100644
--- 
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.java
+++ 
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/mixins/CommandLogEntry_childCommands.java
@@ -30,6 +30,9 @@ import 
org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntryRepos
 import lombok.RequiredArgsConstructor;
 
 
+/**
+ * @since 2.x {@index}
+ */
 @Collection(
     domainEvent = CommandLogEntry_childCommands.CollectionDomainEvent.class
 )
diff --git 
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/mixins/CommandLogEntry_openResultObject.java
 
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/mixins/CommandLogEntry_openResultObject.java
index 05b1afe209..8df411acc1 100644
--- 
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/mixins/CommandLogEntry_openResultObject.java
+++ 
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/mixins/CommandLogEntry_openResultObject.java
@@ -32,6 +32,9 @@ import 
org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntry;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ * @since 2.x {@index}
+ */
 @Action(
     semantics = SemanticsOf.SAFE,
     domainEvent = CommandLogEntry_openResultObject.ActionDomainEvent.class
diff --git 
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/mixins/CommandLogEntry_siblingCommands.java
 
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/mixins/CommandLogEntry_siblingCommands.java
index a6ff73836c..0c1bf8f521 100644
--- 
a/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/mixins/CommandLogEntry_siblingCommands.java
+++ 
b/extensions/core/commandlog/applib/src/main/java/org/apache/causeway/extensions/commandlog/applib/dom/mixins/CommandLogEntry_siblingCommands.java
@@ -30,6 +30,9 @@ import 
org.apache.causeway.extensions.commandlog.applib.dom.CommandLogEntryRepos
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ * @since 2.x {@index}
+ */
 @Collection(
     domainEvent = CommandLogEntry_siblingCommands.CollectionDomainEvent.class
 )
diff --git 
a/extensions/core/excel/applib/src/main/java/org/apache/causeway/extensions/excel/applib/CausewayModuleExtExcelApplib.java
 
b/extensions/core/excel/applib/src/main/java/org/apache/causeway/extensions/excel/applib/CausewayModuleExtExcelApplib.java
index 9c3329875a..3e95c37552 100644
--- 
a/extensions/core/excel/applib/src/main/java/org/apache/causeway/extensions/excel/applib/CausewayModuleExtExcelApplib.java
+++ 
b/extensions/core/excel/applib/src/main/java/org/apache/causeway/extensions/excel/applib/CausewayModuleExtExcelApplib.java
@@ -32,6 +32,6 @@ import 
org.apache.causeway.extensions.excel.applib.service.ExcelServiceDefault;
 })
 public class CausewayModuleExtExcelApplib {
 
-    public static final String NAMESPACE = "causeway.sub.excel";
+    public static final String NAMESPACE = "causeway.ext.excel";
 
 }
diff --git 
a/extensions/core/excel/applib/src/main/java/org/apache/causeway/extensions/excel/applib/service/ExcelServiceDefault.java
 
b/extensions/core/excel/applib/src/main/java/org/apache/causeway/extensions/excel/applib/service/ExcelServiceDefault.java
index 225e1eda7d..e5c5bef3b5 100644
--- 
a/extensions/core/excel/applib/src/main/java/org/apache/causeway/extensions/excel/applib/service/ExcelServiceDefault.java
+++ 
b/extensions/core/excel/applib/src/main/java/org/apache/causeway/extensions/excel/applib/service/ExcelServiceDefault.java
@@ -28,6 +28,7 @@ import javax.annotation.Priority;
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.apache.causeway.extensions.excel.applib.*;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -37,18 +38,16 @@ import 
org.apache.causeway.applib.annotation.PriorityPrecedence;
 import org.apache.causeway.applib.services.inject.ServiceInjector;
 import org.apache.causeway.applib.value.Blob;
 import org.apache.causeway.commons.internal.collections._Lists;
-import org.apache.causeway.extensions.excel.applib.ExcelService;
-import org.apache.causeway.extensions.excel.applib.Mode;
-import org.apache.causeway.extensions.excel.applib.WorksheetContent;
-import org.apache.causeway.extensions.excel.applib.WorksheetSpec;
 
 
 @Service
-@Named("causeway.sub.excel.ExcelServiceDefault")
+@Named(ExcelServiceDefault.LOGICAL_TYPE_NAME)
 @Priority(PriorityPrecedence.MIDPOINT)
 @Qualifier("Default")
 public class ExcelServiceDefault implements ExcelService {
 
+    static final String LOGICAL_TYPE_NAME = 
CausewayModuleExtExcelApplib.NAMESPACE + ".ExcelServiceDefault";
+
     private _ExcelServiceHelper helper;
 
     @PostConstruct
diff --git 
a/extensions/core/excel/fixture/src/main/java/org/apache/causeway/extensions/excel/fixtures/demoapp/demomodule/fixturescripts/DemoFixture_extending_ExcelFixture2.java
 
b/extensions/core/excel/fixture/src/main/java/org/apache/causeway/extensions/excel/fixtures/demoapp/demomodule/fixturescripts/DemoFixture_extending_ExcelFixture2.java
index 4c0fe67532..aaa1891f68 100644
--- 
a/extensions/core/excel/fixture/src/main/java/org/apache/causeway/extensions/excel/fixtures/demoapp/demomodule/fixturescripts/DemoFixture_extending_ExcelFixture2.java
+++ 
b/extensions/core/excel/fixture/src/main/java/org/apache/causeway/extensions/excel/fixtures/demoapp/demomodule/fixturescripts/DemoFixture_extending_ExcelFixture2.java
@@ -22,6 +22,7 @@ import javax.inject.Named;
 
 import org.apache.causeway.applib.annotation.DomainObject;
 import org.apache.causeway.commons.internal.resources._Resources;
+import 
org.apache.causeway.extensions.excel.applib.CausewayModuleExtExcelApplib;
 import org.apache.causeway.extensions.excel.applib.Mode;
 import org.apache.causeway.extensions.excel.applib.WorksheetSpec;
 import 
org.apache.causeway.extensions.excel.fixtures.demoapp.demomodule.fixturehandlers.demotodoitem.DemoToDoItemRowHandler2;
@@ -30,10 +31,12 @@ import 
org.apache.causeway.extensions.excel.testing.ExcelFixture2;
 import lombok.Getter;
 import lombok.Setter;
 
-@Named("causeway.sub.excel.DemoFixture_extending_ExcelFixture2")
+@Named(DemoFixture_extending_ExcelFixture2.LOGICAL_TYPE_NAME)
 @DomainObject
 public class DemoFixture_extending_ExcelFixture2 extends ExcelFixture2 {
 
+    static final String LOGICAL_TYPE_NAME = 
CausewayModuleExtExcelApplib.NAMESPACE + ".DemoFixture_extending_ExcelFixture2";
+
     public DemoFixture_extending_ExcelFixture2(){
         this.resourceName = "ToDoItems.xlsx";
     }
diff --git 
a/extensions/core/executionlog/adoc/modules/executionlog/pages/about.adoc 
b/extensions/core/executionlog/adoc/modules/executionlog/pages/about.adoc
index 0f81434e63..4b9eb5cc94 100644
--- a/extensions/core/executionlog/adoc/modules/executionlog/pages/about.adoc
+++ b/extensions/core/executionlog/adoc/modules/executionlog/pages/about.adoc
@@ -4,9 +4,160 @@
 :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 _executionlog_ module provides an implementation of 
xref:refguide:applib:index/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber]
 that persists 
xref:refguide:applib:index/services/iactn/Execution.adoc[Execution]s using 
either the xref:pjpa:ROOT:about.adoc[JPA/EclipseLink] or 
xref:pjdo:ROOT:about.adoc[JDO/DataNucleus] object store.
+The _Execution Log_ module provides an implementation of 
xref:refguide:applib:index/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber]
 that persists 
xref:refguide:applib:index/services/iactn/Execution.adoc[Execution]s using 
either the xref:pjpa:ROOT:about.adoc[JPA/EclipseLink] or 
xref:pjdo:ROOT:about.adoc[JDO/DataNucleus] object store.
 
-WARNING: TODO: v2 - to write up...
 
+One use case is to combine with the xref:security:audittrail:about.adoc[] 
extension.
+The _commandlog_ module logs the action invocations or property edits that the 
end-user makes, while the _audit trail_ logs the resultant changes in state to 
domain objects.
+The two logs are correlated using the 
xref:refguide:applib:index/services/iactn/Interaction.adoc#getInteractionId_[interactionId]
 of the owning 
xref:refguide:applib:index/services/iactn/Interaction.adoc[interaction].
 
+Sometimes the xref:commandlog:about.adoc[] extension is also configured with 
or instead of this extension; see the xref:#notes[notes] below to compare and 
contrast.
+
+
+== Setup
+
+include::docs:mavendeps:partial$setup-and-configure-dependencyManagement.adoc[leveloffset=+2]
+
+In addition, add a section for secman's own BOM:
+
+[source,xml,subs="attributes+"]
+.pom.xml
+----
+<dependencyManagement>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.causeway.extensions</groupId>
+            <artifactId>causeway-extensions-executionlog</artifactId>
+            <scope>import</scope>
+            <type>pom</type>
+            <version>{page-causewayrel}</version>
+        </dependency>
+    </dependencies>
+</dependencyManagement>
+----
+
+[#dependencies]
+=== Dependencies
+
+In the webapp module of your application, add the following dependency:
+
+[source,xml]
+.pom.xml
+----
+<dependencies>
+    <dependency>
+        <groupId>org.apache.causeway.extensions</groupId>
+        
<artifactId>causeway-extensions-executionlog-persistence-XXX</artifactId>    
<!--.-->
+    </dependency>
+</dependencies>
+----
+<.> specify either `causeway-extensions-executionlog-persistence-jpa` or 
`causeway-extensions-executionlog-persistence-jdo`, as required
+
+[[_update-appmanifest]]
+=== Update AppManifest
+
+
+In your application's `AppManifest` (top-level Spring `@Configuration` used to 
bootstrap the app), import the CommandLog modules.
+You will also need to import the fixture module; SecMan uses fixture scripts 
to seed its entities:
+
+[source,java]
+.AppManifest.java
+----
+@Configuration
+@Import({
+        ...
+        CausewayModuleExtCommandLogPersistenceXxx.class,        // <.>
+        ...
+})
+public class AppManifest {
+}
+----
+
+<.> specify either `CausewayModuleExtCommandLogPersistenceJdo` or 
`CausewayModuleExtCommandLogPersistenceJpa`, as required
+
+
+[#configure-properties]
+=== Configuration Properties
+
+Add the database schema used by the _Execution Log_ entities to the 
configuration file:
+
+[source,yaml]
+.application.yml
+----
+causeway:
+  persistence:
+    schema:
+      auto-create-schemas: causewayExtExecutionLog
+----
+
+This extension currently does not though define any configuration properties 
of its own.
+
+
+== menubar.layout.xml
+
+Once configured, the extension provides a number of menu actions.
+You can use `menubars.layout.xml` to arrange these as you see fit.
+To get you started, the following fragment adds all of the actions to an 
"Activity" secondary menu:
+
+[source,xml]
+.menubars.layout.xml
+----
+<mb3:secondary>
+    ...
+    <mb3:menu>
+        <mb3:named>Activity</mb3:named>
+        <mb3:section>
+            <mb3:named>Sessions</mb3:named>
+            <mb3:serviceAction id="activeSessions" 
objectType="isis.ext.sessionLog.SessionLogMenu"/>
+            <mb3:serviceAction id="findSessions" 
objectType="isis.ext.sessionLog.SessionLogMenu"/>
+        </mb3:section>
+        <mb3:section>
+            <mb3:named>Commands</mb3:named>
+            <mb3:serviceAction id="activeCommands" 
objectType="isis.ext.commandLog.CommandLogMenu"/>
+            <mb3:serviceAction id="findMostRecent" 
objectType="isis.ext.commandLog.CommandLogMenu"/>
+            <mb3:serviceAction id="findCommands" 
objectType="isis.ext.commandLog.CommandLogMenu"/>
+            <mb3:serviceAction id="findAll" 
objectType="isis.ext.commandLog.CommandLogMenu"/>
+        </mb3:section>
+        <mb3:section>
+            <mb3:named>Execution Log</mb3:named>
+            <mb3:serviceAction id="findMostRecent" 
objectType="isis.ext.executionLog.ExecutionLogMenu"/>
+            <mb3:serviceAction id="findExecutions" 
objectType="isis.ext.executionLog.ExecutionLogMenu"/>
+            <mb3:serviceAction id="findAll" 
objectType="isis.ext.executionLog.ExecutionLogMenu"/>
+        </mb3:section>
+        <mb3:section>
+            <mb3:named>Audit Trail</mb3:named>
+            <mb3:serviceAction id="findMostRecent" 
objectType="isis.ext.auditTrail.AuditTrailMenu"/>
+            <mb3:serviceAction id="findAuditEntries" 
objectType="isis.ext.auditTrail.AuditTrailMenu"/>
+            <mb3:serviceAction id="findAll" 
objectType="isis.ext.auditTrail.AuditTrailMenu"/>
+        </mb3:section>
+        <mb3:section>
+            <mb3:named>Execution Outbox</mb3:named>
+            <mb3:serviceAction id="findOldest" 
objectType="isis.ext.executionOutbox.ExecutionOutboxMenu"/>
+            <mb3:serviceAction id="findAll" 
objectType="isis.ext.executionOutbox.ExecutionOutboxMenu"/>
+        </mb3:section>
+    </mb3:menu>
+</mb3:secondary>
+----
+
+
+== Security Roles
+
+TODO - v2
+
+== Contributions
+
+
+
+[#notes]
+== Notes
+
+include::commandlog:partial$commandsubscriber-vs-executionsubscriber.adoc[]
+
+== See also
+
+* xref:refguide:applib:index/services/iactn/Interaction.adoc[interaction]
+* xref:refguide:applib:index/services/iactnlayer/InteractionService.adoc[].
+* xref:refguide:applib:index/services/publishing/spi/CommandSubscriber.adoc[] 
SPI
+* 
xref:refguide:applib:index/services/publishing/spi/ExecutionSubscriber.adoc[] 
SPI
+* xref:commandlog:about.adoc[] extension
 
diff --git 
a/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/CausewayModuleExtExecutionLogApplib.java
 
b/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/CausewayModuleExtExecutionLogApplib.java
index 196b1cb845..416bd00011 100644
--- 
a/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/CausewayModuleExtExecutionLogApplib.java
+++ 
b/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/CausewayModuleExtExecutionLogApplib.java
@@ -30,6 +30,9 @@ import 
org.apache.causeway.extensions.executionlog.applib.dom.mixins.ExecutionLo
 import 
org.apache.causeway.extensions.executionlog.applib.spiimpl.ExecutionSubscriberForExecutionLog;
 import org.apache.causeway.testing.fixtures.applib.modules.ModuleWithFixtures;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Import({
         // @DomainService's
diff --git 
a/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/app/ExecutionLogMenu.java
 
b/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/app/ExecutionLogMenu.java
index d8d3fc04c6..746ac4855e 100644
--- 
a/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/app/ExecutionLogMenu.java
+++ 
b/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/app/ExecutionLogMenu.java
@@ -44,6 +44,9 @@ import 
org.apache.causeway.extensions.executionlog.applib.dom.ExecutionLogEntryR
 import lombok.RequiredArgsConstructor;
 
 /**
+ * This service exposes a set of menu actions to search and list {@link 
ExecutionLogEntry execution}s, by default under
+ * the &quot;Activity&quot; secondary menu.
+ *
  * @since 2.0 {@index}
  */
 @Named(ExecutionLogMenu.LOGICAL_TYPE_NAME)
diff --git 
a/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/ExecutionLogEntry.java
 
b/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/ExecutionLogEntry.java
index 077c8e7bdd..f6adad4c50 100644
--- 
a/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/ExecutionLogEntry.java
+++ 
b/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/ExecutionLogEntry.java
@@ -74,6 +74,8 @@ import lombok.experimental.UtilityClass;
  *
  *  Note that this class implements {@link HasInteractionDto}, providing 
access to
  *  {@link org.apache.causeway.applib.services.iactn.Interaction}, a 
serialized representation containing the {@link 
org.apache.causeway.applib.services.iactn.Execution}.
+ *
+ * @since 2.0 {@index}
  */
 @Named(ExecutionLogEntry.LOGICAL_TYPE_NAME)
 @DomainObject(
diff --git 
a/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/ExecutionLogEntryRepository.java
 
b/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/ExecutionLogEntryRepository.java
index 35d73a4f1f..fbe3bf647a 100644
--- 
a/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/ExecutionLogEntryRepository.java
+++ 
b/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/ExecutionLogEntryRepository.java
@@ -45,6 +45,8 @@ import lombok.val;
 /**
  * Provides supporting functionality for querying and persisting
  * {@link ExecutionLogEntry command} entities.
+ *
+ * @since 2.0 {@index}
  */
 public abstract class ExecutionLogEntryRepository<E extends ExecutionLogEntry> 
{
 
diff --git 
a/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/ExecutionLogEntryType.java
 
b/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/ExecutionLogEntryType.java
index 1e8db89c83..dfc8630dd3 100644
--- 
a/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/ExecutionLogEntryType.java
+++ 
b/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/ExecutionLogEntryType.java
@@ -18,6 +18,9 @@
  */
 package org.apache.causeway.extensions.executionlog.applib.dom;
 
+/**
+ * @since 2.0 {@index}
+ */
 public enum ExecutionLogEntryType {
     ACTION_INVOCATION,
     PROPERTY_EDIT;
diff --git 
a/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/mixins/ExecutionLogEntry_siblingExecutions.java
 
b/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/mixins/ExecutionLogEntry_siblingExecutions.java
index a5bb0774ac..29c29ffebf 100644
--- 
a/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/mixins/ExecutionLogEntry_siblingExecutions.java
+++ 
b/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/dom/mixins/ExecutionLogEntry_siblingExecutions.java
@@ -32,6 +32,9 @@ import 
org.apache.causeway.extensions.executionlog.applib.dom.ExecutionLogEntryR
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Collection(
         domainEvent = 
ExecutionLogEntry_siblingExecutions.CollectionDomainEvent.class
 )
diff --git 
a/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/spiimpl/ExecutionSubscriberForExecutionLog.java
 
b/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/spiimpl/ExecutionSubscriberForExecutionLog.java
index df90ee0c43..eaf919dbca 100644
--- 
a/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/spiimpl/ExecutionSubscriberForExecutionLog.java
+++ 
b/extensions/core/executionlog/applib/src/main/java/org/apache/causeway/extensions/executionlog/applib/spiimpl/ExecutionSubscriberForExecutionLog.java
@@ -28,6 +28,9 @@ import 
org.apache.causeway.extensions.executionlog.applib.dom.ExecutionLogEntryR
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 @RequiredArgsConstructor
 public class ExecutionSubscriberForExecutionLog implements ExecutionSubscriber 
{
diff --git 
a/extensions/core/executionoutbox/adoc/modules/executionoutbox/pages/about.adoc 
b/extensions/core/executionoutbox/adoc/modules/executionoutbox/pages/about.adoc
index 18fca21305..17bdd9f080 100644
--- 
a/extensions/core/executionoutbox/adoc/modules/executionoutbox/pages/about.adoc
+++ 
b/extensions/core/executionoutbox/adoc/modules/executionoutbox/pages/about.adoc
@@ -15,3 +15,28 @@ Once processed (eg published to a message bus), the client 
then uses the same RE
 
 
 WARNING: TODO: v2 - to write up...
+
+
+== menubar.layout.xml
+
+Once configured, the extension provides a number of menu actions.
+You can use `menubars.layout.xml` to arrange these as you see fit.
+To get you started, the following fragment adds all of the actions to an 
"Activity" secondary menu:
+
+[source,xml]
+.menubars.layout.xml
+----
+<mb3:secondary>
+    ...
+    <mb3:menu>
+        <mb3:named>Activity</mb3:named>
+        ...
+        <mb3:section>
+            <mb3:named>Execution Outbox</mb3:named>
+            <mb3:serviceAction id="findOldest" 
objectType="isis.ext.executionOutbox.ExecutionOutboxMenu"/>
+            <mb3:serviceAction id="findAll" 
objectType="isis.ext.executionOutbox.ExecutionOutboxMenu"/>
+        </mb3:section>
+        ...
+    </mb3:menu>
+</mb3:secondary>
+----
diff --git 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/CausewayModuleExtExecutionOutboxApplib.java
 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/CausewayModuleExtExecutionOutboxApplib.java
index 300cfa3db3..14ef177c9e 100644
--- 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/CausewayModuleExtExecutionOutboxApplib.java
+++ 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/CausewayModuleExtExecutionOutboxApplib.java
@@ -27,6 +27,9 @@ import 
org.apache.causeway.extensions.executionoutbox.applib.restapi.OutboxRestA
 import 
org.apache.causeway.extensions.executionoutbox.applib.spiimpl.ContentMappingServiceForOutboxEvents;
 import 
org.apache.causeway.extensions.executionoutbox.applib.spiimpl.ExecutionSubscriberForExecutionOutbox;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Configuration
 @Import({
         // @DomainService's
diff --git 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/app/ExecutionOutboxMenu.java
 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/app/ExecutionOutboxMenu.java
index 1b155bb2d8..d319991081 100644
--- 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/app/ExecutionOutboxMenu.java
+++ 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/app/ExecutionOutboxMenu.java
@@ -41,6 +41,9 @@ import 
org.apache.causeway.extensions.executionoutbox.applib.dom.ExecutionOutbox
 import lombok.RequiredArgsConstructor;
 
 /**
+ * This service exposes a set of menu actions to search and list {@link 
ExecutionOutboxEntry execution}s in the outbox,
+ * by default under the &quot;Activity&quot; secondary menu.
+ *
  * @since 2.0 {@index}
  */
 @Named(ExecutionOutboxMenu.LOGICAL_TYPE_NAME)
diff --git 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/dom/ExecutionOutboxEntry.java
 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/dom/ExecutionOutboxEntry.java
index c924ebcfd4..cbe93c5747 100644
--- 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/dom/ExecutionOutboxEntry.java
+++ 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/dom/ExecutionOutboxEntry.java
@@ -76,6 +76,8 @@ import lombok.experimental.UtilityClass;
  *
  *  Note that this class implements {@link HasInteractionDto}, providing 
access to
  *  {@link org.apache.causeway.applib.services.iactn.Interaction}, a 
serialized representation containing the {@link Execution}.
+ *
+ * @since 2.0 {@index}
  */
 @Named(ExecutionOutboxEntry.LOGICAL_TYPE_NAME)
 @DomainObject(
diff --git 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/dom/ExecutionOutboxEntryRepository.java
 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/dom/ExecutionOutboxEntryRepository.java
index 27504a7ac3..845665039f 100644
--- 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/dom/ExecutionOutboxEntryRepository.java
+++ 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/dom/ExecutionOutboxEntryRepository.java
@@ -43,6 +43,8 @@ import lombok.Getter;
 /**
  * Provides supporting functionality for querying and persisting
  * {@link ExecutionOutboxEntry command} entities.
+ *
+ * @since 2.0 {@index}
  */
 public abstract class ExecutionOutboxEntryRepository<E extends 
ExecutionOutboxEntry> {
 
diff --git 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/dom/ExecutionOutboxEntryType.java
 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/dom/ExecutionOutboxEntryType.java
index 91608a608f..8959c05e6c 100644
--- 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/dom/ExecutionOutboxEntryType.java
+++ 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/dom/ExecutionOutboxEntryType.java
@@ -18,6 +18,9 @@
  */
 package org.apache.causeway.extensions.executionoutbox.applib.dom;
 
+/**
+ * @since 2.0 {@index}
+ */
 public enum ExecutionOutboxEntryType {
     ACTION_INVOCATION,
     PROPERTY_EDIT;
diff --git 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/restapi/OutboxEvents.java
 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/restapi/OutboxEvents.java
index c67da893c8..3c483e573f 100644
--- 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/restapi/OutboxEvents.java
+++ 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/restapi/OutboxEvents.java
@@ -43,6 +43,9 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+/**
+ * @since 2.0 {@index}
+ */
 @XmlRootElement
 @XmlType(
         propOrder = {
diff --git 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/restapi/OutboxRestApi.java
 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/restapi/OutboxRestApi.java
index f9fb9a134b..61645f7314 100644
--- 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/restapi/OutboxRestApi.java
+++ 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/restapi/OutboxRestApi.java
@@ -39,6 +39,9 @@ import 
org.apache.causeway.extensions.executionoutbox.applib.spiimpl.ContentMapp
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Named(OutboxRestApi.LOGICAL_TYPE_NAME)
 @DomainService(nature = NatureOfService.REST)
 @RequiredArgsConstructor
diff --git 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/spiimpl/ContentMappingServiceForOutboxEvents.java
 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/spiimpl/ContentMappingServiceForOutboxEvents.java
index b1307d993a..474df19520 100644
--- 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/spiimpl/ContentMappingServiceForOutboxEvents.java
+++ 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/spiimpl/ContentMappingServiceForOutboxEvents.java
@@ -34,6 +34,9 @@ import org.apache.causeway.schema.ixn.v2.InteractionsDto;
 
 import lombok.val;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 public class ContentMappingServiceForOutboxEvents implements 
ContentMappingService {
 
diff --git 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/spiimpl/ExecutionSubscriberForExecutionOutbox.java
 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/spiimpl/ExecutionSubscriberForExecutionOutbox.java
index 63e3d48a93..c692bbd9e9 100644
--- 
a/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/spiimpl/ExecutionSubscriberForExecutionOutbox.java
+++ 
b/extensions/core/executionoutbox/applib/src/main/java/org/apache/causeway/extensions/executionoutbox/applib/spiimpl/ExecutionSubscriberForExecutionOutbox.java
@@ -28,6 +28,9 @@ import 
org.apache.causeway.extensions.executionoutbox.applib.dom.ExecutionOutbox
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ * @since 2.0 {@index}
+ */
 @Service
 @RequiredArgsConstructor
 public class ExecutionSubscriberForExecutionOutbox implements 
ExecutionSubscriber {
diff --git 
a/extensions/core/executionrepublisher/applib/src/main/java/org/apache/causeway/extensions/executionrepublisher/applib/contributions/ExecutionLogEntry_copyToOutbox.java
 
b/extensions/core/executionrepublisher/applib/src/main/java/org/apache/causeway/extensions/executionrepublisher/applib/contributions/ExecutionLogEntry_copyToOutbox.java
index d988352ac9..870b1731a6 100644
--- 
a/extensions/core/executionrepublisher/applib/src/main/java/org/apache/causeway/extensions/executionrepublisher/applib/contributions/ExecutionLogEntry_copyToOutbox.java
+++ 
b/extensions/core/executionrepublisher/applib/src/main/java/org/apache/causeway/extensions/executionrepublisher/applib/contributions/ExecutionLogEntry_copyToOutbox.java
@@ -35,6 +35,18 @@ import 
org.apache.causeway.extensions.executionrepublisher.applib.CausewayModule
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ * This contributes a copyToOutbox action to each {@link ExecutionLogEntry} 
(from the <i>Execution Log</i> extension)
+ * so that it can be republished in the outbox.
+ *
+ * <p>
+ *     This is useful when both the <i>Execution Log</i> and <i>Execution 
Outbox</i> extensions are in use, and there
+ *     was a downstream problem with the processing of an execution <i>from 
the outbox</i>; the mixin takes a copy of
+ *     that execution from the log and copies it to the outbox in order that 
it can be reprocessed again.
+ * </p>
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = ExecutionLogEntry_copyToOutbox.ActionDomainEvent.class,
         semantics = SemanticsOf.NON_IDEMPOTENT_ARE_YOU_SURE
diff --git 
a/extensions/security/audittrail/adoc/modules/audittrail/pages/about.adoc 
b/extensions/security/audittrail/adoc/modules/audittrail/pages/about.adoc
index b546412de0..76d20fbdff 100644
--- a/extensions/security/audittrail/adoc/modules/audittrail/pages/about.adoc
+++ b/extensions/security/audittrail/adoc/modules/audittrail/pages/about.adoc
@@ -4,41 +4,39 @@
 
 
 The xref:security:audittrail:about.adoc[] module provides an implementation of 
the 
xref:refguide:applib:index/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber],
 which provides a fine-grained persistent audit trail: each and every change to 
a entity property is persisted as an individual `AuditTrailEntry` instance.
-The xref:refguide:extensions:index/audittrail/applib/
-
-xref:refguide:applib:index/services/iactn/Interaction.adoc#getInteractionId_[interaction
 id] identifies all the changes made within a single 
xref:refguide:applib:index/services/iactn/Interaction.adoc[interaction].
-
-It also provides as well as a number of related domain services,
-It creates an audit record for each changed property of each domain entity.
-
-WARNING: TODO: v2 - to write up...
-
-// following material out of date:
-//
-//The module also provides:
-//
-//* `AuditingServiceMenu` service which provides actions to search for 
``AuditEntry``s, underneath an 'Activity' menu on the secondary menu bar.
-//
-//* `AuditingServiceRepository` service to to search for persisted 
`AuditEntry``s.
-//None of its actions are visible in the user interface (they are all 
`@Programmatic`).
-//
-//* `AuditingServiceContributions` which contributes collections to the 
xref:refguide:applib-classes:mixees-and-mixins.adoc[HasInteractionId] interface.
-//This will therefore display all audit entries that occurred in a given 
request/transaction, in other words whenever a command, a published event or 
another audit entry is displayed.
-//
-//These services can be activated by updating the `pom.xml` and updating the 
`AppManifest#getModules()` method.
-//
-//If menu items or contributions are not required in the UI, these can be 
suppressed either using security or by implementing a 
xref:userguide:btb:hints-and-tips/vetoing-visibility.adoc[vetoing subscriber].
-//
-//== Usage
-//
-//The typical way to indicate that an object should be audited is to annotate 
it with the 
xref:refguide:applib:index/annotation/DomainObject.adoc#auditing[@DomainObject#auditing()]
 annotation.
-//
-//
-//== Related Services
-//
-//The auditing service works very well with implementations of 
xref:refguide:applib:index/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber]
 that persist the ``Execution`` objects obtained from the 
xref:refguide:applib:index/services/iactnlayer/InteractionContext.adoc[InteractionContext]
 service.
-//The interaction execution captures the _cause_ of an interaction (an action 
was invoked, a property was edited), while the `EntityPropertyChangeSubscriber` 
audit entries capture the _effect_ of that interaction in terms of changed 
state.
-//
-//The 
xref:refguide:applib:index/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber]
 SPI can also be combined with the audit trail service, where the 
xref:refguide:applib:index/services/command/Command.adoc[Command] capturesthe 
_intent_ of an action, not the actual action invocation itself.
-//
-//
+
+
+The 
xref:refguide:applib:index/services/iactn/Interaction.adoc#getInteractionId_[interaction
 id] identifies all the changes made within a single 
xref:refguide:applib:index/services/iactn/Interaction.adoc[interaction].
+
+The xref:refguide:extensions:index/audittrail/applib/app/AuditTrailMenu.adoc[]
+
+== Setup
+
+
+
+
+== menubar.layout.xml
+
+Once configured, the extension provides a number of menu actions.
+You can use `menubars.layout.xml` to arrange these as you see fit.
+To get you started, the following fragment adds all of the actions to an 
"Activity" secondary menu:
+
+[source,xml]
+.menubars.layout.xml
+----
+<mb3:secondary>
+    ...
+    <mb3:menu>
+        <mb3:named>Activity</mb3:named>
+        ...
+        <mb3:section>
+            <mb3:named>Audit Trail</mb3:named>
+            <mb3:serviceAction id="findMostRecent" 
objectType="isis.ext.auditTrail.AuditTrailMenu"/>
+            <mb3:serviceAction id="findAuditEntries" 
objectType="isis.ext.auditTrail.AuditTrailMenu"/>
+            <mb3:serviceAction id="findAll" 
objectType="isis.ext.auditTrail.AuditTrailMenu"/>
+        </mb3:section>
+        ...
+    </mb3:menu>
+</mb3:secondary>
+----
+
diff --git 
a/extensions/security/audittrail/applib/src/main/java/org/apache/causeway/extensions/audittrail/applib/app/AuditTrailMenu.java
 
b/extensions/security/audittrail/applib/src/main/java/org/apache/causeway/extensions/audittrail/applib/app/AuditTrailMenu.java
index 784a29d080..609acda1e6 100644
--- 
a/extensions/security/audittrail/applib/src/main/java/org/apache/causeway/extensions/audittrail/applib/app/AuditTrailMenu.java
+++ 
b/extensions/security/audittrail/applib/src/main/java/org/apache/causeway/extensions/audittrail/applib/app/AuditTrailMenu.java
@@ -46,6 +46,9 @@ import lombok.RequiredArgsConstructor;
 
 
 /**
+ * This service exposes a set of menu actions to search and list {@link 
AuditTrailEntry audit record}s,
+ * by default under the &quot;Activity&quot; secondary menu.
+ *
  * @since 2.0 {@index}
  */
 @Named(AuditTrailMenu.LOGICAL_TYPE_NAME)
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/feature/api/ApplicationFeatureChoices.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/feature/api/ApplicationFeatureChoices.java
index 4bffa52485..576d4c80c1 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/feature/api/ApplicationFeatureChoices.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/feature/api/ApplicationFeatureChoices.java
@@ -52,6 +52,8 @@ import lombok.val;
  * Supports mixins to add and filter permissions of
  * {@link 
org.apache.causeway.extensions.secman.applib.role.dom.ApplicationRole}
  * and {@link 
org.apache.causeway.extensions.secman.applib.user.dom.ApplicationUser}.
+ *
+ * @since 2.0 {@index}
  */
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Inject})
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/feature/contributions/ApplicationFeatureViewModel_permissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/feature/contributions/ApplicationFeatureViewModel_permissions.java
index a849d91ee8..fc03875715 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/feature/contributions/ApplicationFeatureViewModel_permissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/feature/contributions/ApplicationFeatureViewModel_permissions.java
@@ -31,6 +31,10 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPe
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Collection(
 ) @CollectionLayout(
         defaultView = "table",
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/app/ApplicationOrphanedPermissionManager.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/app/ApplicationOrphanedPermissionManager.java
index c7c30ba414..fe3bb56399 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/app/ApplicationOrphanedPermissionManager.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/app/ApplicationOrphanedPermissionManager.java
@@ -30,6 +30,10 @@ import 
org.apache.causeway.extensions.secman.applib.CausewayModuleExtSecmanAppli
 import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPermission;
 import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPermissionRepository;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Named(ApplicationOrphanedPermissionManager.LOGICAL_TYPE_NAME)
 @DomainObject(
         nature = Nature.VIEW_MODEL)
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/app/mixins/ApplicationOrphanedPermissionManager_relocateSelected.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/app/mixins/ApplicationOrphanedPermissionManager_relocateSelected.java
index 8dea1cc6e3..d2130c3517 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/app/mixins/ApplicationOrphanedPermissionManager_relocateSelected.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/app/mixins/ApplicationOrphanedPermissionManager_relocateSelected.java
@@ -41,6 +41,10 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPe
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         choicesFrom = "orphanedPermissions",
         domainEvent = DomainEvent.class,
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/ApplicationPermissionRepositoryAbstract.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/ApplicationPermissionRepositoryAbstract.java
index bda36265bc..662d4ff38d 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/ApplicationPermissionRepositoryAbstract.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/ApplicationPermissionRepositoryAbstract.java
@@ -49,6 +49,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.ApplicationUser;
 import lombok.NonNull;
 import lombok.val;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 public abstract class ApplicationPermissionRepositoryAbstract<P extends 
ApplicationPermission>
 implements ApplicationPermissionRepository {
 
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_allow.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_allow.java
index 666c641620..76ba66e982 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_allow.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_allow.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.mixins.Applic
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_changing.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_changing.java
index ea049bc570..f15a49aab3 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_changing.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_changing.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.mixins.Applic
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_delete.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_delete.java
index 9056e20c82..18c12e73c6 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_delete.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_delete.java
@@ -33,6 +33,10 @@ import 
org.apache.causeway.extensions.secman.applib.role.dom.ApplicationRole;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT_ARE_YOU_SURE
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_feature.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_feature.java
index 935f3600e4..cdb06b584d 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_feature.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_feature.java
@@ -33,6 +33,10 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPe
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Property(
         domainEvent = ApplicationPermission_feature.PropertyDomainEvent.class
 )
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_updateRole.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_updateRole.java
index 55cb1d5cb3..2f5186ff2b 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_updateRole.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_updateRole.java
@@ -35,6 +35,10 @@ import 
org.apache.causeway.extensions.secman.applib.role.dom.ApplicationRoleRepo
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_veto.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_veto.java
index d69b7f7ce2..9488e4e880 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_veto.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_veto.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.mixins.Applic
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_viewing.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_viewing.java
index f8ac26a375..b752f96b0e 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_viewing.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/dom/mixins/ApplicationPermission_viewing.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.mixins.Applic
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/menu/ApplicationPermissionMenu.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/menu/ApplicationPermissionMenu.java
index c6b1c4aa97..3f9bac8df8 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/menu/ApplicationPermissionMenu.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/permission/menu/ApplicationPermissionMenu.java
@@ -39,6 +39,10 @@ import 
org.apache.causeway.extensions.secman.applib.permission.app.ApplicationOr
 import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPermission;
 import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPermissionRepository;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Named(ApplicationPermissionMenu.LOGICAL_TYPE_NAME)
 @DomainService(
         nature = NatureOfService.VIEW
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/ApplicationRoleRepositoryAbstract.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/ApplicationRoleRepositoryAbstract.java
index 36e6737499..7deee21832 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/ApplicationRoleRepositoryAbstract.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/ApplicationRoleRepositoryAbstract.java
@@ -43,6 +43,10 @@ import 
org.apache.causeway.extensions.secman.applib.util.RegexReplacer;
 
 import lombok.val;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Repository
 @Named(CausewayModuleExtSecmanApplib.NAMESPACE + ".ApplicationRoleRepository")
 public abstract class ApplicationRoleRepositoryAbstract<R extends 
ApplicationRole>
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_addPermission.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_addPermission.java
index 8ebe8f3bb4..83d14a7cde 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_addPermission.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_addPermission.java
@@ -41,6 +41,10 @@ import lombok.RequiredArgsConstructor;
 import lombok.Value;
 import lombok.experimental.Accessors;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.NON_IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_addUser.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_addUser.java
index 5121b14777..9dc23cdbba 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_addUser.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_addUser.java
@@ -37,6 +37,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.ApplicationUserRepo
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_delete.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_delete.java
index d3ce2939cc..35c0c097a7 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_delete.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_delete.java
@@ -33,6 +33,10 @@ import 
org.apache.causeway.extensions.secman.applib.role.dom.mixins.ApplicationR
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT_ARE_YOU_SURE
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_removePermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_removePermissions.java
index f83e6eb3f9..9bb2b44d5e 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_removePermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_removePermissions.java
@@ -42,6 +42,10 @@ import 
org.apache.causeway.extensions.secman.applib.role.dom.mixins.ApplicationR
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         choicesFrom = "permissions",
         domainEvent = DomainEvent.class,
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_removeUsers.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_removeUsers.java
index e7ee81c20b..a3846a488e 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_removeUsers.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_removeUsers.java
@@ -38,6 +38,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.ApplicationUserRepo
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         choicesFrom = "users",
         domainEvent = DomainEvent.class,
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_updateDescription.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_updateDescription.java
index 21cda4326a..7690580ea9 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_updateDescription.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_updateDescription.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.role.dom.mixins.ApplicationR
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_updateName.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_updateName.java
index 63fd81eb42..b2b9a6d42d 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_updateName.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/dom/mixins/ApplicationRole_updateName.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.role.dom.mixins.ApplicationR
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/ApplicationRoleManager.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/ApplicationRoleManager.java
index 2bbf63a505..8083b484d7 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/ApplicationRoleManager.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/ApplicationRoleManager.java
@@ -31,6 +31,10 @@ import 
org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
 import 
org.apache.causeway.extensions.secman.applib.CausewayModuleExtSecmanApplib;
 import org.apache.causeway.extensions.secman.applib.role.dom.ApplicationRole;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Named(ApplicationRoleManager.LOGICAL_TYPE_NAME)
 @DomainObject(
         nature = Nature.VIEW_MODEL)
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_allRoles.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_allRoles.java
index 6a27443199..f1776e5a63 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_allRoles.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_allRoles.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.role.man.ApplicationRoleMana
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @org.apache.causeway.applib.annotation.Collection
 @RequiredArgsConstructor
 public class ApplicationRoleManager_allRoles {
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_exportAsYaml.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_exportAsYaml.java
index 9433fd1924..7794175d1c 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_exportAsYaml.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_exportAsYaml.java
@@ -37,6 +37,10 @@ import 
org.apache.causeway.extensions.secman.applib.util.ApplicationSecurityDto;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_newRole.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_newRole.java
index 72ca13a735..e61139e430 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_newRole.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/man/mixins/ApplicationRoleManager_newRole.java
@@ -35,6 +35,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.man.mixins.ApplicationU
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/menu/ApplicationRoleMenu.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/menu/ApplicationRoleMenu.java
index a0d2247df7..770cc63fdb 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/menu/ApplicationRoleMenu.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/menu/ApplicationRoleMenu.java
@@ -42,6 +42,10 @@ import 
org.apache.causeway.extensions.secman.applib.role.man.ApplicationRoleMana
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Named(ApplicationRoleMenu.LOGICAL_TYPE_NAME)
 @DomainService(
         nature = NatureOfService.VIEW
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayAppFeatureRoleAndPermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayAppFeatureRoleAndPermissions.java
index 27e9842c13..57b321edb1 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayAppFeatureRoleAndPermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayAppFeatureRoleAndPermissions.java
@@ -27,6 +27,8 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPe
 import 
org.apache.causeway.extensions.secman.applib.role.fixtures.AbstractRoleAndPermissionsFixtureScript;
 
 /**
+ * Sets up a role with access to the menu actions exposing the application 
metamodel (as a navigable set of view models).
+ *
  * @since 2.0 {@index}
  */
 public class CausewayAppFeatureRoleAndPermissions
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayConfigurationRoleAndPermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayConfigurationRoleAndPermissions.java
index 12927bbe3d..6096eab0e4 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayConfigurationRoleAndPermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayConfigurationRoleAndPermissions.java
@@ -27,6 +27,8 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPe
 import 
org.apache.causeway.extensions.secman.applib.role.fixtures.AbstractRoleAndPermissionsFixtureScript;
 
 /**
+ * Sets up a role with access to the menu actions exposing the configuration 
properties of the running app.
+ *
  * @since 2.0 {@index}
  */
 public class CausewayConfigurationRoleAndPermissions
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtAuditTrailRoleAndPermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtAuditTrailRoleAndPermissions.java
index e7900e2336..39bf25d1bc 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtAuditTrailRoleAndPermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtAuditTrailRoleAndPermissions.java
@@ -25,7 +25,7 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPe
 import 
org.apache.causeway.extensions.secman.applib.role.fixtures.AbstractRoleAndPermissionsFixtureScript;
 
 /**
- * Access to the command replay primary menu.
+ * Sets up a role with access to the menu actions contributed by the <i>Audit 
Trail</i> extension.
  *
  * @since 2.0 {@index}
  */
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtCommandLogRoleAndPermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtCommandLogRoleAndPermissions.java
index a8f297f5f8..77102c8b01 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtCommandLogRoleAndPermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtCommandLogRoleAndPermissions.java
@@ -25,7 +25,7 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPe
 import 
org.apache.causeway.extensions.secman.applib.role.fixtures.AbstractRoleAndPermissionsFixtureScript;
 
 /**
- * Access to the command replay primary menu.
+ * Sets up a role with access to the menu actions contributed by the 
<i>Command Log</i> extension.
  *
  * @since 2.0 {@index}
  */
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtExecutionLogRoleAndPermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtExecutionLogRoleAndPermissions.java
index 0797fa2c4a..8cb90e65b3 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtExecutionLogRoleAndPermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtExecutionLogRoleAndPermissions.java
@@ -25,7 +25,7 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPe
 import 
org.apache.causeway.extensions.secman.applib.role.fixtures.AbstractRoleAndPermissionsFixtureScript;
 
 /**
- * Access to the command replay primary menu.
+ * Sets up a role with access to the menu actions contributed by the 
<i>Extension Log</i> extension.
  *
  * @since 2.0 {@index}
  */
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtExecutionOutboxRoleAndPermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtExecutionOutboxRoleAndPermissions.java
index d439b0336f..b1bdb80c49 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtExecutionOutboxRoleAndPermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtExecutionOutboxRoleAndPermissions.java
@@ -25,7 +25,7 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPe
 import 
org.apache.causeway.extensions.secman.applib.role.fixtures.AbstractRoleAndPermissionsFixtureScript;
 
 /**
- * Access to the command replay primary menu.
+ * Sets up a role with access to the menu actions contributed by the 
<i>Extension Outbox</i> extension.
  *
  * @since 2.0 {@index}
  */
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtH2ConsoleRoleAndPermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtH2ConsoleRoleAndPermissions.java
index 9921435235..55768d3bbb 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtH2ConsoleRoleAndPermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtH2ConsoleRoleAndPermissions.java
@@ -25,7 +25,7 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPe
 import 
org.apache.causeway.extensions.secman.applib.role.fixtures.AbstractRoleAndPermissionsFixtureScript;
 
 /**
- * Access to the h2 console UI.
+ * Sets up a role with access to the menu actions providing access to the h2 
web console..
  *
  * @since 2.0 {@index}
  */
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtSecmanAdminRoleAndPermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtSecmanAdminRoleAndPermissions.java
index 4c3d4b8682..2e68bf1287 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtSecmanAdminRoleAndPermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtSecmanAdminRoleAndPermissions.java
@@ -37,10 +37,9 @@ import 
org.apache.causeway.extensions.secman.applib.role.fixtures.AbstractRoleAn
 import lombok.val;
 
 /**
- * Sets up the {@link Admin#getRoleName() secman admin role}
- * with its initial set of permissions (the union of
- * {@link NamespacePermissions#getSticky()}
- * and {@link NamespacePermissions#getAdditional()}).
+ * Sets up a role for administrators (whose name is {@link Admin#getRoleName() 
configurable}
+ * with an initial set of permissions being the union of {@link 
NamespacePermissions#getSticky()}
+ * and {@link NamespacePermissions#getAdditional()}.
  *
  * @see Secman
  *
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtSecmanRegularUserRoleAndPermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtSecmanRegularUserRoleAndPermissions.java
index e679562889..807dc13a43 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtSecmanRegularUserRoleAndPermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtSecmanRegularUserRoleAndPermissions.java
@@ -35,7 +35,7 @@ import 
org.apache.causeway.testing.fixtures.applib.CausewayModuleTestingFixtures
 import lombok.val;
 
 /**
- * Role for regular users of the security module.
+ * Sets up a role for regular users of the security module.
  *
  * <p>
  * These permissions are intended to be sufficient for most regular users
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtSessionLogRoleAndPermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtSessionLogRoleAndPermissions.java
index bd17ae0f67..32b860eca2 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtSessionLogRoleAndPermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayExtSessionLogRoleAndPermissions.java
@@ -25,7 +25,7 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPe
 import 
org.apache.causeway.extensions.secman.applib.role.fixtures.AbstractRoleAndPermissionsFixtureScript;
 
 /**
- * Access to the command replay primary menu.
+ * Sets up a role with access to the menu actions contributed by the 
<i>Session Log</i> extension.
  *
  * @since 2.0 {@index}
  */
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayPersistenceJdoMetaModelRoleAndPermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayPersistenceJdoMetaModelRoleAndPermissions.java
index 78c4c187b9..ed16402b9d 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayPersistenceJdoMetaModelRoleAndPermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayPersistenceJdoMetaModelRoleAndPermissions.java
@@ -25,7 +25,7 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPe
 import 
org.apache.causeway.extensions.secman.applib.role.fixtures.AbstractRoleAndPermissionsFixtureScript;
 
 /**
- * Provides access to download the JDO metamodel.
+ * Sets up a role with access to the menu actions to download the JDO 
metamodel.
  *
  * @since 2.0 {@index}
  */
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewaySudoImpersonateRoleAndPermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewaySudoImpersonateRoleAndPermissions.java
index 5f08c07629..5f572a5a4a 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewaySudoImpersonateRoleAndPermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewaySudoImpersonateRoleAndPermissions.java
@@ -26,6 +26,10 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPe
 import 
org.apache.causeway.extensions.secman.applib.role.fixtures.AbstractRoleAndPermissionsFixtureScript;
 
 /**
+ * Sets up a role with access to the menu action to impersonate others (using
+ * {@link org.apache.causeway.applib.services.sudo.SudoService}).
+ *
+ * @see org.apache.causeway.applib.services.sudo.SudoService
  * @since 2.0 {@index}
  */
 public class CausewaySudoImpersonateRoleAndPermissions
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayViewerRestfulObjectsSwaggerRoleAndPermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayViewerRestfulObjectsSwaggerRoleAndPermissions.java
index 5449771dfd..63bd1505e6 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayViewerRestfulObjectsSwaggerRoleAndPermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayViewerRestfulObjectsSwaggerRoleAndPermissions.java
@@ -25,7 +25,7 @@ import 
org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPe
 import 
org.apache.causeway.extensions.secman.applib.role.fixtures.AbstractRoleAndPermissionsFixtureScript;
 
 /**
- * Provides access to open up the Swagger UI.
+ * Sets up a role with access to the menu action that opens up the Swagger UI.
  *
  * @since 2.0 {@index}
  */
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/ApplicationTenancyRepositoryAbstract.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/ApplicationTenancyRepositoryAbstract.java
index 85eecd64f2..8a63a4f91a 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/ApplicationTenancyRepositoryAbstract.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/ApplicationTenancyRepositoryAbstract.java
@@ -35,6 +35,10 @@ import 
org.apache.causeway.extensions.secman.applib.util.RegexReplacer;
 import lombok.NonNull;
 import lombok.val;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 public abstract class ApplicationTenancyRepositoryAbstract<T extends 
ApplicationTenancy>
 implements ApplicationTenancyRepository {
 
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_addChild.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_addChild.java
index e68f0f2ea7..ca0250875b 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_addChild.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_addChild.java
@@ -36,6 +36,10 @@ import 
org.apache.causeway.extensions.secman.applib.tenancy.dom.mixins.Applicati
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_addUser.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_addUser.java
index 4939d7ec83..e7ebb33e9a 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_addUser.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_addUser.java
@@ -38,6 +38,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.ApplicationUserRepo
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_delete.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_delete.java
index 0787c967d7..d0ceaf3664 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_delete.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_delete.java
@@ -38,6 +38,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT_ARE_YOU_SURE
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_removeChild.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_removeChild.java
index 8f05ba97d5..3383f821b6 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_removeChild.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_removeChild.java
@@ -33,6 +33,10 @@ import 
org.apache.causeway.extensions.secman.applib.tenancy.dom.mixins.Applicati
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_removeUser.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_removeUser.java
index 3dc68d6b11..99fae3b6d8 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_removeUser.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_removeUser.java
@@ -35,6 +35,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.ApplicationUserRepo
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_updateName.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_updateName.java
index c0aaa0a342..40b3bfb1b2 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_updateName.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_updateName.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.tenancy.dom.mixins.Applicati
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_users.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_users.java
index 5007020dcd..a91e2bd150 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_users.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/dom/mixins/ApplicationTenancy_users.java
@@ -30,6 +30,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.ApplicationUserRepo
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Collection(
         domainEvent = ApplicationTenancy_users.DomainEvent.class)
 @CollectionLayout(
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/fixtures/AbstractTenancyFixtureScript.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/fixtures/AbstractTenancyFixtureScript.java
index 0d40491517..bb9cb444c7 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/fixtures/AbstractTenancyFixtureScript.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/fixtures/AbstractTenancyFixtureScript.java
@@ -24,6 +24,10 @@ import 
org.apache.causeway.extensions.secman.applib.tenancy.dom.ApplicationTenan
 import 
org.apache.causeway.extensions.secman.applib.tenancy.dom.ApplicationTenancyRepository;
 import 
org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 public abstract class AbstractTenancyFixtureScript extends FixtureScript {
 
 
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/man/ApplicationTenancyManager.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/man/ApplicationTenancyManager.java
index 49b5a1c938..e47b8f448c 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/man/ApplicationTenancyManager.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/man/ApplicationTenancyManager.java
@@ -31,6 +31,10 @@ import 
org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
 import 
org.apache.causeway.extensions.secman.applib.CausewayModuleExtSecmanApplib;
 import 
org.apache.causeway.extensions.secman.applib.tenancy.dom.ApplicationTenancy;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Named(ApplicationTenancyManager.LOGICAL_TYPE_NAME)
 @DomainObject(
         nature = Nature.VIEW_MODEL)
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/man/mixins/ApplicationTenancyManager_allTenancies.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/man/mixins/ApplicationTenancyManager_allTenancies.java
index f5901b6a3b..6f87d1f27d 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/man/mixins/ApplicationTenancyManager_allTenancies.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/man/mixins/ApplicationTenancyManager_allTenancies.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.tenancy.man.ApplicationTenan
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @org.apache.causeway.applib.annotation.Collection
 @RequiredArgsConstructor
 public class ApplicationTenancyManager_allTenancies {
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/man/mixins/ApplicationTenancyManager_newTenancy.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/man/mixins/ApplicationTenancyManager_newTenancy.java
index b296523816..6043b9593b 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/man/mixins/ApplicationTenancyManager_newTenancy.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/man/mixins/ApplicationTenancyManager_newTenancy.java
@@ -37,6 +37,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.man.mixins.ApplicationU
 import lombok.RequiredArgsConstructor;
 
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/menu/ApplicationTenancyMenu.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/menu/ApplicationTenancyMenu.java
index 464a9a3bbf..1d393c4695 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/menu/ApplicationTenancyMenu.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/tenancy/menu/ApplicationTenancyMenu.java
@@ -42,6 +42,10 @@ import 
org.apache.causeway.extensions.secman.applib.tenancy.dom.ApplicationTenan
 import 
org.apache.causeway.extensions.secman.applib.tenancy.dom.ApplicationTenancyRepository;
 import 
org.apache.causeway.extensions.secman.applib.tenancy.man.ApplicationTenancyManager;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Named(ApplicationTenancyMenu.LOGICAL_TYPE_NAME)
 @DomainService(
         nature = NatureOfService.VIEW
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/contributions/HasUsername_open.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/contributions/HasUsername_open.java
index 286ba017b5..2bfa4380e1 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/contributions/HasUsername_open.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/contributions/HasUsername_open.java
@@ -32,6 +32,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.ApplicationUserRepo
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         semantics = SemanticsOf.SAFE,
         domainEvent = HasUsername_open.ActionDomainEvent.class
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/ApplicationUserRepositoryAbstract.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/ApplicationUserRepositoryAbstract.java
index 497fb2d1c9..7357c760ee 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/ApplicationUserRepositoryAbstract.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/ApplicationUserRepositoryAbstract.java
@@ -51,6 +51,10 @@ import 
org.apache.causeway.extensions.secman.applib.util.RegexReplacer;
 import lombok.NonNull;
 import lombok.val;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 public class ApplicationUserRepositoryAbstract<U extends ApplicationUser>
 implements ApplicationUserRepository {
 
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_addRole.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_addRole.java
index 2e3702a707..27e1fda177 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_addRole.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_addRole.java
@@ -36,6 +36,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_delete.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_delete.java
index e081f78b76..5c60c7de8f 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_delete.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_delete.java
@@ -34,6 +34,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT_ARE_YOU_SURE
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_duplicate.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_duplicate.java
index a51624761f..da484b5647 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_duplicate.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_duplicate.java
@@ -36,6 +36,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.NON_IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_lock.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_lock.java
index 20c0905884..a643e729d1 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_lock.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_lock.java
@@ -33,6 +33,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_removeRoles.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_removeRoles.java
index e652cc2147..bc552923d9 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_removeRoles.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_removeRoles.java
@@ -38,6 +38,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         choicesFrom = "roles",
         domainEvent = DomainEvent.class,
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_resetPassword.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_resetPassword.java
index 73987c1f6c..ef2fa423ad 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_resetPassword.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_resetPassword.java
@@ -34,6 +34,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_timeZone.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_timeZone.java
index 1fd508f0fb..059dd4c6d6 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_timeZone.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_timeZone.java
@@ -33,6 +33,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.ApplicationUser;
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Property(
         editing = Editing.DISABLED,
         hidden = Where.ALL_TABLES)
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_unlock.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_unlock.java
index df8ace82b7..aeeabe7908 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_unlock.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_unlock.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateAccountType.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateAccountType.java
index df9d060bd3..4c373d4951 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateAccountType.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateAccountType.java
@@ -33,6 +33,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateAtPath.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateAtPath.java
index 2e8a215948..9a1edd170f 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateAtPath.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateAtPath.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateEmailAddress.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateEmailAddress.java
index 6c022ca69e..1e390a34d9 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateEmailAddress.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateEmailAddress.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateFaxNumber.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateFaxNumber.java
index b01e882cb5..19beaebc22 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateFaxNumber.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateFaxNumber.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateLocale.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateLocale.java
index e0a4deb339..acf66d38eb 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateLocale.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateLocale.java
@@ -36,6 +36,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 import lombok.RequiredArgsConstructor;
 import lombok.experimental.Accessors;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateName.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateName.java
index 56acc90557..2d35d73bcc 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateName.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateName.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updatePassword.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updatePassword.java
index dfd78f1b91..45d1b853ee 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updatePassword.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updatePassword.java
@@ -39,6 +39,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updatePhoneNumber.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updatePhoneNumber.java
index 8aa9954cdf..53a117b54e 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updatePhoneNumber.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updatePhoneNumber.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateUsername.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateUsername.java
index 988ba2a8f3..232b71cd2a 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateUsername.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updateUsername.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.mixins.ApplicationU
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class,
         semantics = SemanticsOf.IDEMPOTENT
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/perms/ApplicationUser_effectiveMemberPermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/perms/ApplicationUser_effectiveMemberPermissions.java
index 366f378305..acf2f675f0 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/perms/ApplicationUser_effectiveMemberPermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/perms/ApplicationUser_effectiveMemberPermissions.java
@@ -35,6 +35,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.ApplicationUser;
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Collection(
         domainEvent = 
ApplicationUser_effectiveMemberPermissions.DomainEvent.class)
 @CollectionLayout(
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/perms/ApplicationUser_filterEffectiveMemberPermissions.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/perms/ApplicationUser_filterEffectiveMemberPermissions.java
index 0d69693712..260ccd1b8d 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/perms/ApplicationUser_filterEffectiveMemberPermissions.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/perms/ApplicationUser_filterEffectiveMemberPermissions.java
@@ -39,6 +39,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.dom.ApplicationUser;
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = 
ApplicationUser_filterEffectiveMemberPermissions.DomainEvent.class,
         semantics = SemanticsOf.SAFE
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/perms/UserPermissionViewModel.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/perms/UserPermissionViewModel.java
index c2b470a3c4..04f15d749b 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/perms/UserPermissionViewModel.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/perms/UserPermissionViewModel.java
@@ -68,6 +68,8 @@ import lombok.val;
 /**
  * View model identified by {@link ApplicationFeatureId} and backed by an
  * {@link ApplicationFeature}.
+ *
+ * @since 2.0 {@index}
  */
 @Named(UserPermissionViewModel.LOGICAL_TYPE_NAME)
 @DomainObject(
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/ApplicationUserManager.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/ApplicationUserManager.java
index e72b539778..d22a43facf 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/ApplicationUserManager.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/ApplicationUserManager.java
@@ -31,6 +31,10 @@ import 
org.apache.causeway.core.metamodel.specloader.SpecificationLoader;
 import 
org.apache.causeway.extensions.secman.applib.CausewayModuleExtSecmanApplib;
 import org.apache.causeway.extensions.secman.applib.user.dom.ApplicationUser;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Named(ApplicationUserManager.LOGICAL_TYPE_NAME)
 @DomainObject(
         nature = Nature.VIEW_MODEL)
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/mixins/ApplicationUserManager_allUsers.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/mixins/ApplicationUserManager_allUsers.java
index 98fac900ef..d4efcda048 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/mixins/ApplicationUserManager_allUsers.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/mixins/ApplicationUserManager_allUsers.java
@@ -29,6 +29,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.man.ApplicationUserMana
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @org.apache.causeway.applib.annotation.Collection
 @RequiredArgsConstructor
 public class ApplicationUserManager_allUsers {
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newDelegateUser.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newDelegateUser.java
index b000ae217b..c4839a6303 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newDelegateUser.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newDelegateUser.java
@@ -40,6 +40,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.man.mixins.ApplicationU
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class
 )
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newLocalUser.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newLocalUser.java
index fc3d9ac562..7fbe683ff2 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newLocalUser.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/man/mixins/ApplicationUserManager_newLocalUser.java
@@ -45,6 +45,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.man.mixins.ApplicationU
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         domainEvent = DomainEvent.class
 )
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/menu/ApplicationUserMenu.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/menu/ApplicationUserMenu.java
index 69c85c4f39..4cc24a85c2 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/menu/ApplicationUserMenu.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/menu/ApplicationUserMenu.java
@@ -41,6 +41,10 @@ import 
org.apache.causeway.extensions.secman.applib.user.man.ApplicationUserMana
 
 import lombok.RequiredArgsConstructor;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 @Named(ApplicationUserMenu.LOGICAL_TYPE_NAME)
 @DomainService(
         nature = NatureOfService.VIEW
diff --git 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/util/RegexReplacer.java
 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/util/RegexReplacer.java
index 6441580dd6..7a1fba974a 100644
--- 
a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/util/RegexReplacer.java
+++ 
b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/util/RegexReplacer.java
@@ -18,6 +18,10 @@
  */
 package org.apache.causeway.extensions.secman.applib.util;
 
+/**
+ *
+ * @since 2.0 {@index}
+ */
 public interface RegexReplacer {
 
     public String asRegex(String str);
diff --git 
a/extensions/security/sessionlog/adoc/modules/sessionlog/pages/about.adoc 
b/extensions/security/sessionlog/adoc/modules/sessionlog/pages/about.adoc
index 1ccb4c0f49..e3e11b4206 100644
--- a/extensions/security/sessionlog/adoc/modules/sessionlog/pages/about.adoc
+++ b/extensions/security/sessionlog/adoc/modules/sessionlog/pages/about.adoc
@@ -7,3 +7,29 @@ The Session Log extension provides an implementation of the 
xref:refguide:applib
 When a user logs on, a `SessionLogEntry` instance is persisted; when they log 
off, the same instance is updated.
 
 WARNING: TODO: v2 - to write up...
+
+
+
+== menubar.layout.xml
+
+Once configured, the extension provides a number of menu actions.
+You can use `menubars.layout.xml` to arrange these as you see fit.
+To get you started, the following fragment adds all of the actions to an 
"Activity" secondary menu:
+
+[source,xml]
+.menubars.layout.xml
+----
+<mb3:secondary>
+    ...
+    <mb3:menu>
+        <mb3:named>Activity</mb3:named>
+        ...
+        <mb3:section>
+            <mb3:named>Sessions</mb3:named>
+            <mb3:serviceAction id="activeSessions" 
objectType="isis.ext.sessionLog.SessionLogMenu"/>
+            <mb3:serviceAction id="findSessions" 
objectType="isis.ext.sessionLog.SessionLogMenu"/>
+        </mb3:section>
+        ...
+    </mb3:menu>
+</mb3:secondary>
+----
diff --git 
a/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/app/SessionLogMenu.java
 
b/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/app/SessionLogMenu.java
index 3b2ce5e202..b8927d3d2d 100644
--- 
a/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/app/SessionLogMenu.java
+++ 
b/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/app/SessionLogMenu.java
@@ -44,7 +44,10 @@ import lombok.RequiredArgsConstructor;
 
 
 /**
- * This service exposes a &lt;Sessions&gt; menu to the secondary menu bar for 
searching for sessions.
+ * This service exposes a set of menu actions to search and list {@link 
SessionLogEntry session}s, by default under
+ * the &quot;Activity&quot; secondary menu.
+ *
+ * @since 2.0 {@index}
  */
 @Named(SessionLogMenu.LOGICAL_TYPE_NAME)
 @DomainService(nature = NatureOfService.VIEW)
diff --git 
a/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/contributions/HasUsername_recentSessionsForUser.java
 
b/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/contributions/HasUsername_recentSessionsForUser.java
index f41afb6aac..8ee7e43a04 100644
--- 
a/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/contributions/HasUsername_recentSessionsForUser.java
+++ 
b/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/contributions/HasUsername_recentSessionsForUser.java
@@ -37,6 +37,11 @@ import 
org.apache.causeway.extensions.sessionlog.applib.dom.SessionLogEntryRepos
 import lombok.RequiredArgsConstructor;
 
 
+/**
+ * Contributes the `recentSessionsForUser` collection to any domain object 
implementing {@link HasUsername}.
+ *
+ * @since 2.0 {@index}
+ */
 @Action(
         semantics = SemanticsOf.SAFE,
         domainEvent = HasUsername_recentSessionsForUser.ActionDomainEvent.class
diff --git 
a/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/dom/SessionLogEntry.java
 
b/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/dom/SessionLogEntry.java
index 974db0a1cf..ecab8ad8a7 100644
--- 
a/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/dom/SessionLogEntry.java
+++ 
b/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/dom/SessionLogEntry.java
@@ -55,6 +55,12 @@ import 
org.apache.causeway.extensions.sessionlog.applib.CausewayModuleExtSession
 
 import lombok.experimental.UtilityClass;
 
+/**
+ * Represents the session of an end-user, in other words the span of time from 
them logging into the application until
+ * they are log out either explicitly or through some timeout.
+ *
+ * @since 2.0 {@index}
+ */
 @Named(SessionLogEntry.LOGICAL_TYPE_NAME)
 @DomainObject(
         editing = Editing.DISABLED,
diff --git 
a/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/dom/SessionLogEntryRepository.java
 
b/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/dom/SessionLogEntryRepository.java
index 0d0bb44484..a5eee1899c 100644
--- 
a/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/dom/SessionLogEntryRepository.java
+++ 
b/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/dom/SessionLogEntryRepository.java
@@ -40,6 +40,8 @@ import lombok.val;
 
 /**
  * Provides supporting functionality for querying {@link SessionLogEntry 
session log entry} entities.
+ *
+ * @since 2.0 {@index}
  */
 public abstract class SessionLogEntryRepository<E extends SessionLogEntry> {
 
diff --git 
a/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/spiimpl/SessionLogServiceInitializer.java
 
b/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/spiimpl/SessionLogServiceInitializer.java
index ebe5d14bd0..3c8bb46249 100644
--- 
a/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/spiimpl/SessionLogServiceInitializer.java
+++ 
b/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/spiimpl/SessionLogServiceInitializer.java
@@ -34,6 +34,16 @@ import 
org.apache.causeway.extensions.sessionlog.applib.dom.SessionLogEntryRepos
 import lombok.RequiredArgsConstructor;
 import lombok.val;
 
+/**
+ * Initializes the <i>Session Log</i> extension when the application is first 
bootstrapped.
+ *
+ * <p>
+ *     In particular, will automatically logout all sessions from a previous 
run of the application, if configured to
+ *     do so.
+ * </p>
+ *
+ * @since 2.0 {@index}
+ */
 @Component
 @RequiredArgsConstructor(onConstructor_ = {@Inject})
 public class SessionLogServiceInitializer implements MetamodelListener {
diff --git 
a/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/spiimpl/SessionSubscriberForSessionLog.java
 
b/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/spiimpl/SessionSubscriberForSessionLog.java
index 662ab7a035..a2aace75a7 100644
--- 
a/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/spiimpl/SessionSubscriberForSessionLog.java
+++ 
b/extensions/security/sessionlog/applib/src/main/java/org/apache/causeway/extensions/sessionlog/applib/spiimpl/SessionSubscriberForSessionLog.java
@@ -45,9 +45,10 @@ import lombok.RequiredArgsConstructor;
 import lombok.val;
 
 /**
- * Implementation of the Causeway {@link SessionSubscriber} creates a log
- * entry to the database (the {@link SessionLogEntry} entity) each time a
- * user either logs on or logs out, or if their session expires.
+ * Implementation of the {@link SessionSubscriber} SPI, which persists a log 
entry to the database (the
+ * {@link SessionLogEntry} entity) each time a user either logs on or logs 
out, or if their session expires.
+ *
+ * @since 2.0 {@index}
  */
 @Service
 @RequiredArgsConstructor(onConstructor_ = {@Inject})
diff --git 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/CausewayModuleRestfulObjectsRendering.java
 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/CausewayModuleRestfulObjectsRendering.java
index 89363e8193..1626293a6f 100644
--- 
a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/CausewayModuleRestfulObjectsRendering.java
+++ 
b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/CausewayModuleRestfulObjectsRendering.java
@@ -67,5 +67,5 @@ import 
org.apache.causeway.viewer.restfulobjects.rendering.service.valuerender.J
 })
 public class CausewayModuleRestfulObjectsRendering {
 
-    public static final String NAMESPACE = "causeway.viewer.restfulobjects";
+    public static final String NAMESPACE = "causeway.viewer.roRendering";
 }


Reply via email to