You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/05/23 14:45:44 UTC

[isis] branch master updated: regenerating docs

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

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


The following commit(s) were added to refs/heads/master by this push:
     new ad44f66  regenerating docs
ad44f66 is described below

commit ad44f66d407b9c2510312d41a10ab49cc11d36a4
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun May 23 15:45:25 2021 +0100

    regenerating docs
---
 .../applib/pages/index/IsisModuleApplib.adoc       |   5 +
 .../applib/pages/index/annotation/Action.adoc      |  31 ++
 .../pages/index/annotation/ActionLayout.adoc       |  15 +
 .../applib/pages/index/annotation/Where.adoc       |   1 +
 .../pages/index/domain/DomainObjectList.adoc       |   5 +-
 .../applib/pages/index/graph/tree/TreeNode.adoc    |  11 +
 .../modules/applib/pages/index/id/LogicalType.adoc |   6 +-
 .../pages/index/layout/grid/bootstrap3/Size.adoc   |   3 +-
 .../mixins/metamodel/Object_objectIdentifier.adoc  |   1 +
 .../index/mixins/metamodel/Object_objectType.adoc  |   1 +
 .../index/services/confview/ConfigurationMenu.adoc |   1 +
 .../services/confview/ConfigurationProperty.adoc   |   1 +
 .../index/services/layout/LayoutServiceMenu.adoc   |   1 +
 .../pages/index/services/metamodel/BeanSort.adoc   |  24 +
 .../index/services/metamodel/MetaModelService.adoc |  24 +-
 .../services/metamodel/MetaModelServiceMenu.adoc   |   1 +
 .../TableColumnOrderForCollectionTypeAbstract.adoc |  28 +-
 .../services/tablecol/TableColumnOrderService.adoc |   6 +-
 .../tablecol/TableColumnVisibilityService.adoc}    |  26 +-
 .../pages/index/services/user/ImpersonateMenu.adoc |  16 +-
 .../pages/index/services/user/RoleMemento.adoc     |   1 +
 .../pages/index/services/user/UserMemento.adoc     |   1 +
 .../commons/pages/index/collections/Can.adoc       |  32 ++
 .../DataSourceIntrospectionService.adoc            |   2 +-
 .../services/command/CommandDtoFactory.adoc        |   4 +-
 .../services/ixn/InteractionDtoFactory.adoc        |   8 +-
 .../tablecol/TableColumnOrderServiceDefault.adoc}  |  34 +-
 .../ImpersonatedUserHolderUsingHttpSession.adoc}   |   8 +-
 .../{impl => jdo}/CommandSubscriberForJdo.adoc     |   0
 .../IsisModuleExtCommandLogJdo.adoc}               |   8 +-
 .../mixins/HasInteractionId_command.adoc           |   0
 .../mixins/HasUsername_recentCommandsByUser.adoc   |   0
 .../mixins/Object_recentCommands.adoc              |   0
 .../{impl => jdo}/ui/CommandServiceMenu.adoc       |   1 +
 .../jpa/IsisModuleExtCommandLogJpa.adoc}           |   7 +-
 .../primary/IsisModuleExtCommandReplayPrimary.adoc |   1 +
 .../primary/restapi/CommandRetrievalService.adoc   |   3 +-
 .../primary/ui/CommandReplayOnPrimaryService.adoc  |   3 +-
 .../IsisModuleExtCommandReplaySecondary.adoc       |   1 +
 .../secondary/analyser/CommandReplayAnalyser.adoc  |   8 +-
 .../analyser/CommandReplayAnalyserException.adoc   |   2 +-
 .../analyser/CommandReplayAnalyserResult.adoc      |   2 +-
 .../analysis/CommandReplayAnalysisService.adoc     |  12 +-
 .../secondary/fetch/CommandFetcher.adoc            |   8 +-
 .../secondary/mixins/CommandJdo_replayQueue.adoc   |   2 +-
 ...dJdo_exclude.adoc => CommandModel_exclude.adoc} |   8 +-
 .../ui/CommandReplayOnSecondaryService.adoc        |   3 +-
 .../hsqldbmgr/dom/IsisModuleExtHsqldbMgr.adoc      |   1 +
 .../hsqldbmgr/dom/services/HsqlDbManagerMenu.adoc  |   1 +
 .../index/secman/api/IsisModuleExtSecmanApi.adoc   |   1 +
 .../index/secman/api/SecmanConfiguration.adoc      |   6 +
 .../ApplicationPermissionRepository.adoc           |  28 --
 .../{ => dom}/ApplicationPermission.adoc           |  28 +-
 .../{ => dom}/ApplicationPermissionMode.adoc       |   4 +-
 .../dom/ApplicationPermissionRepository.adoc       |  39 ++
 .../{ => dom}/ApplicationPermissionRule.adoc       |   4 +-
 .../{ => dom}/ApplicationPermissionValue.adoc      |   2 +-
 .../{ => dom}/ApplicationPermissionValueSet.adoc   |   2 +-
 .../{ => spi}/PermissionsEvaluationService.adoc    |   2 +-
 .../PermissionsEvaluationServiceAbstract.adoc      |   0
 ...PermissionsEvaluationServiceAllowBeatsVeto.adoc |   0
 ...PermissionsEvaluationServiceVetoBeatsAllow.adoc |   0
 .../secman/api/role/{ => dom}/ApplicationRole.adoc |   8 +-
 .../role/{ => dom}/ApplicationRoleRepository.adoc  |  20 +-
 .../api/tenancy/{ => dom}/ApplicationTenancy.adoc  |  12 +-
 .../{ => dom}/ApplicationTenancyRepository.adoc    |  15 +-
 .../secman/api/tenancy/{ => dom}/HasAtPath.adoc    |   6 +-
 .../{ => spi}/ApplicationTenancyEvaluator.adoc     |  10 +-
 .../secman/api/user/{ => dom}/AccountType.adoc     |   0
 .../secman/api/user/{ => dom}/ApplicationUser.adoc |  70 +--
 .../user/{ => dom}/ApplicationUserRepository.adoc  |  29 +-
 .../api/user/{ => dom}/ApplicationUserStatus.adoc  |   0
 .../api/{ => user}/events/UserCreatedEvent.adoc    |   0
 .../dom/user => api/user/menu}/MeService.adoc      |   1 +
 .../secman/jdo/seed/SeedSecurityModuleService.adoc |  14 -
 .../secman/jdo/seed/scripts/GlobalTenancy.adoc     |  14 -
 .../IsisExtSecmanFixtureRoleAndPermissions.adoc    |  15 -
 .../jpa/seed/SeedUsersAndRolesFixtureScript.adoc   |  14 -
 .../IsisExtSecmanAdminRoleAndPermissions.adoc      |  13 -
 .../jpa/seed/scripts/IsisExtSecmanAdminUser.adoc   |  13 -
 .../IsisExtSecmanFixtureRoleAndPermissions.adoc    |  15 -
 ...IsisExtSecmanRegularUserRoleAndPermissions.adoc |  15 -
 .../seed/SeedSecurityModuleService.adoc            |   0
 .../scripts}/SeedUsersAndRolesFixtureScript.adoc   |   2 +-
 .../IsisConfigurationRoleAndPermissions.adoc}      |   8 +-
 .../other/IsisExtH2ConsoleRoleAndPermissions.adoc} |  10 +-
 ...PersistenceJdoMetaModelRoleAndPermissions.adoc} |  10 +-
 .../IsisSudoImpersonateRoleAndPermissions.adoc}    |   8 +-
 ...erRestfulObjectsSwaggerRoleAndPermissions.adoc} |  10 +-
 .../seed/scripts/secman}/GlobalTenancy.adoc        |   0
 .../IsisExtSecmanAdminRoleAndPermissions.adoc      |   2 +
 .../scripts/secman}/IsisExtSecmanAdminUser.adoc    |   2 +
 ...IsisExtSecmanRegularUserRoleAndPermissions.adoc |   8 +-
 ...tyModuleAppUserRegistrationServiceAbstract.adoc |   0
 .../JavaAwtBufferedImageByteArrayConverter.adoc}   |   8 +-
 .../applib/IsisModuleSubdomainsExcelApplib.adoc    |   1 +
 .../pages/index/excel/testing/ExcelFixture.adoc    |   1 +
 .../pages/index/excel/testing/ExcelFixture2.adoc   |   1 +
 .../h2console/ui/IsisModuleTestingH2ConsoleUi.adoc |   1 +
 .../index/h2console/ui/services/H2ManagerMenu.adoc |   1 +
 .../jpa/IsisModuleValAsciidocPersistenceJpa.adoc}  |   6 +-
 .../jpa/converters/IsisAsciiDocConverter.adoc}     |  15 +-
 .../jpa/IsisModuleValMarkdownPersistenceJpa.adoc}  |   6 +-
 .../jpa/converters/IsisMarkdownConverter.adoc}     |  15 +-
 .../applib/mixins/Object_impersonateWithRoles.adoc |   6 +-
 .../IsisModuleRestfulObjectsRendering.adoc         |   1 +
 .../service/swagger/SwaggerServiceMenu.adoc        |   1 +
 core/adoc/modules/_overview/pages/about.adoc       | 514 ++++++++++-----------
 .../modules/config/pages/sections/isis.applib.adoc |  40 +-
 .../config/pages/sections/isis.viewer.wicket.adoc  |   8 +
 .../modules/tooling-cli/examples/isis-tooling.yml  |   7 +-
 111 files changed, 786 insertions(+), 674 deletions(-)

diff --git a/antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc b/antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc
index 8659ec1..2c15eaa 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc
@@ -7,6 +7,11 @@
 .IsisModuleApplib.java
 ----
 class IsisModuleApplib {
+  public static final String NAMESPACE;
+  // for configuration; to minimize the risk of granting perms accidentally
+public static final String NAMESPACE_CONF;
+  // for configuration; to minimize the risk of granting perms accidentally
+public static final String NAMESPACE_SUDO;
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/annotation/Action.adoc b/antora/components/refguide-index/modules/applib/pages/index/annotation/Action.adoc
index f8ff327..0b3bc73 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/annotation/Action.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/annotation/Action.adoc
@@ -10,6 +10,7 @@ Groups together all domain-specific metadata for an invokable action on a domain
 ----
 @interface Action {
   String associateWith() default "";     // <.>
+  String choicesFrom() default "";     // <.>
   Class<? extends CommandDtoProcessor> commandDtoProcessor() default CommandDtoProcessor.class;     // <.>
   Publishing commandPublishing() default Publishing.NOT_SPECIFIED;     // <.>
   Class<? extends ActionDomainEvent<?>> domainEvent() default ActionDomainEvent.Default.class;     // <.>
@@ -25,6 +26,18 @@ Groups together all domain-specific metadata for an invokable action on a domain
 <.> xref:#associateWith[associateWith]
 +
 --
+[WARNING]
+====
+[red]#_deprecated:_#
+
+use { _#choicesFrom()_ instead
+====
+
+Associates this action with a property or collection, specifying its id.
+--
+<.> xref:#choicesFrom[choicesFrom]
++
+--
 Associates this action with a property or collection, specifying its id.
 --
 <.> xref:#commandDtoProcessor[commandDtoProcessor]
@@ -78,6 +91,24 @@ For downloading xref:refguide:applib:index/value/Blob.adoc[Blob] or xref:refguid
 [#associateWith]
 === associateWith
 
+[WARNING]
+====
+[red]#_deprecated:_#
+
+use { _#choicesFrom()_ instead
+====
+
+Associates this action with a property or collection, specifying its id.
+
+To specify the layout order use _ActionLayout#sequence()_ .
+
+For example `@Action(associateWith="items") @ActionLayout(sequence="2.1")` 
+
+If an action is associated with a collection, then any matching parameters will have their choices automatically inferred from the collection (if not otherwise specified) and any collection parameter defaults can be specified using checkboxes (in the Wicket UI, at least).
+
+[#choicesFrom]
+=== choicesFrom
+
 Associates this action with a property or collection, specifying its id.
 
 To specify the layout order use _ActionLayout#sequence()_ .
diff --git a/antora/components/refguide-index/modules/applib/pages/index/annotation/ActionLayout.adoc b/antora/components/refguide-index/modules/applib/pages/index/annotation/ActionLayout.adoc
index 3fe90b6..3ef8233 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/annotation/ActionLayout.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/annotation/ActionLayout.adoc
@@ -9,6 +9,7 @@ Layout hints for actions.
 .ActionLayout.java
 ----
 @interface ActionLayout {
+  String associateWith() default "";     // <.>
   BookmarkPolicy bookmarking() default BookmarkPolicy.NOT_SPECIFIED;     // <.>
   String cssClass() default "";     // <.>
   String cssClassFa() default "";     // <.>
@@ -25,6 +26,11 @@ Layout hints for actions.
 }
 ----
 
+<.> xref:#associateWith[associateWith]
++
+--
+Associates this action with a property or collection, specifying its id.
+--
 <.> xref:#bookmarking[bookmarking]
 +
 --
@@ -93,6 +99,15 @@ The order of this member relative to other members in the same (layout) group, g
 
 == Members
 
+[#associateWith]
+=== associateWith
+
+Associates this action with a property or collection, specifying its id.
+
+To specify the layout order use _ActionLayout#sequence()_ .
+
+For example `@ActionLayout(associateWith="items") @ActionLayout(sequence="2.1")` 
+
 [#bookmarking]
 === bookmarking
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/annotation/Where.adoc b/antora/components/refguide-index/modules/applib/pages/index/annotation/Where.adoc
index d2387de..0c9f2e2 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/annotation/Where.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/annotation/Where.adoc
@@ -24,6 +24,7 @@ enum Where {
   NOWHERE     // <.>
   NOT_SPECIFIED     // <.>
   String getFriendlyName()
+  boolean isAlways()
   boolean inParentedTable()
   boolean inStandaloneTable()
   boolean includes(Where context)     // <.>
diff --git a/antora/components/refguide-index/modules/applib/pages/index/domain/DomainObjectList.adoc b/antora/components/refguide-index/modules/applib/pages/index/domain/DomainObjectList.adoc
index 82580c8..2339e53 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/domain/DomainObjectList.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/domain/DomainObjectList.adoc
@@ -15,11 +15,10 @@ Thus, the RO client then only ever needs to know how to render an object, in all
 .DomainObjectList.java
 ----
 class DomainObjectList {
+  public static final String OBJECT_TYPE;
   DomainObjectList()
-  DomainObjectList(final String title, final String elementObjectType, final String actionOwningType, final String actionId, final String actionArguments)
+  DomainObjectList(final String title, final String elementTypeFqcn, final String actionOwningFqcn, final String actionId, final String actionArguments)
   String title()
-  String getElementObjectType()
-  String getActionOwningType()
   String getActionId()
   String getActionArguments()
   List<Object> getObjects()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/graph/tree/TreeNode.adoc b/antora/components/refguide-index/modules/applib/pages/index/graph/tree/TreeNode.adoc
index d802ef6..d66a3f9 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/graph/tree/TreeNode.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/graph/tree/TreeNode.adoc
@@ -22,6 +22,7 @@ interface TreeNode<T> {
   TreeState getTreeState()     // <.>
   boolean isExpanded(TreePath treePath)
   void expand(TreePath... treePaths)     // <.>
+  void expand()     // <.>
   void collapse(TreePath... treePaths)     // <.>
   TreeNode<T> lazy(T node, Class<? extends TreeAdapter<T>> treeAdapterClass)     // <.>
   Iterator<TreeNode<T>> iteratorHierarchyUp()
@@ -40,6 +41,11 @@ interface TreeNode<T> {
 --
 Adds _treePaths_ to the set of expanded nodes, as held by this tree's shared state object.
 --
+<.> xref:#expand__[expand()]
++
+--
+Expands this node and all its parents.
+--
 <.> xref:#collapse__TreePath[collapse(TreePath)]
 +
 --
@@ -62,6 +68,11 @@ Convenient shortcut.
 
 Adds _treePaths_ to the set of expanded nodes, as held by this tree's shared state object.
 
+[#expand__]
+=== expand()
+
+Expands this node and all its parents.
+
 [#collapse__TreePath]
 === collapse(TreePath)
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/id/LogicalType.adoc b/antora/components/refguide-index/modules/applib/pages/index/id/LogicalType.adoc
index c903813..9137e8f 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/id/LogicalType.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/id/LogicalType.adoc
@@ -51,7 +51,7 @@ Canonical name of the corresponding class.
 <.> xref:#getLogicalTypeName__[getLogicalTypeName()]
 +
 --
-Returns the (unique) logical-type-name, as per the _ObjectSpecIdFacet_ .
+Returns the logical-type-name (unique amongst non-abstract classes), as per the _ObjectTypeFacet_ .
 --
 <.> xref:#getLogicalTypeSimpleName__[getLogicalTypeSimpleName()]
 +
@@ -94,11 +94,11 @@ Canonical name of the corresponding class.
 [#getLogicalTypeName__]
 === getLogicalTypeName()
 
-Returns the (unique) logical-type-name, as per the _ObjectSpecIdFacet_ .
+Returns the logical-type-name (unique amongst non-abstract classes), as per the _ObjectTypeFacet_ .
 
 This will typically be the value of the _DomainObject#objectType()_ annotation attribute. If none has been specified then will default to the fully qualified class name (with _ClassSubstitutorRegistry class name substituted_ if necessary to allow for runtime bytecode enhancement.
 
-The _ObjectSpecification_ can be retrieved using _SpecificationLoader#lookupBySpecIdElseLoad(String)_ } passing the logical-type-name as argument.
+The _ObjectSpecification_ can be retrieved using _SpecificationLoader#specForLogicalTypeName(String)_ } passing the logical-type-name as argument.
 
 [#getLogicalTypeSimpleName__]
 === getLogicalTypeSimpleName()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/layout/grid/bootstrap3/Size.adoc b/antora/components/refguide-index/modules/applib/pages/index/layout/grid/bootstrap3/Size.adoc
index c57efaa..f3ea015 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/layout/grid/bootstrap3/Size.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/layout/grid/bootstrap3/Size.adoc
@@ -1,7 +1,7 @@
 = Size _(enum)_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-As pergrid options, also used inresponsive utilityclasses.
+As pergrid options
 
 == API
 
@@ -13,6 +13,7 @@ enum Size {
   SM
   MD
   LG
+  XL
   String toCssClassFragment()
 }
 ----
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectIdentifier.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectIdentifier.adoc
index 24bc7d0..5c1a91e 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectIdentifier.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectIdentifier.adoc
@@ -12,6 +12,7 @@ The object identifier is also accessible from the _org.apache.isis.applib.servic
 ----
 class Object_objectIdentifier {
   String prop()
+  boolean hideProp()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectType.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectType.adoc
index a9a39e8..e167280 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectType.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/metamodel/Object_objectType.adoc
@@ -12,6 +12,7 @@ The object type is also accessible from the _org.apache.isis.applib.services.boo
 ----
 class Object_objectType {
   String prop()
+  boolean hideProp()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/confview/ConfigurationMenu.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/confview/ConfigurationMenu.adoc
index 0c64b66..04eccdb 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/confview/ConfigurationMenu.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/confview/ConfigurationMenu.adoc
@@ -9,6 +9,7 @@ Simply provides a UI in order to access the configuration properties available f
 .ConfigurationMenu.java
 ----
 class ConfigurationMenu {
+  public static final String OBJECT_TYPE;
   ConfigurationMenu(FactoryService factoryService)
   ConfigurationViewmodel configuration()
 }
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/confview/ConfigurationProperty.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/confview/ConfigurationProperty.adoc
index ae7fdff..6d75c96 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/confview/ConfigurationProperty.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/confview/ConfigurationProperty.adoc
@@ -7,6 +7,7 @@
 .ConfigurationProperty.java
 ----
 class ConfigurationProperty {
+  public static final String OBJECT_TYPE;
   ConfigurationProperty(final String key, final String value)
   int compareTo(final ConfigurationProperty other)
 }
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/layout/LayoutServiceMenu.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/layout/LayoutServiceMenu.adoc
index 9e4ed5b..58f155a 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/layout/LayoutServiceMenu.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/layout/LayoutServiceMenu.adoc
@@ -9,6 +9,7 @@ Simply provides a UI to allow layouts (obtained from xref:refguide:applib:index/
 .LayoutServiceMenu.java
 ----
 class LayoutServiceMenu {
+  public static final String OBJECT_TYPE;
   LayoutServiceMenu()
   Blob downloadLayouts(final Style style)
   Style default0DownloadLayouts()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/BeanSort.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/BeanSort.adoc
index 897877e..ea5b1a7 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/BeanSort.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/BeanSort.adoc
@@ -16,6 +16,8 @@ enum BeanSort {
   MIXIN     // <.>
   VALUE     // <.>
   COLLECTION     // <.>
+  ABSTRACT     // <.>
+  VETOED     // <.>
   UNKNOWN
   boolean isManagedBean()
   boolean isMixin()
@@ -23,6 +25,8 @@ enum BeanSort {
   boolean isValue()
   boolean isCollection()
   boolean isEntity()
+  boolean isAbstract()
+  boolean isVetoed()
   boolean isUnknown()
   boolean isToBeIntrospected()
   boolean isWrappingSupported()
@@ -64,6 +68,16 @@ Immutable, serializable object.
 --
 Container of objects.
 --
+<.> xref:#ABSTRACT[ABSTRACT]
++
+--
+A non concrete type, that is a placeholder for a its concrete implementer.
+--
+<.> xref:#VETOED[VETOED]
++
+--
+Type must not be added to the meta-model, eg. by means of _Vetoed_ , _Profile_ or xref:refguide:applib:index/annotation/Programmatic.adoc[Programmatic]
+--
 
 == Members
 
@@ -113,3 +127,13 @@ Immutable, serializable object.
 === COLLECTION
 
 Container of objects.
+
+[#ABSTRACT]
+=== ABSTRACT
+
+A non concrete type, that is a placeholder for a its concrete implementer.
+
+[#VETOED]
+=== VETOED
+
+Type must not be added to the meta-model, eg. by means of _Vetoed_ , _Profile_ or xref:refguide:applib:index/annotation/Programmatic.adoc[Programmatic]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelService.adoc
index 937ac8f..3391e74 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelService.adoc
@@ -9,8 +9,8 @@ This service provides a formal API into the framework's metamodel.
 .MetaModelService.java
 ----
 interface MetaModelService {
-  Class<?> fromObjectType(final String objectType)     // <.>
-  String toObjectType(final Class<?> domainType)     // <.>
+  Optional<LogicalType> lookupLogicalTypeByName(final String objectType)     // <.>
+  Optional<LogicalType> lookupLogicalTypeByClass(final Class<?> domainType)     // <.>
   void rebuild(final Class<?> domainType)     // <.>
   DomainModel getDomainModel()     // <.>
   BeanSort sortOf(Class<?> domainType, Mode mode)     // <.>
@@ -20,15 +20,15 @@ interface MetaModelService {
 }
 ----
 
-<.> xref:#fromObjectType__String[fromObjectType(String)]
+<.> xref:#lookupLogicalTypeByName__String[lookupLogicalTypeByName(String)]
 +
 --
-Provides a reverse lookup of a domain class' object type, as defined by _DomainObject#objectType()_ (or any other mechanism that corresponds to Isis' `ObjectSpecIdFacet` ).
+Provides a lookup by objectType of a domain class' object type, as defined by _DomainObject#objectType()_ (or any other mechanism that corresponds to Isis' `ObjectTypeFacet` ). Will return an empty result if there is no such non-abstract class registered. (interfaces and abstract types are never added to the lookup table).
 --
-<.> xref:#toObjectType__Class[toObjectType(Class)]
+<.> xref:#lookupLogicalTypeByClass__Class[lookupLogicalTypeByClass(Class)]
 +
 --
-Provides a lookup of a domain class' object type, as defined by _DomainObject#objectType()_ (or any other mechanism that corresponds to Isis' `ObjectSpecIdFacet` ).
+Provides a lookup by class of a domain class' object type, as defined by _DomainObject#objectType()_ (or any other mechanism that corresponds to Isis' `ObjectTypeFacet` ).
 --
 <.> xref:#rebuild__Class[rebuild(Class)]
 +
@@ -63,15 +63,15 @@ Exports the entire metamodel as a DTO, serializable into XML using JAXB.
 
 == Members
 
-[#fromObjectType__String]
-=== fromObjectType(String)
+[#lookupLogicalTypeByName__String]
+=== lookupLogicalTypeByName(String)
 
-Provides a reverse lookup of a domain class' object type, as defined by _DomainObject#objectType()_ (or any other mechanism that corresponds to Isis' `ObjectSpecIdFacet` ).
+Provides a lookup by objectType of a domain class' object type, as defined by _DomainObject#objectType()_ (or any other mechanism that corresponds to Isis' `ObjectTypeFacet` ). Will return an empty result if there is no such non-abstract class registered. (interfaces and abstract types are never added to the lookup table).
 
-[#toObjectType__Class]
-=== toObjectType(Class)
+[#lookupLogicalTypeByClass__Class]
+=== lookupLogicalTypeByClass(Class)
 
-Provides a lookup of a domain class' object type, as defined by _DomainObject#objectType()_ (or any other mechanism that corresponds to Isis' `ObjectSpecIdFacet` ).
+Provides a lookup by class of a domain class' object type, as defined by _DomainObject#objectType()_ (or any other mechanism that corresponds to Isis' `ObjectTypeFacet` ).
 
 [#rebuild__Class]
 === rebuild(Class)
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelServiceMenu.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelServiceMenu.adoc
index 9451988..968dd1f 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelServiceMenu.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/metamodel/MetaModelServiceMenu.adoc
@@ -9,6 +9,7 @@ Provides a UI to allow domain model metadata (obtained from xref:refguide:applib
 .MetaModelServiceMenu.java
 ----
 class MetaModelServiceMenu {
+  public static final String OBJECT_TYPE;
   MetaModelServiceMenu()
   Clob downloadMetaModelCsv(final String csvFileName)
   String default0DownloadMetaModelCsv()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/tablecol/TableColumnOrderForCollectionTypeAbstract.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/tablecol/TableColumnOrderForCollectionTypeAbstract.adoc
index 940a61c..9dfa413 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/tablecol/TableColumnOrderForCollectionTypeAbstract.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/tablecol/TableColumnOrderForCollectionTypeAbstract.adoc
@@ -1,14 +1,38 @@
 = TableColumnOrderForCollectionTypeAbstract
 :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 [...]
 
+Convenience implementation of xref:refguide:applib:index/services/tablecol/TableColumnOrderService.adoc[TableColumnOrderService] that ignores requests for the order of any types other than that _#getCollectionType() type specified in the constructor_ .
+
 == API
 
 [source,java]
 .TableColumnOrderForCollectionTypeAbstract.java
 ----
 class TableColumnOrderForCollectionTypeAbstract<T> {
-  List<String> orderParented(final Object parent, final String collectionId, final Class<?> collectionType, final List<String> propertyIds)
-  List<String> orderStandalone(final Class<?> collectionType, final List<String> propertyIds)
+  List<String> orderParented(final Object parent, final String collectionId, final Class<?> collectionType, final List<String> propertyIds)     // <.>
+  List<String> orderStandalone(final Class<?> collectionType, final List<String> propertyIds)     // <.>
 }
 ----
 
+<.> xref:#orderParented__Object_String_Class_List[orderParented(Object, String, Class, List)]
++
+--
+Ignores any request for collections not of the _#getCollectionType() type specified in the constructor_ , otherwise delegates to _#orderParented(Object, String, List)_ .
+--
+<.> xref:#orderStandalone__Class_List[orderStandalone(Class, List)]
++
+--
+Ignores any request for collections not of the _#getCollectionType() type specified in the constructor_ , otherwise delegates to _#orderStandalone(List)_ .
+--
+
+== Members
+
+[#orderParented__Object_String_Class_List]
+=== orderParented(Object, String, Class, List)
+
+Ignores any request for collections not of the _#getCollectionType() type specified in the constructor_ , otherwise delegates to _#orderParented(Object, String, List)_ .
+
+[#orderStandalone__Class_List]
+=== orderStandalone(Class, List)
+
+Ignores any request for collections not of the _#getCollectionType() type specified in the constructor_ , otherwise delegates to _#orderStandalone(List)_ .
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/tablecol/TableColumnOrderService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/tablecol/TableColumnOrderService.adoc
index a526181..b0b9340 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/tablecol/TableColumnOrderService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/tablecol/TableColumnOrderService.adoc
@@ -1,12 +1,16 @@
 = TableColumnOrderService _(interface)_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Provides the ability to reorder (or suppress) columns in both parented- and standalone tables.
+Provides the ability to reorder columns in both parented- and standalone tables.
+
+If a property is excluded from the returned list, then no column will be rendered, so the API can also be used to suppress columns completely.
 
 There can be multiple implementations of this service registered, ordered as per the Spring _org.springframework.core.annotation.Order_ annotation (or equivalent). The result of the first service implementation to return a non- `null` value will be used.
 
 If all provided implementations return `null` , then the framework will fallback to a default implementation.
 
+The similar xref:refguide:applib:index/services/tablecol/TableColumnVisibilityService.adoc[TableColumnVisibilityService] SPI is the preferred way to suppress columns. As noted above, this xref:refguide:applib:index/services/tablecol/TableColumnOrderService.adoc[TableColumnOrderService] can also be used to suppress columns. The reason that the xref:refguide:applib:index/services/tablecol/TableColumnVisibilityService.adoc[TableColumnVisibilityService] is needed in addition to this SPI is b [...]
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/Object_recentCommands.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/tablecol/TableColumnVisibilityService.adoc
similarity index 51%
copy from antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/Object_recentCommands.adoc
copy to antora/components/refguide-index/modules/applib/pages/index/services/tablecol/TableColumnVisibilityService.adoc
index 2a09989..0db505e 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/Object_recentCommands.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/tablecol/TableColumnVisibilityService.adoc
@@ -1,29 +1,31 @@
-= Object_recentCommands
+= TableColumnVisibilityService _(interface)_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-This mixin contributes a `recentCommands` action to any domain object (unless also xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] - commands don't themselves have commands).
+Provides the ability to suppress columns in tables.
+
+Only one API is used, applying to both parented- and standalone tables.
+
+There can be multiple implementations of this service registered, ordered as per the Spring _org.springframework.core.annotation.Order_ annotation (or equivalent). All implementations are consulted.
 
 == API
 
 [source,java]
-.Object_recentCommands.java
+.TableColumnVisibilityService.java
 ----
-class Object_recentCommands {
-  Object_recentCommands(final Object domainObject)
-  List<CommandJdo> act()
-  boolean hideAct()     // <.>
+interface TableColumnVisibilityService {
+  boolean hides(final Class<?> collectionType, final String memberId)     // <.>
 }
 ----
 
-<.> xref:#hideAct__[hideAct()]
+<.> xref:#hides__Class_String[hides(Class, String)]
 +
 --
-Hide if the contributee is itself xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] (commands don't have commands).
+For the specified collectionType, whether the given memberId is visible
 --
 
 == Members
 
-[#hideAct__]
-=== hideAct()
+[#hides__Class_String]
+=== hides(Class, String)
 
-Hide if the contributee is itself xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] (commands don't have commands).
+For the specified collectionType, whether the given memberId is visible
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/user/ImpersonateMenu.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/user/ImpersonateMenu.adoc
index 7c32756..73cc7dc 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/user/ImpersonateMenu.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/user/ImpersonateMenu.adoc
@@ -11,15 +11,19 @@ All of the actions provided here are restricted to PROTOTYPE mode only; this fea
 .ImpersonateMenu.java
 ----
 class ImpersonateMenu {
+  // deliberately not part of isis.applib
+public static final String OBJECT_TYPE;
   void impersonate(final String userName)     // <.>
   boolean hideImpersonate()
   String disableImpersonate()
-  void impersonateWithRoles(final String userName, final List<String> roleNames)     // <.>
+  void impersonateWithRoles(final String userName, final boolean useUsersRoles, final List<String> roleNames)     // <.>
   boolean hideImpersonateWithRoles()
   String disableImpersonateWithRoles()
   List<String> choices0ImpersonateWithRoles()
-  List<String> choices1ImpersonateWithRoles()
-  List<String> default1ImpersonateWithRoles(String userName)
+  boolean default1ImpersonateWithRoles()
+  boolean hide2ImpersonateWithRoles(final String userName, boolean useUsersRoles)
+  List<String> choices2ImpersonateWithRoles(final String userName, boolean useUsersRoles)
+  List<String> default2ImpersonateWithRoles(final String userName, boolean useUsersRoles)
   void stopImpersonating()
   boolean hideStopImpersonating()
   String disableStopImpersonating()
@@ -31,7 +35,7 @@ class ImpersonateMenu {
 --
 Simple implementation that is surfaced if there is no advisor.
 --
-<.> xref:#impersonateWithRoles__String_List[impersonateWithRoles(String, List)]
+<.> xref:#impersonateWithRoles__String_boolean_List[impersonateWithRoles(String, boolean, List)]
 +
 --
 Impersonate a selected user, either using their current roles or with a specific set of roles.
@@ -44,8 +48,8 @@ Impersonate a selected user, either using their current roles or with a specific
 
 Simple implementation that is surfaced if there is no advisor.
 
-[#impersonateWithRoles__String_List]
-=== impersonateWithRoles(String, List)
+[#impersonateWithRoles__String_boolean_List]
+=== impersonateWithRoles(String, boolean, List)
 
 Impersonate a selected user, either using their current roles or with a specific set of roles.
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/user/RoleMemento.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/user/RoleMemento.adoc
index e1179d1..3e4bab5 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/user/RoleMemento.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/user/RoleMemento.adoc
@@ -9,6 +9,7 @@ Immutable serializable value held by xref:refguide:applib:index/services/user/Us
 .RoleMemento.java
 ----
 class RoleMemento {
+  public static final String OBJECT_TYPE;
   RoleMemento(final String name)     // <.>
   RoleMemento(final String name, final String description)     // <.>
   String title()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/user/UserMemento.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/user/UserMemento.adoc
index cb9cc19..3174973 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/user/UserMemento.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/user/UserMemento.adoc
@@ -9,6 +9,7 @@ Immutable serializable value holding details about a user and its roles.
 .UserMemento.java
 ----
 class UserMemento {
+  public static final String OBJECT_TYPE;
   UserMemento(final String name, final Stream<RoleMemento> roles)     // <.>
   UserMemento system()     // <.>
   UserMemento ofName(final String name)     // <.>
diff --git a/antora/components/refguide-index/modules/commons/pages/index/collections/Can.adoc b/antora/components/refguide-index/modules/commons/pages/index/collections/Can.adoc
index 222e6aa..0d2e481 100644
--- a/antora/components/refguide-index/modules/commons/pages/index/collections/Can.adoc
+++ b/antora/components/refguide-index/modules/commons/pages/index/collections/Can.adoc
@@ -48,11 +48,13 @@ interface Can<T> {
   void zip(Iterable<R> zippedIn, BiConsumer<? super T, ? super R> action)     // <.>
   Can<R> zipMap(Iterable<Z> zippedIn, BiFunction<? super T, ? super Z, R> mapper)     // <.>
   Can<T> add(T element)
+  Can<T> addUnique(T element)     // <.>
   Can<T> addAll(Can<T> other)
   Can<T> add(int index, T element)     // <.>
   Can<T> replace(int index, T element)
   Can<T> remove(int index)     // <.>
   Can<T> remove(T element)
+  Can<T> pickByIndex(int... indices)     // <.>
   int indexOf(T element)     // <.>
   boolean isEqualTo(final Can<?> other)     // <.>
   boolean startsWith(final Can<?> other)     // <.>
@@ -189,6 +191,11 @@ Similar to _#forEach(Consumer)_ , but zipps in _zippedIn_ to iterate through its
 --
 Similar to _#map(Function)_ , but zipps in _zippedIn_ to iterate through its elements and passes them over as the second argument to the _mapper_ .
 --
+<.> xref:#addUnique__T[addUnique(T)]
++
+--
+Adds the specified element to the list if it is not already present.
+--
 <.> xref:#add__int_T[add(int, T)]
 +
 --
@@ -199,6 +206,11 @@ Inserts the specified element at the specified position in this list (optional o
 --
 Removes the element at the specified position in this list (optional operation). Shifts any subsequent elements to the left (subtracts one from their indices). Returns the element that was removed from the list.
 --
+<.> xref:#pickByIndex__int[pickByIndex(int)]
++
+--
+Given _n_ indices, returns an equivalent of(where nulls are being ignored)
+--
 <.> xref:#indexOf__T[indexOf(T)]
 +
 --
@@ -364,6 +376,11 @@ Similar to _#forEach(Consumer)_ , but zipps in _zippedIn_ to iterate through its
 
 Similar to _#map(Function)_ , but zipps in _zippedIn_ to iterate through its elements and passes them over as the second argument to the _mapper_ .
 
+[#addUnique__T]
+=== addUnique(T)
+
+Adds the specified element to the list if it is not already present.
+
 [#add__int_T]
 === add(int, T)
 
@@ -374,6 +391,21 @@ Inserts the specified element at the specified position in this list (optional o
 
 Removes the element at the specified position in this list (optional operation). Shifts any subsequent elements to the left (subtracts one from their indices). Returns the element that was removed from the list.
 
+[#pickByIndex__int]
+=== pickByIndex(int)
+
+Given _n_ indices, returns an equivalent of(where nulls are being ignored)
+
+----
+
+Can.of(
+    this.get(indices[0]).orElse(null),
+    this.get(indices[1]).orElse(null),
+    ...
+    this.get(indices[n-1]).orElse(null)
+)
+----
+
 [#indexOf__T]
 === indexOf(T)
 
diff --git a/antora/components/refguide-index/modules/core/pages/index/config/datasources/DataSourceIntrospectionService.adoc b/antora/components/refguide-index/modules/core/pages/index/config/datasources/DataSourceIntrospectionService.adoc
index 8ac0c1e..5d8d23d 100644
--- a/antora/components/refguide-index/modules/core/pages/index/config/datasources/DataSourceIntrospectionService.adoc
+++ b/antora/components/refguide-index/modules/core/pages/index/config/datasources/DataSourceIntrospectionService.adoc
@@ -9,7 +9,7 @@ For a given _Spring_ context, makes information about configured data-sources av
 .DataSourceIntrospectionService.java
 ----
 class DataSourceIntrospectionService {
-  Stream<DataSourceInfo> streamDataSourceInfos()
+  Can<DataSourceInfo> getDataSourceInfos()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/core/pages/index/metamodel/services/command/CommandDtoFactory.adoc b/antora/components/refguide-index/modules/core/pages/index/metamodel/services/command/CommandDtoFactory.adoc
index cffe826..6987c8d 100644
--- a/antora/components/refguide-index/modules/core/pages/index/metamodel/services/command/CommandDtoFactory.adoc
+++ b/antora/components/refguide-index/modules/core/pages/index/metamodel/services/command/CommandDtoFactory.adoc
@@ -11,8 +11,8 @@ There are some similarities to _org.apache.isis.core.metamodel.services.ixn.Inte
 .CommandDtoFactory.java
 ----
 interface CommandDtoFactory {
-  CommandDto asCommandDto(final UUID interactionId, final Can<ManagedObject> targetAdapters, final ObjectAction objectAction, final Can<ManagedObject> argAdapters)     // <.>
-  CommandDto asCommandDto(final UUID interactionId, final Can<ManagedObject> targetAdapters, final OneToOneAssociation association, final ManagedObject valueAdapterOrNull)     // <.>
+  CommandDto asCommandDto(final UUID interactionId, final Can<InteractionHead> targets, final ObjectAction objectAction, final Can<ManagedObject> argAdapters)     // <.>
+  CommandDto asCommandDto(final UUID interactionId, final Can<InteractionHead> targets, final OneToOneAssociation association, final ManagedObject valueAdapterOrNull)     // <.>
   void addActionArgs(final ObjectAction objectAction, final ActionDto actionDto, final Can<ManagedObject> argAdapters)     // <.>
   void addPropertyValue(final OneToOneAssociation property, final PropertyDto propertyDto, final ManagedObject valueAdapter)     // <.>
 }
diff --git a/antora/components/refguide-index/modules/core/pages/index/metamodel/services/ixn/InteractionDtoFactory.adoc b/antora/components/refguide-index/modules/core/pages/index/metamodel/services/ixn/InteractionDtoFactory.adoc
index ff10ce9..ecf7ef5 100644
--- a/antora/components/refguide-index/modules/core/pages/index/metamodel/services/ixn/InteractionDtoFactory.adoc
+++ b/antora/components/refguide-index/modules/core/pages/index/metamodel/services/ixn/InteractionDtoFactory.adoc
@@ -11,13 +11,13 @@ There are some similarities to _org.apache.isis.core.metamodel.services.command.
 .InteractionDtoFactory.java
 ----
 interface InteractionDtoFactory {
-  ActionInvocationDto asActionInvocationDto(ObjectAction objectAction, ManagedObject targetAdapter, Can<ManagedObject> argumentAdapters)     // <.>
+  ActionInvocationDto asActionInvocationDto(ObjectAction objectAction, InteractionHead head, Can<ManagedObject> argumentAdapters)     // <.>
   PropertyEditDto asPropertyEditDto(OneToOneAssociation property, ManagedObject targetAdapter, ManagedObject newValueAdapterIfAny)     // <.>
   ActionInvocationDto updateResult(ActionInvocationDto actionInvocationDto, ObjectAction objectAction, Object resultPojo)     // <.>
 }
 ----
 
-<.> xref:#asActionInvocationDto__ObjectAction_ManagedObject_Can[asActionInvocationDto(ObjectAction, ManagedObject, Can)]
+<.> xref:#asActionInvocationDto__ObjectAction_InteractionHead_Can[asActionInvocationDto(ObjectAction, InteractionHead, Can)]
 +
 --
 Called by the framework when invoking an action, to create an _ActionInvocationDto_ capturing the details of the action invocation (target, arguments etc).
@@ -35,8 +35,8 @@ Called by the framework to attach the result of an action invocation to the afor
 
 == Members
 
-[#asActionInvocationDto__ObjectAction_ManagedObject_Can]
-=== asActionInvocationDto(ObjectAction, ManagedObject, Can)
+[#asActionInvocationDto__ObjectAction_InteractionHead_Can]
+=== asActionInvocationDto(ObjectAction, InteractionHead, Can)
 
 Called by the framework when invoking an action, to create an _ActionInvocationDto_ capturing the details of the action invocation (target, arguments etc).
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/tablecol/TableColumnOrderForCollectionTypeAbstract.adoc b/antora/components/refguide-index/modules/core/pages/index/metamodel/services/tablecol/TableColumnOrderServiceDefault.adoc
similarity index 57%
copy from antora/components/refguide-index/modules/applib/pages/index/services/tablecol/TableColumnOrderForCollectionTypeAbstract.adoc
copy to antora/components/refguide-index/modules/core/pages/index/metamodel/services/tablecol/TableColumnOrderServiceDefault.adoc
index 940a61c..e42096b 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/tablecol/TableColumnOrderForCollectionTypeAbstract.adoc
+++ b/antora/components/refguide-index/modules/core/pages/index/metamodel/services/tablecol/TableColumnOrderServiceDefault.adoc
@@ -1,14 +1,38 @@
-= TableColumnOrderForCollectionTypeAbstract
+= TableColumnOrderServiceDefault
 :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 [...]
 
+Used as a identity fallback.
+
 == API
 
 [source,java]
-.TableColumnOrderForCollectionTypeAbstract.java
+.TableColumnOrderServiceDefault.java
 ----
-class TableColumnOrderForCollectionTypeAbstract<T> {
-  List<String> orderParented(final Object parent, final String collectionId, final Class<?> collectionType, final List<String> propertyIds)
-  List<String> orderStandalone(final Class<?> collectionType, final List<String> propertyIds)
+class TableColumnOrderServiceDefault {
+  List<String> orderParented(final Object parent, final String collectionId, final Class<?> collectionType, final List<String> propertyIds)     // <.>
+  List<String> orderStandalone(final Class<?> collectionType, final List<String> propertyIds)     // <.>
 }
 ----
 
+<.> xref:#orderParented__Object_String_Class_List[orderParented(Object, String, Class, List)]
++
+--
+Just returns the `propertyIds` unchanged.
+--
+<.> xref:#orderStandalone__Class_List[orderStandalone(Class, List)]
++
+--
+Just returns the `propertyIds` unchanged.
+--
+
+== Members
+
+[#orderParented__Object_String_Class_List]
+=== orderParented(Object, String, Class, List)
+
+Just returns the `propertyIds` unchanged.
+
+[#orderStandalone__Class_List]
+=== orderStandalone(Class, List)
+
+Just returns the `propertyIds` unchanged.
diff --git a/antora/components/refguide-index/modules/viewer/pages/index/wicket/viewer/services/ImpersonatedUserHolderWicket.adoc b/antora/components/refguide-index/modules/core/pages/index/webapp/impersonation/ImpersonatedUserHolderUsingHttpSession.adoc
similarity index 82%
rename from antora/components/refguide-index/modules/viewer/pages/index/wicket/viewer/services/ImpersonatedUserHolderWicket.adoc
rename to antora/components/refguide-index/modules/core/pages/index/webapp/impersonation/ImpersonatedUserHolderUsingHttpSession.adoc
index ffef9e00..5579462 100644
--- a/antora/components/refguide-index/modules/viewer/pages/index/wicket/viewer/services/ImpersonatedUserHolderWicket.adoc
+++ b/antora/components/refguide-index/modules/core/pages/index/webapp/impersonation/ImpersonatedUserHolderUsingHttpSession.adoc
@@ -1,4 +1,4 @@
-= ImpersonatedUserHolderWicket
+= ImpersonatedUserHolderUsingHttpSession
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 Implementation that supports impersonation, using the _HttpSession_ to store the value.
@@ -6,10 +6,10 @@ Implementation that supports impersonation, using the _HttpSession_ to store the
 == API
 
 [source,java]
-.ImpersonatedUserHolderWicket.java
+.ImpersonatedUserHolderUsingHttpSession.java
 ----
-class ImpersonatedUserHolderWicket {
-  ImpersonatedUserHolderWicket(HttpSession httpSession)
+class ImpersonatedUserHolderUsingHttpSession {
+  ImpersonatedUserHolderUsingHttpSession(final HttpServletRequest httpServletRequest)
   boolean supportsImpersonation()
   void setUserMemento(final UserMemento userMemento)
   Optional<UserMemento> getUserMemento()
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/CommandSubscriberForJdo.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/CommandSubscriberForJdo.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/CommandSubscriberForJdo.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/CommandSubscriberForJdo.adoc
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/IsisModuleExtCommandLogImpl.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/IsisModuleExtCommandLogJdo.adoc
similarity index 89%
rename from antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/IsisModuleExtCommandLogImpl.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/IsisModuleExtCommandLogJdo.adoc
index e8a278c..5e1d921 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/IsisModuleExtCommandLogImpl.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/IsisModuleExtCommandLogJdo.adoc
@@ -1,13 +1,13 @@
-= IsisModuleExtCommandLogImpl
+= IsisModuleExtCommandLogJdo
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 == API
 
 [source,java]
-.IsisModuleExtCommandLogImpl.java
+.IsisModuleExtCommandLogJdo.java
 ----
-class IsisModuleExtCommandLogImpl {
-  FixtureScript getTeardownFixture()
+class IsisModuleExtCommandLogJdo {
+  public static final String NAMESPACE;
   FixtureScript getTeardownFixtureWillDelete()     // <.>
 }
 ----
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/HasInteractionId_command.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/mixins/HasInteractionId_command.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/HasInteractionId_command.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/mixins/HasInteractionId_command.adoc
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/HasUsername_recentCommandsByUser.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/mixins/HasUsername_recentCommandsByUser.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/HasUsername_recentCommandsByUser.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/mixins/HasUsername_recentCommandsByUser.adoc
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/Object_recentCommands.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/mixins/Object_recentCommands.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/Object_recentCommands.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/mixins/Object_recentCommands.adoc
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/ui/CommandServiceMenu.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/ui/CommandServiceMenu.adoc
similarity index 96%
rename from antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/ui/CommandServiceMenu.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/ui/CommandServiceMenu.adoc
index a4965c7..af35a63 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/ui/CommandServiceMenu.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/jdo/ui/CommandServiceMenu.adoc
@@ -7,6 +7,7 @@
 .CommandServiceMenu.java
 ----
 class CommandServiceMenu {
+  public final static String OBJECT_TYPE;
   List<CommandJdo> activeCommands()
   boolean hideActiveCommands()
   List<CommandJdo> findCommands(final LocalDate from, final LocalDate to)
diff --git a/antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/jpa/IsisModuleExtCommandLogJpa.adoc
similarity index 85%
copy from antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc
copy to antora/components/refguide-index/modules/extensions/pages/index/commandlog/jpa/IsisModuleExtCommandLogJpa.adoc
index 8659ec1..2577dc6 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/jpa/IsisModuleExtCommandLogJpa.adoc
@@ -1,12 +1,13 @@
-= IsisModuleApplib
+= IsisModuleExtCommandLogJpa
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 == API
 
 [source,java]
-.IsisModuleApplib.java
+.IsisModuleExtCommandLogJpa.java
 ----
-class IsisModuleApplib {
+class IsisModuleExtCommandLogJpa {
+  public static final String NAMESPACE;
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/IsisModuleExtCommandReplayPrimary.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/IsisModuleExtCommandReplayPrimary.adoc
index 5391f7b..f362f7e 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/IsisModuleExtCommandReplayPrimary.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/IsisModuleExtCommandReplayPrimary.adoc
@@ -7,6 +7,7 @@
 .IsisModuleExtCommandReplayPrimary.java
 ----
 class IsisModuleExtCommandReplayPrimary {
+  public static final String NAMESPACE;
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/restapi/CommandRetrievalService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/restapi/CommandRetrievalService.adoc
index 8d05931..0efb0dc 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/restapi/CommandRetrievalService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/restapi/CommandRetrievalService.adoc
@@ -7,7 +7,8 @@
 .CommandRetrievalService.java
 ----
 class CommandRetrievalService {
-  List<CommandJdo> findCommandsOnPrimaryFrom(final UUID interactionId, final Integer batchSize)     // <.>
+  public static final String OBJECT_TYPE;
+  List<? extends CommandModel> findCommandsOnPrimaryFrom(final UUID interactionId, final Integer batchSize)     // <.>
   Integer default1FindCommandsOnPrimaryFrom()
 }
 ----
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/ui/CommandReplayOnPrimaryService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/ui/CommandReplayOnPrimaryService.adoc
index 04cd50d..be3c895 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/ui/CommandReplayOnPrimaryService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/primary/ui/CommandReplayOnPrimaryService.adoc
@@ -7,7 +7,8 @@
 .CommandReplayOnPrimaryService.java
 ----
 class CommandReplayOnPrimaryService {
-  List<CommandJdo> findCommands(final UUID interactionId, final Integer batchSize)     // <.>
+  public static final String OBJECT_TYPE;
+  List<? extends CommandModel> findCommands(final UUID interactionId, final Integer batchSize)     // <.>
   Integer default1FindCommandsOnPrimaryFrom()
   Clob downloadCommands(final UUID interactionId, final Integer batchSize, final String filenamePrefix)     // <.>
   Integer default1DownloadCommands()
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.adoc
index f1c77a1..b98fe6f 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.adoc
@@ -7,6 +7,7 @@
 .IsisModuleExtCommandReplaySecondary.java
 ----
 class IsisModuleExtCommandReplaySecondary {
+  public static final String NAMESPACE;
   JobDetailFactoryBean replicateAndReplayJobDetailFactory()
   SimpleTriggerFactoryBean replicateAndReplayTriggerFactory(JobDetail job)
   SpringBeanJobFactory springBeanJobFactory()
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analyser/CommandReplayAnalyser.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analyser/CommandReplayAnalyser.adoc
index f7cd663..4aa5fdf 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analyser/CommandReplayAnalyser.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analyser/CommandReplayAnalyser.adoc
@@ -7,13 +7,13 @@
 .CommandReplayAnalyser.java
 ----
 interface CommandReplayAnalyser {
-  String analyzeReplay(final CommandJdo commandJdo)     // <.>
+  String analyzeReplay(final CommandModel commandJdo)     // <.>
 }
 ----
 
-<.> xref:#analyzeReplay__CommandJdo[analyzeReplay(CommandJdo)]
+<.> xref:#analyzeReplay__CommandModel[analyzeReplay(CommandModel)]
 
 == Members
 
-[#analyzeReplay__CommandJdo]
-=== analyzeReplay(CommandJdo)
+[#analyzeReplay__CommandModel]
+=== analyzeReplay(CommandModel)
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analyser/CommandReplayAnalyserException.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analyser/CommandReplayAnalyserException.adoc
index 789f59e..8985470 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analyser/CommandReplayAnalyserException.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analyser/CommandReplayAnalyserException.adoc
@@ -8,7 +8,7 @@
 ----
 class CommandReplayAnalyserException {
   void init()
-  String analyzeReplay(final CommandJdo commandJdo)
+  String analyzeReplay(final CommandModel commandModel)
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analyser/CommandReplayAnalyserResult.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analyser/CommandReplayAnalyserResult.adoc
index 7542dca..212009f 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analyser/CommandReplayAnalyserResult.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analyser/CommandReplayAnalyserResult.adoc
@@ -8,7 +8,7 @@
 ----
 class CommandReplayAnalyserResult {
   void init()
-  String analyzeReplay(final CommandJdo commandJdo)
+  String analyzeReplay(final CommandModel commandModel)
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analysis/CommandReplayAnalysisService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analysis/CommandReplayAnalysisService.adoc
index 4c5bbc4..4a6316f 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analysis/CommandReplayAnalysisService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/analysis/CommandReplayAnalysisService.adoc
@@ -7,19 +7,19 @@
 .CommandReplayAnalysisService.java
 ----
 class CommandReplayAnalysisService {
-  void analyse(final CommandJdo commandJdo)     // <.>
+  void analyse(final CommandModel commandModel)     // <.>
 }
 ----
 
-<.> xref:#analyse__CommandJdo[analyse(CommandJdo)]
+<.> xref:#analyse__CommandModel[analyse(CommandModel)]
 +
 --
-if hit an issue with the command having been replayed, then mark this as in error. This will effectively block the running of any further commands until the adminstrator fixes the issue.
+if hit an issue with the command having been replayed, then mark this as in error. This will effectively block the running of any further commands until the administrator fixes the issue.
 --
 
 == Members
 
-[#analyse__CommandJdo]
-=== analyse(CommandJdo)
+[#analyse__CommandModel]
+=== analyse(CommandModel)
 
-if hit an issue with the command having been replayed, then mark this as in error. This will effectively block the running of any further commands until the adminstrator fixes the issue.
+if hit an issue with the command having been replayed, then mark this as in error. This will effectively block the running of any further commands until the administrator fixes the issue.
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/fetch/CommandFetcher.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/fetch/CommandFetcher.adoc
index 92a3d40..97c85bf 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/fetch/CommandFetcher.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/fetch/CommandFetcher.adoc
@@ -7,11 +7,11 @@
 .CommandFetcher.java
 ----
 class CommandFetcher {
-  List<CommandDto> fetchCommand(final CommandJdo previousHwmIfAny)     // <.>
+  List<CommandDto> fetchCommand(final CommandModel previousHwmIfAny)     // <.>
 }
 ----
 
-<.> xref:#fetchCommand__CommandJdo[fetchCommand(CommandJdo)]
+<.> xref:#fetchCommand__CommandModel[fetchCommand(CommandModel)]
 +
 --
 Replicates a single command.
@@ -19,7 +19,7 @@ Replicates a single command.
 
 == Members
 
-[#fetchCommand__CommandJdo]
-=== fetchCommand(CommandJdo)
+[#fetchCommand__CommandModel]
+=== fetchCommand(CommandModel)
 
 Replicates a single command.
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_replayQueue.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_replayQueue.adoc
index 6067ca1..822489a 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_replayQueue.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_replayQueue.adoc
@@ -7,7 +7,7 @@
 .CommandJdo_replayQueue.java
 ----
 class CommandJdo_replayQueue {
-  List<CommandJdo> coll()
+  List<? extends CommandModel> coll()
   boolean hideColl()
 }
 ----
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_exclude.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandModel_exclude.adoc
similarity index 89%
rename from antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_exclude.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandModel_exclude.adoc
index 4d1db68..9742e52 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandJdo_exclude.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/mixins/CommandModel_exclude.adoc
@@ -1,13 +1,13 @@
-= CommandJdo_exclude
+= CommandModel_exclude
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 == API
 
 [source,java]
-.CommandJdo_exclude.java
+.CommandModel_exclude.java
 ----
-class CommandJdo_exclude {
-  CommandJdo act()
+class CommandModel_exclude {
+  CommandModel act()
   boolean hideAct()
   String disableAct()
 }
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/ui/CommandReplayOnSecondaryService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/ui/CommandReplayOnSecondaryService.adoc
index 525c31f..5c31ca5 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/ui/CommandReplayOnSecondaryService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandreplay/secondary/ui/CommandReplayOnSecondaryService.adoc
@@ -7,7 +7,8 @@
 .CommandReplayOnSecondaryService.java
 ----
 class CommandReplayOnSecondaryService {
-  CommandJdo findMostRecentReplayed()
+  public static final String OBJECT_TYPE;
+  CommandModel findMostRecentReplayed()
   void uploadCommands(final Clob commandsDtoAsXml)
 }
 ----
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.adoc b/antora/components/refguide-index/modules/extensions/pages/index/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.adoc
index 71f6d5b..5fb6d1e 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.adoc
@@ -7,6 +7,7 @@
 .IsisModuleExtHsqldbMgr.java
 ----
 class IsisModuleExtHsqldbMgr {
+  public static final String NAMESPACE;
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/hsqldbmgr/dom/services/HsqlDbManagerMenu.adoc b/antora/components/refguide-index/modules/extensions/pages/index/hsqldbmgr/dom/services/HsqlDbManagerMenu.adoc
index 5102df0..8934901 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/hsqldbmgr/dom/services/HsqlDbManagerMenu.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/hsqldbmgr/dom/services/HsqlDbManagerMenu.adoc
@@ -7,6 +7,7 @@
 .HsqlDbManagerMenu.java
 ----
 class HsqlDbManagerMenu {
+  public final static String OBJECT_TYPE;
   HsqlDbManagerMenu(DataSourceIntrospectionService datasourceIntrospector)
   void hsqlDbManager()
   boolean hideHsqlDbManager()
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/IsisModuleExtSecmanApi.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/IsisModuleExtSecmanApi.adoc
index 7b743a8..4ac2e25 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/IsisModuleExtSecmanApi.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/IsisModuleExtSecmanApi.adoc
@@ -7,6 +7,7 @@
 .IsisModuleExtSecmanApi.java
 ----
 class IsisModuleExtSecmanApi {
+  public static final String NAMESPACE;
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/SecmanConfiguration.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/SecmanConfiguration.adoc
index d21019d..fd9c453 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/SecmanConfiguration.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/SecmanConfiguration.adoc
@@ -1,6 +1,12 @@
 = SecmanConfiguration
 :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 [...]
 
+Applications consuming secman must instantiate a _org.springframework.context.annotation.Bean_ of this type; secman then uses this bean to configure itself.
+
+The typical place to create this bean is in the top-level `AppManifest` _org.springframework.context.annotation.Configuration_ class.
+
+This class is implemented as a builder (courtesy of Lombok) but it provides reasonable defaults.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionRepository.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionRepository.adoc
deleted file mode 100644
index b61a3d9..0000000
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionRepository.adoc
+++ /dev/null
@@ -1,28 +0,0 @@
-= ApplicationPermissionRepository _(interface)_
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-
-== API
-
-[source,java]
-.ApplicationPermissionRepository.java
-----
-interface ApplicationPermissionRepository<P> {
-  Optional<P> findByUserAndPermissionValue(String username, ApplicationPermissionValue changingPermissionValue)
-  Optional<P> findByRoleAndRuleAndFeature(ApplicationRole holder, ApplicationPermissionRule rule, ApplicationFeatureSort type, String featureFqn)
-  Collection<P> allPermissions()
-  Collection<P> findOrphaned()
-  Collection<P> findByFeatureCached(ApplicationFeatureId featureId)
-  Collection<P> findByRoleAndRuleAndFeatureTypeCached(ApplicationRole holder, ApplicationPermissionRule rule, ApplicationFeatureSort type)
-  P newApplicationPermission()     // <.>
-  P newPermission(ApplicationRole role, ApplicationPermissionRule rule, ApplicationPermissionMode mode, String packageFqn, String className, String memberName)
-  P newPermission(ApplicationRole role, ApplicationPermissionRule rule, ApplicationPermissionMode mode, ApplicationFeatureSort featureSort, String featureFqn)
-  P newPermission(ApplicationRole role, ApplicationPermissionRule rule, ApplicationPermissionMode mode, ApplicationFeatureId featureId)
-}
-----
-
-<.> xref:#newApplicationPermission__[newApplicationPermission()]
-
-== Members
-
-[#newApplicationPermission__]
-=== newApplicationPermission()
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermission.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermission.adoc
similarity index 58%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermission.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermission.adoc
index 16d2c46..8a26afe 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermission.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermission.adoc
@@ -3,9 +3,9 @@
 
 Specifies how a particular _#getRole() application role_ may interact with a specific xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
 
-Each permission has a _#getRule() rule_ and a _#getMode() mode_ . The xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionRule.adoc[ApplicationPermissionRule] determines whether the permission _ApplicationPermissionRule#ALLOW grants_ access to the feature or _ApplicationPermissionRule#VETO veto_ es access to it. The xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionMode.adoc[ApplicationPermissionMode] indicates whether the role can _Applicati [...]
+Each permission has a _#getRule() rule_ and a _#getMode() mode_ . The xref:refguide:extensions:index/secman/api/permission/dom/ApplicationPermissionRule.adoc[ApplicationPermissionRule] determines whether the permission _ApplicationPermissionRule#ALLOW grants_ access to the feature or _ApplicationPermissionRule#VETO veto_ es access to it. The xref:refguide:extensions:index/secman/api/permission/dom/ApplicationPermissionMode.adoc[ApplicationPermissionMode] indicates whether the role can _A [...]
 
-For a given permission, there is an interaction between the xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionRule.adoc[ApplicationPermissionRule] and the xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionMode.adoc[ApplicationPermissionMode] :
+For a given permission, there is an interaction between the xref:refguide:extensions:index/secman/api/permission/dom/ApplicationPermissionRule.adoc[ApplicationPermissionRule] and the xref:refguide:extensions:index/secman/api/permission/dom/ApplicationPermissionMode.adoc[ApplicationPermissionMode] :
 
 * for an _ApplicationPermissionRule#ALLOW allow_ , a _ApplicationPermissionMode#CHANGING usability_ allow implies _ApplicationPermissionMode#VIEWING visibility_ allow.
 * conversely, for a _ApplicationPermissionRule#VETO veto_ , a _ApplicationPermissionMode#VIEWING visibility_ veto implies a _ApplicationPermissionMode#CHANGING usability_ veto.
@@ -16,8 +16,13 @@ For a given permission, there is an interaction between the xref:refguide:extens
 .ApplicationPermission.java
 ----
 interface ApplicationPermission {
+  String OBJECT_TYPE;
+  String NAMED_QUERY_FIND_BY_FEATURE;
+  String NAMED_QUERY_FIND_BY_ROLE;
+  String NAMED_QUERY_FIND_BY_ROLE_RULE_FEATURE;
+  String NAMED_QUERY_FIND_BY_ROLE_RULE_FEATURE_FQN;
+  String NAMED_QUERY_FIND_BY_USER;
   String title()     // <.>
-  ApplicationFeatureSort getFeatureSort()
   ApplicationRole getRole()
   void setRole(ApplicationRole applicationRole)
   ApplicationPermissionRule getRule()
@@ -25,8 +30,13 @@ interface ApplicationPermission {
   ApplicationPermissionMode getMode()
   void setMode(ApplicationPermissionMode changing)
   String getSort()
+  ApplicationFeatureSort getFeatureSort()     // <.>
+  void setFeatureSort(ApplicationFeatureSort featureSort)
   String getFeatureFqn()
   void setFeatureFqn(String featureFqn)
+  ApplicationFeature findFeature(ApplicationFeatureId featureId)
+  Optional<ApplicationMemberSort> getMemberSort()
+  Optional<ApplicationFeature> getFeature()
   Optional<ApplicationFeatureId> asFeatureId()
 }
 ----
@@ -36,6 +46,11 @@ interface ApplicationPermission {
 --
 having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
 --
+<.> xref:#getFeatureSort__[getFeatureSort()]
++
+--
+Which _ApplicationFeatureId#getSort() sort_ of feature this is.
+--
 
 == Members
 
@@ -43,3 +58,10 @@ having a title() method (rather than using @Title annotation) is necessary as a
 === title()
 
 having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
+
+[#getFeatureSort__]
+=== getFeatureSort()
+
+Which _ApplicationFeatureId#getSort() sort_ of feature this is.
+
+The combination of the feature type and the _#getFeatureFqn() fully qualified name_ is used to build the corresponding _#getFeature() feature_ (view model).
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionMode.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermissionMode.adoc
similarity index 78%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionMode.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermissionMode.adoc
index 1c4501f..da4a5e1 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionMode.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermissionMode.adoc
@@ -33,7 +33,7 @@ Whether can user/role can change (or is prevented from changing) the state of th
 
 Whether the user/role can view (or is prevented from viewing) the application feature (class member).
 
-The xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionRule.adoc[ApplicationPermissionRule] of the xref:refguide:extensions:index/secman/api/permission/ApplicationPermission.adoc[ApplicationPermission] indicates whether access is being granted or denied.
+The xref:refguide:extensions:index/secman/api/permission/dom/ApplicationPermissionRule.adoc[ApplicationPermissionRule] of the xref:refguide:extensions:index/secman/api/permission/dom/ApplicationPermission.adoc[ApplicationPermission] indicates whether access is being granted or denied.
 
 [#CHANGING]
 === CHANGING
@@ -42,6 +42,6 @@ Whether can user/role can change (or is prevented from changing) the state of th
 
 In other words, whether they can execute (if an action, modify/clear (if a property), addTo/removeFrom (if a collection).
 
-The xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionRule.adoc[ApplicationPermissionRule] of the xref:refguide:extensions:index/secman/api/permission/ApplicationPermission.adoc[ApplicationPermission] indicates whether access is being granted or denied.
+The xref:refguide:extensions:index/secman/api/permission/dom/ApplicationPermissionRule.adoc[ApplicationPermissionRule] of the xref:refguide:extensions:index/secman/api/permission/dom/ApplicationPermission.adoc[ApplicationPermission] indicates whether access is being granted or denied.
 
 Note that the Wicket viewer does not at the time of writing (Isis 1.6.0) support the notion of mutable collections. The RO viewer does, however.
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermissionRepository.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermissionRepository.adoc
new file mode 100644
index 0000000..4a55b79
--- /dev/null
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermissionRepository.adoc
@@ -0,0 +1,39 @@
+= ApplicationPermissionRepository _(interface)_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+== API
+
+[source,java]
+.ApplicationPermissionRepository.java
+----
+interface ApplicationPermissionRepository {
+  Optional<ApplicationPermission> findByUserAndPermissionValue(String username, ApplicationPermissionValue changingPermissionValue)
+  Optional<ApplicationPermission> findByRoleAndRuleAndFeature(ApplicationRole holder, ApplicationPermissionRule rule, ApplicationFeatureSort type, String featureFqn)
+  Collection<ApplicationPermission> allPermissions()
+  Collection<ApplicationPermission> findOrphaned()
+  Collection<ApplicationPermission> findByFeatureCached(ApplicationFeatureId featureId)
+  Collection<ApplicationPermission> findByRoleAndRuleAndFeatureTypeCached(ApplicationRole holder, ApplicationPermissionRule rule, ApplicationFeatureSort type)
+  ApplicationPermission newApplicationPermission()     // <.>
+  ApplicationPermission newPermission(ApplicationRole role, ApplicationPermissionRule rule, ApplicationPermissionMode mode, String packageFqn, String className, String memberName)
+  ApplicationPermission newPermission(ApplicationRole role, ApplicationPermissionRule rule, ApplicationPermissionMode mode, ApplicationFeatureSort featureSort, String featureFqn)
+  ApplicationPermission newPermission(ApplicationRole role, ApplicationPermissionRule rule, ApplicationPermissionMode mode, ApplicationFeatureId featureId)
+  ApplicationPermission newPermissionNoCheck(ApplicationRole role, ApplicationPermissionRule rule, ApplicationPermissionMode mode, ApplicationFeatureSort sort, String featureFqn)     // <.>
+}
+----
+
+<.> xref:#newApplicationPermission__[newApplicationPermission()]
+<.> xref:#newPermissionNoCheck__ApplicationRole_ApplicationPermissionRule_ApplicationPermissionMode_ApplicationFeatureSort_String[newPermissionNoCheck(ApplicationRole, ApplicationPermissionRule, ApplicationPermissionMode, ApplicationFeatureSort, String)]
++
+--
+Intended for use by fixture scripts.
+--
+
+== Members
+
+[#newApplicationPermission__]
+=== newApplicationPermission()
+
+[#newPermissionNoCheck__ApplicationRole_ApplicationPermissionRule_ApplicationPermissionMode_ApplicationFeatureSort_String]
+=== newPermissionNoCheck(ApplicationRole, ApplicationPermissionRule, ApplicationPermissionMode, ApplicationFeatureSort, String)
+
+Intended for use by fixture scripts.
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionRule.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermissionRule.adoc
similarity index 76%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionRule.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermissionRule.adoc
index 11d4ba4..1683b56 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionRule.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermissionRule.adoc
@@ -33,11 +33,11 @@ The permission prevents the ability to view/use the xref:refguide:applib:index/s
 
 The permission grants the ability to view/use the xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
 
-The xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionMode.adoc[ApplicationPermissionMode] determines whether the permission is to only view or also to use the xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
+The xref:refguide:extensions:index/secman/api/permission/dom/ApplicationPermissionMode.adoc[ApplicationPermissionMode] determines whether the permission is to only view or also to use the xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
 
 [#VETO]
 === VETO
 
 The permission prevents the ability to view/use the xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
 
-The xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionMode.adoc[ApplicationPermissionMode] determines whether the permission is to only view or also to use the xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
+The xref:refguide:extensions:index/secman/api/permission/dom/ApplicationPermissionMode.adoc[ApplicationPermissionMode] determines whether the permission is to only view or also to use the xref:refguide:applib:index/services/appfeat/ApplicationFeature.adoc[ApplicationFeature] .
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionValue.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermissionValue.adoc
similarity index 94%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionValue.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermissionValue.adoc
index 61bf572..38b41b0 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionValue.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermissionValue.adoc
@@ -1,7 +1,7 @@
 = ApplicationPermissionValue
 :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 [...]
 
-A serializable value object representing an (anonymized) xref:refguide:extensions:index/secman/api/permission/ApplicationPermission.adoc[ApplicationPermission] .
+A serializable value object representing an (anonymized) xref:refguide:extensions:index/secman/api/permission/dom/ApplicationPermission.adoc[ApplicationPermission] .
 
 Intended for value type arithmetic and also for caching. No user/role information is held because that information is not required to perform the arithmetic.
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionValueSet.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermissionValueSet.adoc
similarity index 92%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionValueSet.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermissionValueSet.adoc
index 81574d2..404ab63 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/ApplicationPermissionValueSet.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/dom/ApplicationPermissionValueSet.adoc
@@ -1,7 +1,7 @@
 = ApplicationPermissionValueSet
 :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 [...]
 
-A serializable value object representing a set of (anonymized) xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionValue.adoc[ApplicationPermissionValue] s.
+A serializable value object representing a set of (anonymized) xref:refguide:extensions:index/secman/api/permission/dom/ApplicationPermissionValue.adoc[ApplicationPermissionValue] s.
 
 Intended for value type arithmetic and also for caching.
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/PermissionsEvaluationService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/spi/PermissionsEvaluationService.adoc
similarity index 94%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/PermissionsEvaluationService.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/spi/PermissionsEvaluationService.adoc
index 11ea03f..93a4d51 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/PermissionsEvaluationService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/spi/PermissionsEvaluationService.adoc
@@ -3,7 +3,7 @@
 
 Strategy for determining which permission should apply when there are multiple that apply for a particular target feature Id, and which may conflict with each other.
 
-All implementations of this interface must be _java.io.Serializable_ , because an instance is serialized into xref:refguide:extensions:index/secman/api/permission/ApplicationPermissionValueSet.adoc[ApplicationPermissionValueSet] .
+All implementations of this interface must be _java.io.Serializable_ , because an instance is serialized into xref:refguide:extensions:index/secman/api/permission/dom/ApplicationPermissionValueSet.adoc[ApplicationPermissionValueSet] .
 
 == API
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/PermissionsEvaluationServiceAbstract.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/spi/PermissionsEvaluationServiceAbstract.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/PermissionsEvaluationServiceAbstract.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/spi/PermissionsEvaluationServiceAbstract.adoc
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/PermissionsEvaluationServiceAllowBeatsVeto.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/spi/PermissionsEvaluationServiceAllowBeatsVeto.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/PermissionsEvaluationServiceAllowBeatsVeto.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/spi/PermissionsEvaluationServiceAllowBeatsVeto.adoc
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/PermissionsEvaluationServiceVetoBeatsAllow.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/spi/PermissionsEvaluationServiceVetoBeatsAllow.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/PermissionsEvaluationServiceVetoBeatsAllow.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/permission/spi/PermissionsEvaluationServiceVetoBeatsAllow.adoc
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/role/ApplicationRole.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/role/dom/ApplicationRole.adoc
similarity index 88%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/role/ApplicationRole.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/role/dom/ApplicationRole.adoc
index 1acf576..d46b3aa 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/role/ApplicationRole.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/role/dom/ApplicationRole.adoc
@@ -7,14 +7,16 @@
 .ApplicationRole.java
 ----
 interface ApplicationRole {
-  public static final int MAX_LENGTH_NAME;
-  public static final int TYPICAL_LENGTH_NAME;
-  public static final int TYPICAL_LENGTH_DESCRIPTION;
+  String OBJECT_TYPE;
+  String NAMED_QUERY_FIND_BY_NAME;
+  String NAMED_QUERY_FIND_BY_NAME_CONTAINING;
   String title()     // <.>
   String getName()
   void setName(String name)
   String getDescription()
   void setDescription(String description)
+  Set<ApplicationUser> getUsers()
+  List<ApplicationPermission> getPermissions()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/role/ApplicationRoleRepository.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/role/dom/ApplicationRoleRepository.adoc
similarity index 70%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/role/ApplicationRoleRepository.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/role/dom/ApplicationRoleRepository.adoc
index 25c2404..1d50d35 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/role/ApplicationRoleRepository.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/role/dom/ApplicationRoleRepository.adoc
@@ -6,16 +6,16 @@
 [source,java]
 .ApplicationRoleRepository.java
 ----
-interface ApplicationRoleRepository<R> {
-  R newApplicationRole()     // <.>
-  Collection<R> allRoles()
-  R newRole(String name, String description)
-  Collection<R> findNameContaining(String search)
-  Collection<R> getRoles(ApplicationUser user)
-  Collection<R> findMatching(String search)     // <.>
-  Optional<R> findByName(String roleName)
-  Optional<R> findByNameCached(String roleName)
-  R upsert(final String name, final String roleDescription)
+interface ApplicationRoleRepository {
+  ApplicationRole newApplicationRole()     // <.>
+  Collection<ApplicationRole> allRoles()
+  ApplicationRole newRole(String name, String description)
+  Collection<ApplicationRole> findNameContaining(String search)
+  Collection<ApplicationRole> getRoles(ApplicationUser user)
+  Collection<ApplicationRole> findMatching(String search)     // <.>
+  Optional<ApplicationRole> findByName(String roleName)
+  Optional<ApplicationRole> findByNameCached(String roleName)
+  ApplicationRole upsert(final String name, final String roleDescription)
   void addRoleToUser(ApplicationRole role, ApplicationUser user)
   void removeRoleFromUser(ApplicationRole role, ApplicationUser user)
   boolean isAdminRole(ApplicationRole role)
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/ApplicationTenancy.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/dom/ApplicationTenancy.adoc
similarity index 79%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/ApplicationTenancy.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/dom/ApplicationTenancy.adoc
index 7a30485..f24c34f 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/ApplicationTenancy.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/dom/ApplicationTenancy.adoc
@@ -7,14 +7,18 @@
 .ApplicationTenancy.java
 ----
 interface ApplicationTenancy {
-  public static final int MAX_LENGTH_PATH;
-  public static final int MAX_LENGTH_NAME;
-  public static final int TYPICAL_LENGTH_NAME;
+  String OBJECT_TYPE;
+  String NAMED_QUERY_FIND_BY_NAME;
+  String NAMED_QUERY_FIND_BY_PATH;
+  String NAMED_QUERY_FIND_BY_NAME_OR_PATH_MATCHING;
   String title()
-  String getPath()
   String getName()
   void setName(String name)
+  String getPath()
+  void setPath(String path)
   ApplicationTenancy getParent()
+  void setParent(ApplicationTenancy parent)
+  Collection<ApplicationTenancy> getChildren()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/ApplicationTenancyRepository.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/dom/ApplicationTenancyRepository.adoc
similarity index 73%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/ApplicationTenancyRepository.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/dom/ApplicationTenancyRepository.adoc
index fe168de..1e13ab1 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/ApplicationTenancyRepository.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/dom/ApplicationTenancyRepository.adoc
@@ -6,13 +6,14 @@
 [source,java]
 .ApplicationTenancyRepository.java
 ----
-interface ApplicationTenancyRepository<T> {
-  T newApplicationTenancy()     // <.>
-  Collection<T> allTenancies()
-  Collection<T> getChildren(ApplicationTenancy tenancy)
-  Collection<T> findByNameOrPathMatchingCached(String partialNameOrPath)
-  Collection<T> findMatching(String search)     // <.>
-  T newTenancy(String name, String path, ApplicationTenancy parent)
+interface ApplicationTenancyRepository {
+  ApplicationTenancy newApplicationTenancy()     // <.>
+  Collection<ApplicationTenancy> allTenancies()
+  Collection<ApplicationTenancy> getChildren(ApplicationTenancy tenancy)
+  Collection<ApplicationTenancy> findByNameOrPathMatchingCached(String partialNameOrPath)
+  ApplicationTenancy findByPath(String path)
+  Collection<ApplicationTenancy> findMatching(String search)     // <.>
+  ApplicationTenancy newTenancy(String name, String path, ApplicationTenancy parent)
   void setTenancyOnUser(ApplicationTenancy tenancy, ApplicationUser user)
   void clearTenancyOnUser(ApplicationUser user)
   void setParentOnTenancy(ApplicationTenancy tenancy, ApplicationTenancy parent)
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/HasAtPath.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/dom/HasAtPath.adoc
similarity index 73%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/HasAtPath.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/dom/HasAtPath.adoc
index 6970e70..a367921 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/HasAtPath.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/dom/HasAtPath.adoc
@@ -3,11 +3,11 @@
 
 Role interface for domain objects to implement, indicating that these are characteristics of the entity that can be used to determine its visibility/editability.object's tenancyuser's tenancyaccessnullnulleditablenullnon-nulleditable//editable//itvisible//it/carvisible//it/iglvisible//frvisible/nullnot visible/it/editable/it/iteditable/it/it/carvisible/it/it/iglvisible/it/frnot visible/itnullnot visible/it/car/editable/it/car/iteditable/it/car/it/careditable/it/car/it/iglnot visible/it/c [...]
 
-Previously the `atPath` would have corresponded to the unique path of some particular xref:refguide:extensions:index/secman/api/tenancy/ApplicationTenancy.adoc[ApplicationTenancy] instance. However, this has now been generalized; the atPath is simply a string whose interpretation is application-specific (in particular by the xref:refguide:extensions:index/secman/api/tenancy/ApplicationTenancyEvaluator.adoc[ApplicationTenancyEvaluator] SPI).
+Previously the `atPath` would have corresponded to the unique path of some particular xref:refguide:extensions:index/secman/api/tenancy/dom/ApplicationTenancy.adoc[ApplicationTenancy] instance. However, this has now been generalized; the atPath is simply a string whose interpretation is application-specific (in particular by the xref:refguide:extensions:index/secman/api/tenancy/spi/ApplicationTenancyEvaluator.adoc[ApplicationTenancyEvaluator] SPI).
 
-For applications that still wish to follow the original more specific design (that the `atPath` corresponds to a single xref:refguide:extensions:index/secman/api/tenancy/ApplicationTenancy.adoc[ApplicationTenancy] ), then the path can be interpreted according to the following table:
+For applications that still wish to follow the original more specific design (that the `atPath` corresponds to a single xref:refguide:extensions:index/secman/api/tenancy/dom/ApplicationTenancy.adoc[ApplicationTenancy] ), then the path can be interpreted according to the following table:
 
-any object that is not tenanted (that is, its class does not implement xref:refguide:extensions:index/secman/api/tenancy/HasAtPath.adoc[HasAtPath] is accessible by any user (usual permission rules apply).
+any object that is not tenanted (that is, its class does not implement xref:refguide:extensions:index/secman/api/tenancy/dom/HasAtPath.adoc[HasAtPath] is accessible by any user (usual permission rules apply).
 
 == API
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/ApplicationTenancyEvaluator.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/spi/ApplicationTenancyEvaluator.adoc
similarity index 82%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/ApplicationTenancyEvaluator.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/spi/ApplicationTenancyEvaluator.adoc
index bff6d62..82bd84c 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/ApplicationTenancyEvaluator.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/tenancy/spi/ApplicationTenancyEvaluator.adoc
@@ -23,12 +23,12 @@ Whether this evaluator can determine the tenancy of the specified domain entity
 <.> xref:#hides__Object_ApplicationUser[hides(Object, ApplicationUser)]
 +
 --
-Whether this domain object should not be visible to the specified xref:refguide:extensions:index/secman/api/user/ApplicationUser.adoc[ApplicationUser] .
+Whether this domain object should not be visible to the specified xref:refguide:extensions:index/secman/api/user/dom/ApplicationUser.adoc[ApplicationUser] .
 --
 <.> xref:#disables__Object_ApplicationUser[disables(Object, ApplicationUser)]
 +
 --
-Whether the object members of this domain object should be disabled/read-only for the specified xref:refguide:extensions:index/secman/api/user/ApplicationUser.adoc[ApplicationUser] .
+Whether the object members of this domain object should be disabled/read-only for the specified xref:refguide:extensions:index/secman/api/user/dom/ApplicationUser.adoc[ApplicationUser] .
 --
 
 == Members
@@ -38,12 +38,12 @@ Whether the object members of this domain object should be disabled/read-only fo
 
 Whether this evaluator can determine the tenancy of the specified domain entity (such as `ToDoItem` ) being interacted with (the "what").
 
-This method is also called to determine if the evaluator is also able to determine the tenancy of the security module's own xref:refguide:extensions:index/secman/api/user/ApplicationUser.adoc[ApplicationUser] , ie the "who" is doing the interacting. If the evaluator does not handle the class, then the fallback behaviour is to invoke _ApplicationUser#getAtPath()_ } on the xref:refguide:extensions:index/secman/api/user/ApplicationUser.adoc[ApplicationUser] and use the path from that.
+This method is also called to determine if the evaluator is also able to determine the tenancy of the security module's own xref:refguide:extensions:index/secman/api/user/dom/ApplicationUser.adoc[ApplicationUser] , ie the "who" is doing the interacting. If the evaluator does not handle the class, then the fallback behaviour is to invoke _ApplicationUser#getAtPath()_ } on the xref:refguide:extensions:index/secman/api/user/dom/ApplicationUser.adoc[ApplicationUser] and use the path from that.
 
 [#hides__Object_ApplicationUser]
 === hides(Object, ApplicationUser)
 
-Whether this domain object should not be visible to the specified xref:refguide:extensions:index/secman/api/user/ApplicationUser.adoc[ApplicationUser] .
+Whether this domain object should not be visible to the specified xref:refguide:extensions:index/secman/api/user/dom/ApplicationUser.adoc[ApplicationUser] .
 
 The domain object will be one that is handled by this evaluator, in other words that _#handles(Class)_ was previously called and the evaluator returned `true` .
 
@@ -52,7 +52,7 @@ A non-null return value means that the object should be hidden.
 [#disables__Object_ApplicationUser]
 === disables(Object, ApplicationUser)
 
-Whether the object members of this domain object should be disabled/read-only for the specified xref:refguide:extensions:index/secman/api/user/ApplicationUser.adoc[ApplicationUser] .
+Whether the object members of this domain object should be disabled/read-only for the specified xref:refguide:extensions:index/secman/api/user/dom/ApplicationUser.adoc[ApplicationUser] .
 
 The domain object will be one that is handled by this evaluator, in other words that _#handles(Class)_ was previously called and the evaluator returned `true` .
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/AccountType.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/dom/AccountType.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/AccountType.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/dom/AccountType.adoc
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/ApplicationUser.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/dom/ApplicationUser.adoc
similarity index 59%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/ApplicationUser.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/dom/ApplicationUser.adoc
index e01a52d..6db9a6a 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/ApplicationUser.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/dom/ApplicationUser.adoc
@@ -7,39 +7,43 @@
 .ApplicationUser.java
 ----
 interface ApplicationUser {
-  public static final int MAX_LENGTH_USERNAME;
-  public static final int MAX_LENGTH_FAMILY_NAME;
-  public static final int MAX_LENGTH_GIVEN_NAME;
-  public static final int MAX_LENGTH_KNOWN_AS;
-  public static final int MAX_LENGTH_EMAIL_ADDRESS;
-  public static final int MAX_LENGTH_PHONE_NUMBER;
+  String OBJECT_TYPE;
+  String NAMED_QUERY_FIND_BY_USERNAME;
+  String NAMED_QUERY_FIND_BY_EMAIL_ADDRESS;
+  String NAMED_QUERY_FIND;
+  String NAMED_QUERY_FIND_BY_ATPATH;
   String title()     // <.>
   String iconName()
   String getName()
-  String getEncryptedPassword()     // <.>
-  AccountType getAccountType()     // <.>
-  void setAccountType(AccountType accountType)
-  ApplicationPermissionValueSet getPermissionSet()
-  Set<? extends ApplicationRole> getRoles()
-  ApplicationUserStatus getStatus()
-  void setStatus(ApplicationUserStatus disabled)
-  void setAtPath(String atPath)
-  String getEmailAddress()
-  void setEmailAddress(String emailAddress)
-  String getFaxNumber()
-  void setFaxNumber(String faxNumber)
+  String getUsername()
+  void setUsername(String username)
   String getFamilyName()
   void setFamilyName(String familyName)
   String getGivenName()
   void setGivenName(String givenName)
   String getKnownAs()
   void setKnownAs(String knownAs)
+  String getEmailAddress()
+  void setEmailAddress(String emailAddress)
   String getPhoneNumber()
   void setPhoneNumber(String phoneNumber)
-  void setUsername(String username)
+  String getFaxNumber()
+  void setFaxNumber(String faxNumber)
+  String getAtPath()
+  void setAtPath(String atPath)
+  org.apache.isis.extensions.secman.api.user.dom.AccountType getAccountType()
+  void setAccountType(org.apache.isis.extensions.secman.api.user.dom.AccountType accountType)
+  ApplicationUserStatus getStatus()
+  void setStatus(ApplicationUserStatus disabled)
+  String getEncryptedPassword()
   void setEncryptedPassword(String encryptedPassword)
-  boolean isForSelfOrRunAsAdministrator()
   boolean isHasPassword()
+  boolean hideHasPassword()
+  Set<ApplicationRole> getRoles()
+  ApplicationPermissionValueSet getPermissionSet()
+  boolean isForSelfOrRunAsAdministrator()
+  String getAdminRoleName()
+  UserMemento currentUser()
   boolean isLocalAccount()
 }
 ----
@@ -49,16 +53,6 @@ interface ApplicationUser {
 --
 having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
 --
-<.> xref:#getEncryptedPassword__[getEncryptedPassword()]
-+
---
-Only used for _#getAccountType() local_ users, stores the password in encrypted form.
---
-<.> xref:#getAccountType__[getAccountType()]
-+
---
-Determines how to authenticate this user.
---
 
 == Members
 
@@ -66,19 +60,3 @@ Determines how to authenticate this user.
 === title()
 
 having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
-
-[#getEncryptedPassword__]
-=== getEncryptedPassword()
-
-Only used for _#getAccountType() local_ users, stores the password in encrypted form.
-
-The password will have been encrypted by the configured _org.apache.isis.extensions.secman.api.encryption.PasswordEncryptionService_ .
-
-[#getAccountType__]
-=== getAccountType()
-
-Determines how to authenticate this user.
-
-_AccountType#LOCAL local_ users are authenticated directly against the _#getEncryptedPassword() password_ .
-
-_AccountType#DELEGATED delegated_ users are authenticated by some other authentication mechanism. For example, Secman's Shiro realm allows a delegate realm to be configured, and will call that delegate realm for delegated users rather than authenticating locally.
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/ApplicationUserRepository.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/dom/ApplicationUserRepository.adoc
similarity index 57%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/ApplicationUserRepository.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/dom/ApplicationUserRepository.adoc
index c46022f..3cb8618 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/ApplicationUserRepository.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/dom/ApplicationUserRepository.adoc
@@ -6,25 +6,26 @@
 [source,java]
 .ApplicationUserRepository.java
 ----
-interface ApplicationUserRepository<U> {
-  U newApplicationUser()     // <.>
-  Optional<U> findByUsername(String username)
-  U findOrCreateUserByUsername(String username)
-  Collection<U> allUsers()
-  Collection<U> find(String search)
-  Collection<U> findByAtPath(String atPath)
-  Collection<U> findByRole(ApplicationRole role)
-  Collection<U> findByTenancy(ApplicationTenancy tenancy)
-  Collection<U> findMatching(String search)     // <.>
+interface ApplicationUserRepository {
+  ApplicationUser newApplicationUser()     // <.>
+  Optional<ApplicationUser> findByUsername(String username)
+  ApplicationUser findOrCreateUserByUsername(String username)
+  Collection<ApplicationUser> allUsers()
+  Collection<ApplicationUser> find(String search)
+  Collection<ApplicationUser> findByAtPath(String atPath)
+  Collection<ApplicationUser> findByRole(ApplicationRole role)
+  Collection<ApplicationUser> findByTenancy(ApplicationTenancy tenancy)
+  Optional<ApplicationUser> findByEmailAddress(String emailAddress)
+  Collection<ApplicationUser> findMatching(String search)     // <.>
   void enable(ApplicationUser user)
   void disable(ApplicationUser user)
   boolean isAdminUser(ApplicationUser user)
   boolean isPasswordFeatureEnabled(ApplicationUser holder)
   boolean updatePassword(ApplicationUser user, String password)
-  U newUser(String username, AccountType accountType, Consumer<U> beforePersist)
-  U upsertLocal(String username, Password password, ApplicationUserStatus status)
-  U newLocalUser(String username, Password password, ApplicationUserStatus status)
-  U newDelegateUser(String username, ApplicationUserStatus status)
+  ApplicationUser newUser(String username, AccountType accountType, Consumer<ApplicationUser> beforePersist)
+  ApplicationUser upsertLocal(String username, Password password, ApplicationUserStatus status)
+  ApplicationUser newLocalUser(String username, Password password, ApplicationUserStatus status)
+  ApplicationUser newDelegateUser(String username, ApplicationUserStatus status)
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/ApplicationUserStatus.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/dom/ApplicationUserStatus.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/ApplicationUserStatus.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/dom/ApplicationUserStatus.adoc
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/api/events/UserCreatedEvent.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/events/UserCreatedEvent.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/api/events/UserCreatedEvent.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/events/UserCreatedEvent.adoc
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/model/dom/user/MeService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/menu/MeService.adoc
similarity index 95%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/model/dom/user/MeService.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/menu/MeService.adoc
index a4a88ba..562719d 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/model/dom/user/MeService.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/api/user/menu/MeService.adoc
@@ -7,6 +7,7 @@
 .MeService.java
 ----
 class MeService {
+  public static final String OBJECT_TYPE;
   String iconName()
   ApplicationUser me()
 }
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/SeedSecurityModuleService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/SeedSecurityModuleService.adoc
deleted file mode 100644
index 0d75c57..0000000
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/SeedSecurityModuleService.adoc
+++ /dev/null
@@ -1,14 +0,0 @@
-= SeedSecurityModuleService
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-
-== API
-
-[source,java]
-.SeedSecurityModuleService.java
-----
-class SeedSecurityModuleService {
-  SeedSecurityModuleService(final FixtureScripts fixtureScripts)
-  void onMetamodelEvent(final MetamodelEvent event)
-}
-----
-
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/GlobalTenancy.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/GlobalTenancy.adoc
deleted file mode 100644
index 6d08230..0000000
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/GlobalTenancy.adoc
+++ /dev/null
@@ -1,14 +0,0 @@
-= GlobalTenancy
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-
-== API
-
-[source,java]
-.GlobalTenancy.java
-----
-class GlobalTenancy {
-  public static final String TENANCY_NAME;
-  public static final String TENANCY_PATH;
-}
-----
-
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanFixtureRoleAndPermissions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanFixtureRoleAndPermissions.adoc
deleted file mode 100644
index ab34651..0000000
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanFixtureRoleAndPermissions.adoc
+++ /dev/null
@@ -1,15 +0,0 @@
-= IsisExtSecmanFixtureRoleAndPermissions
-: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 [...]
-
-Role to run in the prototype fixture scripts for the example webapp for the security module.
-
-== API
-
-[source,java]
-.IsisExtSecmanFixtureRoleAndPermissions.java
-----
-class IsisExtSecmanFixtureRoleAndPermissions {
-  IsisExtSecmanFixtureRoleAndPermissions(SecmanConfiguration configBean)
-}
-----
-
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/SeedUsersAndRolesFixtureScript.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/SeedUsersAndRolesFixtureScript.adoc
deleted file mode 100644
index 233a0eb..0000000
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/SeedUsersAndRolesFixtureScript.adoc
+++ /dev/null
@@ -1,14 +0,0 @@
-= SeedUsersAndRolesFixtureScript
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-
-This fixture script will be run automatically on start-up by virtue of the fact that the xref:refguide:extensions:index/secman/jpa/seed/SeedSecurityModuleService.adoc[SeedSecurityModuleService] is a _org.apache.isis.applib.annotation.DomainService_ and calls the setup during its _org.apache.isis.extensions.secman.jpa.seed.SeedSecurityModuleService#onMetamodelEvent(org.apache.isis.core.metamodel.events.MetamodelEvent) init_ ( _javax.annotation.PostConstruct_ ) method.
-
-== API
-
-[source,java]
-.SeedUsersAndRolesFixtureScript.java
-----
-class SeedUsersAndRolesFixtureScript {
-}
-----
-
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanAdminRoleAndPermissions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanAdminRoleAndPermissions.adoc
deleted file mode 100644
index 62286f9..0000000
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanAdminRoleAndPermissions.adoc
+++ /dev/null
@@ -1,13 +0,0 @@
-= IsisExtSecmanAdminRoleAndPermissions
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-
-== API
-
-[source,java]
-.IsisExtSecmanAdminRoleAndPermissions.java
-----
-class IsisExtSecmanAdminRoleAndPermissions {
-  IsisExtSecmanAdminRoleAndPermissions(SecmanConfiguration configBean)
-}
-----
-
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanAdminUser.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanAdminUser.adoc
deleted file mode 100644
index e02a2bd..0000000
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanAdminUser.adoc
+++ /dev/null
@@ -1,13 +0,0 @@
-= IsisExtSecmanAdminUser
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-
-== API
-
-[source,java]
-.IsisExtSecmanAdminUser.java
-----
-class IsisExtSecmanAdminUser {
-  IsisExtSecmanAdminUser(SecmanConfiguration configBean)
-}
-----
-
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanFixtureRoleAndPermissions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanFixtureRoleAndPermissions.adoc
deleted file mode 100644
index ab34651..0000000
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanFixtureRoleAndPermissions.adoc
+++ /dev/null
@@ -1,15 +0,0 @@
-= IsisExtSecmanFixtureRoleAndPermissions
-: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 [...]
-
-Role to run in the prototype fixture scripts for the example webapp for the security module.
-
-== API
-
-[source,java]
-.IsisExtSecmanFixtureRoleAndPermissions.java
-----
-class IsisExtSecmanFixtureRoleAndPermissions {
-  IsisExtSecmanFixtureRoleAndPermissions(SecmanConfiguration configBean)
-}
-----
-
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.adoc
deleted file mode 100644
index 8d93229..0000000
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.adoc
+++ /dev/null
@@ -1,15 +0,0 @@
-= IsisExtSecmanRegularUserRoleAndPermissions
-: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 [...]
-
-Role for regular users of the security module, providing the ability to lookup their user account using the _org.apache.isis.extensions.secman.model.dom.user.MeService_ , and for viewing and maintaining their user details.
-
-== API
-
-[source,java]
-.IsisExtSecmanRegularUserRoleAndPermissions.java
-----
-class IsisExtSecmanRegularUserRoleAndPermissions {
-  IsisExtSecmanRegularUserRoleAndPermissions(SecmanConfiguration configBean)
-}
-----
-
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/SeedSecurityModuleService.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/SeedSecurityModuleService.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/SeedSecurityModuleService.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/SeedSecurityModuleService.adoc
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/SeedUsersAndRolesFixtureScript.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/SeedUsersAndRolesFixtureScript.adoc
similarity index 70%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/SeedUsersAndRolesFixtureScript.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/SeedUsersAndRolesFixtureScript.adoc
index f588242..11e7f3a 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/SeedUsersAndRolesFixtureScript.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/SeedUsersAndRolesFixtureScript.adoc
@@ -1,7 +1,7 @@
 = SeedUsersAndRolesFixtureScript
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-This fixture script will be run automatically on start-up by virtue of the fact that the xref:refguide:extensions:index/secman/jdo/seed/SeedSecurityModuleService.adoc[SeedSecurityModuleService] is a _org.apache.isis.applib.annotation.DomainService_ and calls the setup during its _org.apache.isis.extensions.secman.jdo.seed.SeedSecurityModuleService#onMetamodelEvent(org.apache.isis.core.metamodel.events.MetamodelEvent) init_ ( _javax.annotation.PostConstruct_ ) method.
+This fixture script will be run automatically on start-up by virtue of the fact that the xref:refguide:extensions:index/secman/model/seed/SeedSecurityModuleService.adoc[SeedSecurityModuleService] is a _org.apache.isis.applib.annotation.DomainService_ and calls the setup during its _SeedSecurityModuleService#onMetamodelEvent(org.apache.isis.core.metamodel.events.MetamodelEvent) init_ ( _javax.annotation.PostConstruct_ ) method.
 
 == API
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/other/IsisConfigurationRoleAndPermissions.adoc
similarity index 79%
copy from antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.adoc
copy to antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/other/IsisConfigurationRoleAndPermissions.adoc
index 2fcb7ae..75b1f90 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/other/IsisConfigurationRoleAndPermissions.adoc
@@ -1,14 +1,14 @@
-= IsisExtFixturesFixtureResultsRoleAndPermissions
+= IsisConfigurationRoleAndPermissions
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 == API
 
 [source,java]
-.IsisExtFixturesFixtureResultsRoleAndPermissions.java
+.IsisConfigurationRoleAndPermissions.java
 ----
-class IsisExtFixturesFixtureResultsRoleAndPermissions {
+class IsisConfigurationRoleAndPermissions {
   public static final String ROLE_NAME;
-  IsisExtFixturesFixtureResultsRoleAndPermissions()
+  IsisConfigurationRoleAndPermissions()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/other/IsisExtH2ConsoleRoleAndPermissions.adoc
similarity index 79%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/other/IsisExtH2ConsoleRoleAndPermissions.adoc
index 2fcb7ae..146b8ae 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/other/IsisExtH2ConsoleRoleAndPermissions.adoc
@@ -1,14 +1,16 @@
-= IsisExtFixturesFixtureResultsRoleAndPermissions
+= IsisExtH2ConsoleRoleAndPermissions
 :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 [...]
 
+Access to the h2 console UI.
+
 == API
 
 [source,java]
-.IsisExtFixturesFixtureResultsRoleAndPermissions.java
+.IsisExtH2ConsoleRoleAndPermissions.java
 ----
-class IsisExtFixturesFixtureResultsRoleAndPermissions {
+class IsisExtH2ConsoleRoleAndPermissions {
   public static final String ROLE_NAME;
-  IsisExtFixturesFixtureResultsRoleAndPermissions()
+  IsisExtH2ConsoleRoleAndPermissions()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/other/IsisPersistenceJdoMetaModelRoleAndPermissions.adoc
similarity index 76%
copy from antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.adoc
copy to antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/other/IsisPersistenceJdoMetaModelRoleAndPermissions.adoc
index 2fcb7ae..b506346 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/other/IsisPersistenceJdoMetaModelRoleAndPermissions.adoc
@@ -1,14 +1,16 @@
-= IsisExtFixturesFixtureResultsRoleAndPermissions
+= IsisPersistenceJdoMetaModelRoleAndPermissions
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Provides access to download the JDO metamodel.
+
 == API
 
 [source,java]
-.IsisExtFixturesFixtureResultsRoleAndPermissions.java
+.IsisPersistenceJdoMetaModelRoleAndPermissions.java
 ----
-class IsisExtFixturesFixtureResultsRoleAndPermissions {
+class IsisPersistenceJdoMetaModelRoleAndPermissions {
   public static final String ROLE_NAME;
-  IsisExtFixturesFixtureResultsRoleAndPermissions()
+  IsisPersistenceJdoMetaModelRoleAndPermissions()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/other/IsisSudoImpersonateRoleAndPermissions.adoc
similarity index 79%
copy from antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.adoc
copy to antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/other/IsisSudoImpersonateRoleAndPermissions.adoc
index 2fcb7ae..c23e5d8 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/other/IsisSudoImpersonateRoleAndPermissions.adoc
@@ -1,14 +1,14 @@
-= IsisExtFixturesFixtureResultsRoleAndPermissions
+= IsisSudoImpersonateRoleAndPermissions
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 == API
 
 [source,java]
-.IsisExtFixturesFixtureResultsRoleAndPermissions.java
+.IsisSudoImpersonateRoleAndPermissions.java
 ----
-class IsisExtFixturesFixtureResultsRoleAndPermissions {
+class IsisSudoImpersonateRoleAndPermissions {
   public static final String ROLE_NAME;
-  IsisExtFixturesFixtureResultsRoleAndPermissions()
+  IsisSudoImpersonateRoleAndPermissions()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/other/IsisViewerRestfulObjectsSwaggerRoleAndPermissions.adoc
similarity index 76%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/other/IsisViewerRestfulObjectsSwaggerRoleAndPermissions.adoc
index 2fcb7ae..78d4688 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtFixturesFixtureResultsRoleAndPermissions.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/other/IsisViewerRestfulObjectsSwaggerRoleAndPermissions.adoc
@@ -1,14 +1,16 @@
-= IsisExtFixturesFixtureResultsRoleAndPermissions
+= IsisViewerRestfulObjectsSwaggerRoleAndPermissions
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Provides access to open up the Swagger UI.
+
 == API
 
 [source,java]
-.IsisExtFixturesFixtureResultsRoleAndPermissions.java
+.IsisViewerRestfulObjectsSwaggerRoleAndPermissions.java
 ----
-class IsisExtFixturesFixtureResultsRoleAndPermissions {
+class IsisViewerRestfulObjectsSwaggerRoleAndPermissions {
   public static final String ROLE_NAME;
-  IsisExtFixturesFixtureResultsRoleAndPermissions()
+  IsisViewerRestfulObjectsSwaggerRoleAndPermissions()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/GlobalTenancy.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/secman/GlobalTenancy.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/seed/scripts/GlobalTenancy.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/secman/GlobalTenancy.adoc
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanAdminRoleAndPermissions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/secman/IsisExtSecmanAdminRoleAndPermissions.adoc
similarity index 79%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanAdminRoleAndPermissions.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/secman/IsisExtSecmanAdminRoleAndPermissions.adoc
index 62286f9..7591208 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanAdminRoleAndPermissions.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/secman/IsisExtSecmanAdminRoleAndPermissions.adoc
@@ -1,6 +1,8 @@
 = IsisExtSecmanAdminRoleAndPermissions
 :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 [...]
 
+Sets up the _SecmanConfiguration#getAdminRoleName() secman admin role_ with its initial set of permissions (the union of _SecmanConfiguration#getAdminStickyNamespacePermissions()_ and _SecmanConfiguration#getAdminAdditionalNamespacePermissions()_ ).
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanAdminUser.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/secman/IsisExtSecmanAdminUser.adoc
similarity index 96%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanAdminUser.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/secman/IsisExtSecmanAdminUser.adoc
index e02a2bd..cb0f8dd 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanAdminUser.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/secman/IsisExtSecmanAdminUser.adoc
@@ -1,6 +1,8 @@
 = IsisExtSecmanAdminUser
 :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 [...]
 
+Sets up a user, as defined in
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/secman/IsisExtSecmanRegularUserRoleAndPermissions.adoc
similarity index 53%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/secman/IsisExtSecmanRegularUserRoleAndPermissions.adoc
index 8d93229..2c04385 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/secman/jdo/seed/scripts/IsisExtSecmanRegularUserRoleAndPermissions.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/seed/scripts/secman/IsisExtSecmanRegularUserRoleAndPermissions.adoc
@@ -1,7 +1,13 @@
 = IsisExtSecmanRegularUserRoleAndPermissions
 :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 [...]
 
-Role for regular users of the security module, providing the ability to lookup their user account using the _org.apache.isis.extensions.secman.model.dom.user.MeService_ , and for viewing and maintaining their user details.
+Role for regular users of the security module.
+
+These permissions are intended to be sufficient for most regular users to have access to the 'safe' features provided by the core framework (in particular, everything under the _IsisModuleApplib#NAMESPACE isis.applib_ namespace.
+
+That said, it does _not_ include the ability to impersonate other users (for this, grant the _org.apache.isis.extensions.secman.model.seed.scripts.other.IsisSudoImpersonateRoleAndPermissions_ role), and also does _not_ include the ability to access the configuration properties (for this, grant the _org.apache.isis.extensions.secman.model.seed.scripts.other.IsisSudoImpersonateRoleAndPermissions_ role).
+
+The permissions also provide the ability to lookup their user account using the xref:refguide:extensions:index/secman/api/user/menu/MeService.adoc[MeService] , and for viewing and maintaining their user details.
 
 == API
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/userreg/SecurityModuleAppUserRegistrationServiceAbstract.adoc b/antora/components/refguide-index/modules/extensions/pages/index/secman/model/userreg/SecurityModuleAppUserRegistrationServiceAbstract.adoc
similarity index 100%
rename from antora/components/refguide-index/modules/extensions/pages/index/secman/jpa/userreg/SecurityModuleAppUserRegistrationServiceAbstract.adoc
rename to antora/components/refguide-index/modules/extensions/pages/index/secman/model/userreg/SecurityModuleAppUserRegistrationServiceAbstract.adoc
diff --git a/antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc b/antora/components/refguide-index/modules/persistence/pages/index/jpa/integration/typeconverters/JavaAwtBufferedImageByteArrayConverter.adoc
similarity index 75%
copy from antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc
copy to antora/components/refguide-index/modules/persistence/pages/index/jpa/integration/typeconverters/JavaAwtBufferedImageByteArrayConverter.adoc
index 8659ec1..87f8776 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc
+++ b/antora/components/refguide-index/modules/persistence/pages/index/jpa/integration/typeconverters/JavaAwtBufferedImageByteArrayConverter.adoc
@@ -1,12 +1,14 @@
-= IsisModuleApplib
+= JavaAwtBufferedImageByteArrayConverter
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 == API
 
 [source,java]
-.IsisModuleApplib.java
+.JavaAwtBufferedImageByteArrayConverter.java
 ----
-class IsisModuleApplib {
+class JavaAwtBufferedImageByteArrayConverter {
+  byte[] convertToDatabaseColumn(BufferedImage memberValue)
+  BufferedImage convertToEntityAttribute(byte[] datastoreValue)
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/IsisModuleSubdomainsExcelApplib.adoc b/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/IsisModuleSubdomainsExcelApplib.adoc
index b695a6c..0fa1978 100644
--- a/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/IsisModuleSubdomainsExcelApplib.adoc
+++ b/antora/components/refguide-index/modules/subdomains/pages/index/excel/applib/IsisModuleSubdomainsExcelApplib.adoc
@@ -7,6 +7,7 @@
 .IsisModuleSubdomainsExcelApplib.java
 ----
 class IsisModuleSubdomainsExcelApplib {
+  public static final String NAMESPACE;
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture.adoc b/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture.adoc
index 28fadb0..f4835f2 100644
--- a/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture.adoc
+++ b/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture.adoc
@@ -9,6 +9,7 @@ This class should be executed using _org.apache.isis.testing.fixtures.applib.fix
 .ExcelFixture.java
 ----
 class ExcelFixture {
+  public final static String OBJECT_TYPE;
   ExcelFixture(final URL excelResource, final Class<?>... classes)
   ExcelFixture(final URL excelResource, final List<Class<?>> classes)
   ExcelFixture(final Blob upload, final Class<?>... classes)
diff --git a/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture2.adoc b/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture2.adoc
index 0444548..b350fa6 100644
--- a/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture2.adoc
+++ b/antora/components/refguide-index/modules/subdomains/pages/index/excel/testing/ExcelFixture2.adoc
@@ -9,6 +9,7 @@ This class should be executed using _org.apache.isis.testing.fixtures.applib.fix
 .ExcelFixture2.java
 ----
 class ExcelFixture2 {
+  public final static String OBJECT_TYPE;
   boolean equals(final Object o)
   int hashCode()
 }
diff --git a/antora/components/refguide-index/modules/testing/pages/index/h2console/ui/IsisModuleTestingH2ConsoleUi.adoc b/antora/components/refguide-index/modules/testing/pages/index/h2console/ui/IsisModuleTestingH2ConsoleUi.adoc
index f67f98f..df0a617 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/h2console/ui/IsisModuleTestingH2ConsoleUi.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/h2console/ui/IsisModuleTestingH2ConsoleUi.adoc
@@ -7,6 +7,7 @@
 .IsisModuleTestingH2ConsoleUi.java
 ----
 class IsisModuleTestingH2ConsoleUi {
+  public static final String NAMESPACE;
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/testing/pages/index/h2console/ui/services/H2ManagerMenu.adoc b/antora/components/refguide-index/modules/testing/pages/index/h2console/ui/services/H2ManagerMenu.adoc
index 26e6909..ad3b434 100644
--- a/antora/components/refguide-index/modules/testing/pages/index/h2console/ui/services/H2ManagerMenu.adoc
+++ b/antora/components/refguide-index/modules/testing/pages/index/h2console/ui/services/H2ManagerMenu.adoc
@@ -7,6 +7,7 @@
 .H2ManagerMenu.java
 ----
 class H2ManagerMenu {
+  public static final String OBJECT_TYPE;
   H2ManagerMenu(final WebModuleH2Console webModule)
   LocalResourcePath openH2Console()
   boolean hideOpenH2Console()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc b/antora/components/refguide-index/modules/valuetypes/pages/index/asciidoc/persistence/jpa/IsisModuleValAsciidocPersistenceJpa.adoc
similarity index 86%
copy from antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc
copy to antora/components/refguide-index/modules/valuetypes/pages/index/asciidoc/persistence/jpa/IsisModuleValAsciidocPersistenceJpa.adoc
index 8659ec1..28f6eeb 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc
+++ b/antora/components/refguide-index/modules/valuetypes/pages/index/asciidoc/persistence/jpa/IsisModuleValAsciidocPersistenceJpa.adoc
@@ -1,12 +1,12 @@
-= IsisModuleApplib
+= IsisModuleValAsciidocPersistenceJpa
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 == API
 
 [source,java]
-.IsisModuleApplib.java
+.IsisModuleValAsciidocPersistenceJpa.java
 ----
-class IsisModuleApplib {
+class IsisModuleValAsciidocPersistenceJpa {
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/layout/grid/bootstrap3/Size.adoc b/antora/components/refguide-index/modules/valuetypes/pages/index/asciidoc/persistence/jpa/converters/IsisAsciiDocConverter.adoc
similarity index 79%
copy from antora/components/refguide-index/modules/applib/pages/index/layout/grid/bootstrap3/Size.adoc
copy to antora/components/refguide-index/modules/valuetypes/pages/index/asciidoc/persistence/jpa/converters/IsisAsciiDocConverter.adoc
index c57efaa..9e84c66 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/layout/grid/bootstrap3/Size.adoc
+++ b/antora/components/refguide-index/modules/valuetypes/pages/index/asciidoc/persistence/jpa/converters/IsisAsciiDocConverter.adoc
@@ -1,19 +1,14 @@
-= Size _(enum)_
+= IsisAsciiDocConverter
 :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 [...]
 
-As pergrid options, also used inresponsive utilityclasses.
-
 == API
 
 [source,java]
-.Size.java
+.IsisAsciiDocConverter.java
 ----
-enum Size {
-  XS
-  SM
-  MD
-  LG
-  String toCssClassFragment()
+class IsisAsciiDocConverter {
+  String convertToDatabaseColumn(final AsciiDoc memberValue)
+  AsciiDoc convertToEntityAttribute(final String datastoreValue)
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc b/antora/components/refguide-index/modules/valuetypes/pages/index/markdown/persistence/jpa/IsisModuleValMarkdownPersistenceJpa.adoc
similarity index 86%
copy from antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc
copy to antora/components/refguide-index/modules/valuetypes/pages/index/markdown/persistence/jpa/IsisModuleValMarkdownPersistenceJpa.adoc
index 8659ec1..fa7d5d6 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/IsisModuleApplib.adoc
+++ b/antora/components/refguide-index/modules/valuetypes/pages/index/markdown/persistence/jpa/IsisModuleValMarkdownPersistenceJpa.adoc
@@ -1,12 +1,12 @@
-= IsisModuleApplib
+= IsisModuleValMarkdownPersistenceJpa
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 == API
 
 [source,java]
-.IsisModuleApplib.java
+.IsisModuleValMarkdownPersistenceJpa.java
 ----
-class IsisModuleApplib {
+class IsisModuleValMarkdownPersistenceJpa {
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/layout/grid/bootstrap3/Size.adoc b/antora/components/refguide-index/modules/valuetypes/pages/index/markdown/persistence/jpa/converters/IsisMarkdownConverter.adoc
similarity index 79%
copy from antora/components/refguide-index/modules/applib/pages/index/layout/grid/bootstrap3/Size.adoc
copy to antora/components/refguide-index/modules/valuetypes/pages/index/markdown/persistence/jpa/converters/IsisMarkdownConverter.adoc
index c57efaa..ceb47e9 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/layout/grid/bootstrap3/Size.adoc
+++ b/antora/components/refguide-index/modules/valuetypes/pages/index/markdown/persistence/jpa/converters/IsisMarkdownConverter.adoc
@@ -1,19 +1,14 @@
-= Size _(enum)_
+= IsisMarkdownConverter
 :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 [...]
 
-As pergrid options, also used inresponsive utilityclasses.
-
 == API
 
 [source,java]
-.Size.java
+.IsisMarkdownConverter.java
 ----
-enum Size {
-  XS
-  SM
-  MD
-  LG
-  String toCssClassFragment()
+class IsisMarkdownConverter {
+  String convertToDatabaseColumn(final Markdown memberValue)
+  Markdown convertToEntityAttribute(final String datastoreValue)
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/viewer/pages/index/common/applib/mixins/Object_impersonateWithRoles.adoc b/antora/components/refguide-index/modules/viewer/pages/index/common/applib/mixins/Object_impersonateWithRoles.adoc
index 53add59..c26dc3a 100644
--- a/antora/components/refguide-index/modules/viewer/pages/index/common/applib/mixins/Object_impersonateWithRoles.adoc
+++ b/antora/components/refguide-index/modules/viewer/pages/index/common/applib/mixins/Object_impersonateWithRoles.adoc
@@ -9,12 +9,12 @@ Same as _ImpersonateMenu#impersonateWithRoles(String, boolean, List)_ , but impl
 .Object_impersonateWithRoles.java
 ----
 class Object_impersonateWithRoles {
-  Object act(final String userName, final List<String> roleNames)
+  Object act(final String userName, final boolean useUsersRoles, final List<String> roleNames)
   boolean hideAct()
   String disableAct()
   List<String> choices0Act()
-  List<String> choices1Act()
-  List<String> default1Act(String userName)
+  List<String> choices2Act(final String userName, final boolean useUsersRoles)
+  List<String> default2Act(final String userName, final boolean useUsersRoles)
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/rendering/IsisModuleRestfulObjectsRendering.adoc b/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/rendering/IsisModuleRestfulObjectsRendering.adoc
index 084ddd6..f20fd2a 100644
--- a/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/rendering/IsisModuleRestfulObjectsRendering.adoc
+++ b/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/rendering/IsisModuleRestfulObjectsRendering.adoc
@@ -7,6 +7,7 @@
 .IsisModuleRestfulObjectsRendering.java
 ----
 class IsisModuleRestfulObjectsRendering {
+  public static final String NAMESPACE;
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/rendering/service/swagger/SwaggerServiceMenu.adoc b/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/rendering/service/swagger/SwaggerServiceMenu.adoc
index 1d936a7..ba10e31 100644
--- a/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/rendering/service/swagger/SwaggerServiceMenu.adoc
+++ b/antora/components/refguide-index/modules/viewer/pages/index/restfulobjects/rendering/service/swagger/SwaggerServiceMenu.adoc
@@ -7,6 +7,7 @@
 .SwaggerServiceMenu.java
 ----
 class SwaggerServiceMenu {
+  public static final String OBJECT_TYPE;
   SwaggerServiceMenu(final SwaggerService swaggerService, final ServiceRegistry serviceRegistry, final RestEasyConfiguration restEasyConfiguration)
   LocalResourcePath openSwaggerUi()
   String disableOpenSwaggerUi()
diff --git a/core/adoc/modules/_overview/pages/about.adoc b/core/adoc/modules/_overview/pages/about.adoc
index 7e559ac..7eeba17 100644
--- a/core/adoc/modules/_overview/pages/about.adoc
+++ b/core/adoc/modules/_overview/pages/about.adoc
@@ -33,7 +33,7 @@ package "App\n[Software System]" {
 .Projects/Modules (App)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Starter Parent
 [source,yaml]
@@ -126,7 +126,7 @@ package "Mavendeps\n[Software System]" {
 .Projects/Modules (Mavendeps)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Maven Deps
 [source,yaml]
@@ -408,7 +408,7 @@ package "Testing\n[Software System]" {
 .Projects/Modules (Testing)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Testing
 [source,yaml]
@@ -749,25 +749,39 @@ skinparam rectangle<<7>> {
   FontColor #fffffe
   BorderColor #2E6295
 }
+skinparam rectangle<<8>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
+skinparam rectangle<<9>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
 package "Examples\n[Software System]" {
   rectangle "==Demo - Domain\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
   rectangle "==Demo - JavaFX\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
   rectangle "==Demo - Parent\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
   rectangle "==Demo - Vaadin\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
   rectangle "==Demo - Web\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
-  rectangle "==Demo - Wicket\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
+  rectangle "==Demo - Wicket (Common)\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
+  rectangle "==Demo - Wicket/JDO\n<size:10>[Container: packaging: jar]</size>" <<8>> as 8
+  rectangle "==Demo - Wicket/JPA\n<size:10>[Container: packaging: jar]</size>" <<9>> as 9
 }
 2 .[#707070].> 3 : ""
 2 .[#707070].> 4 : ""
 2 .[#707070].> 5 : ""
 2 .[#707070].> 6 : ""
 2 .[#707070].> 7 : ""
+2 .[#707070].> 8 : ""
+2 .[#707070].> 9 : ""
 @enduml
 ----
 .Projects/Modules (Examples)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Demo - Parent
 [source,yaml]
@@ -784,13 +798,15 @@ org.apache.isis.extensions:isis-extensions-exceldownload-ui:jar:<managed> +
 org.apache.isis.extensions:isis-extensions-secman-encryption-jbcrypt:jar:<managed> +
 org.apache.isis.extensions:isis-extensions-secman-model:jar:<managed> +
 org.apache.isis.extensions:isis-extensions-secman-persistence-jdo:jar:<managed> +
+org.apache.isis.extensions:isis-extensions-secman-persistence-jpa:jar:<managed> +
 org.apache.isis.extensions:isis-extensions-secman-shiro-realm:jar:<managed> +
 org.apache.isis.mavendeps:isis-mavendeps-jdk11:pom:<managed> +
-org.apache.isis.mavendeps:isis-mavendeps-jdo:pom:<managed> +
 org.apache.isis.valuetypes:isis-valuetypes-asciidoc-metamodel:jar:<managed> +
 org.apache.isis.valuetypes:isis-valuetypes-asciidoc-persistence-jdo-dn5:jar:<managed> +
+org.apache.isis.valuetypes:isis-valuetypes-asciidoc-persistence-jpa:jar:<managed> +
 org.apache.isis.valuetypes:isis-valuetypes-markdown-metamodel:jar:<managed> +
 org.apache.isis.valuetypes:isis-valuetypes-markdown-persistence-jdo-dn5:jar:<managed> +
+org.apache.isis.valuetypes:isis-valuetypes-markdown-persistence-jpa:jar:<managed> +
 org.apache.isis.valuetypes:isis-valuetypes-sse-applib:jar:<managed> +
 org.projectlombok:lombok:jar:<managed> +
 ****
@@ -803,182 +819,17 @@ Artifact: demo-domain
 Type: jar
 Directory: /examples/demo/domain
 ----
-|.Components
-****
-demoapp.dom.AppConfiguration +
-demoapp.dom._infra.DefaultTitleProvider +
-demoapp.dom._infra.LibraryPreloadingService +
-demoapp.dom._infra.fixtures.DemoFixtureScriptSpecificationProvider +
-demoapp.dom._infra.resources.AsciiDocConverterService +
-demoapp.dom._infra.resources.AsciiDocReaderService +
-demoapp.dom._infra.resources.MarkdownReaderService +
-demoapp.dom._infra.resources.MarkupReaderService +
-demoapp.dom._infra.resources.MarkupVariableResolverService +
-demoapp.dom._infra.resources.ResourceReaderService +
-demoapp.dom._infra.samples.NameSamples +
-demoapp.dom._infra.urlencoding.UrlEncodingServiceNaiveInMemory +
-demoapp.dom.domain._changes.EntityChangesSubscriberToCaptureChangesInMemory +
-demoapp.dom.domain._commands.ExposePersistedCommands$TableColumnOrderDefault +
-demoapp.dom.domain._interactions.ExecutionListenerToCaptureInteractionsInMemory +
-demoapp.dom.domain.actions.Action.commandPublishing.ActionCommandPublishingJdoEntities +
-demoapp.dom.domain.actions.Action.commandPublishing.ActionCommandPublishingJdoSeedService +
-demoapp.dom.domain.actions.Action.executionPublishing.ActionExecutionPublishingJdoEntities +
-demoapp.dom.domain.actions.Action.executionPublishing.ActionExecutionPublishingJdoSeedService +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.DomainObjectEntityChangePublishingDisabledJdoEntities +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.disabled.DomainObjectEntityChangePublishingDisabledJdoSeedService +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectAuditingEnabledJdoEntities +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.annotated.enabled.DomainObjectAuditingEnabledJdoSeedService +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdoEntities +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnot.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotatedJdoSeedService +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdoEntities +
-demoapp.dom.domain.objects.DomainObject.entityChangePublishing.metaAnnotOverridden.enabled.DomainObjectEntityChangePublishingEnabledMetaAnnotOverriddenJdoSeedService +
-demoapp.dom.domain.objects.DomainObject.nature.viewmodels.jaxbrefentity.ChildJdoEntities +
-demoapp.dom.domain.objects.DomainObject.nature.viewmodels.jaxbrefentity.seed.ChildJdoSeedService +
-demoapp.dom.domain.objects.other.embedded.NumberConstantJdoRepository +
-demoapp.dom.domain.properties.Property.commandPublishing.PropertyCommandPublishingJdoEntities +
-demoapp.dom.domain.properties.Property.commandPublishing.PropertyCommandPublishingJdoSeedService +
-demoapp.dom.domain.properties.Property.executionPublishing.PropertyExecutionPublishingJdoEntities +
-demoapp.dom.domain.properties.Property.executionPublishing.PropertyExecutionPublishingJdoSeedService +
-demoapp.dom.domain.properties.Property.projecting.jdo.PropertyProjectingChildJdoEntities +
-demoapp.dom.domain.properties.Property.projecting.jdo.PropertyProjectingChildJdoSeedService +
-demoapp.dom.domain.properties.PropertyLayout.navigable.FileTreeNodeService +
-demoapp.dom.domain.properties.PropertyLayout.repainting.PdfJsViewerAdvisorFallback +
-demoapp.dom.featured.customui.geocoding.GeoapifyClient +
-demoapp.dom.services.core.errorreportingservice.ErrorReportingServiceDemoImplementation +
-demoapp.dom.services.core.eventbusservice.EventLogEntryJdoRepository +
-demoapp.dom.services.core.eventbusservice.EventSubscriberDemoImplementation +
-demoapp.dom.services.core.wrapperFactory.WrapperFactoryJdoEntities +
-demoapp.dom.services.core.wrapperFactory.WrapperFactoryJdoSeedService +
-demoapp.dom.services.extensions.secman.apptenancy.ApplicationTenancyEvaluatorForDemo +
-demoapp.dom.services.extensions.secman.apptenancy.entities.TenantedJdoEntities +
-demoapp.dom.services.extensions.secman.apptenancy.entities.seed.TenantedJdoSeedService +
-demoapp.dom.types.isis.blobs.jdo.IsisBlobJdoEntities +
-demoapp.dom.types.isis.blobs.jdo.IsisBlobJdoSeedService +
-demoapp.dom.types.isis.blobs.samples.IsisBlobsSamples +
-demoapp.dom.types.isis.clobs.jdo.IsisClobJdoEntities +
-demoapp.dom.types.isis.clobs.jdo.IsisClobJdoSeedService +
-demoapp.dom.types.isis.clobs.samples.IsisClobsSamples +
-demoapp.dom.types.isis.localresourcepaths.jdo.IsisLocalResourcePathJdoEntities +
-demoapp.dom.types.isis.localresourcepaths.jdo.IsisLocalResourcePathJdoSeedService +
-demoapp.dom.types.isis.localresourcepaths.samples.IsisLocalResourcePathsSamples +
-demoapp.dom.types.isis.markups.jdo.IsisMarkupJdoEntities +
-demoapp.dom.types.isis.markups.jdo.IsisMarkupJdoSeedService +
-demoapp.dom.types.isis.markups.samples.IsisMarkupSamples +
-demoapp.dom.types.isis.passwords.jdo.IsisPasswordJdoEntities +
-demoapp.dom.types.isis.passwords.jdo.IsisPasswordJdoSeedService +
-demoapp.dom.types.isis.passwords.samples.IsisPasswordsSamples +
-demoapp.dom.types.isisext.asciidocs.jdo.IsisAsciiDocJdoEntities +
-demoapp.dom.types.isisext.asciidocs.jdo.IsisAsciiDocJdoSeedService +
-demoapp.dom.types.isisext.asciidocs.samples.IsisAsciiDocSamples +
-demoapp.dom.types.isisext.markdowns.jdo.IsisMarkdownJdoEntities +
-demoapp.dom.types.isisext.markdowns.jdo.IsisMarkdownJdoSeedService +
-demoapp.dom.types.isisext.markdowns.samples.IsisMarkdownSamples +
-demoapp.dom.types.javaawt.images.jdo.JavaAwtImageJdoEntities +
-demoapp.dom.types.javaawt.images.jdo.JavaAwtImageJdoSeedService +
-demoapp.dom.types.javaawt.images.samples.JavaAwtImageService +
-demoapp.dom.types.javaawt.images.samples.JavaAwtImagesSamples +
-demoapp.dom.types.javalang.booleans.jdo.WrapperBooleanJdoEntities +
-demoapp.dom.types.javalang.booleans.jdo.WrapperBooleanJdoSeedService +
-demoapp.dom.types.javalang.booleans.samples.WrapperBooleanSamples +
-demoapp.dom.types.javalang.bytes.jdo.WrapperByteJdoEntities +
-demoapp.dom.types.javalang.bytes.jdo.WrapperByteJdoSeedService +
-demoapp.dom.types.javalang.bytes.samples.WrapperByteSamples +
-demoapp.dom.types.javalang.characters.jdo.WrapperCharacterJdoEntities +
-demoapp.dom.types.javalang.characters.jdo.WrapperCharacterJdoSeedService +
-demoapp.dom.types.javalang.characters.samples.WrapperCharacterSamples +
-demoapp.dom.types.javalang.doubles.jdo.WrapperDoubleJdoEntities +
-demoapp.dom.types.javalang.doubles.jdo.WrapperDoubleJdoSeedService +
-demoapp.dom.types.javalang.doubles.samples.WrapperDoubleSamples +
-demoapp.dom.types.javalang.floats.jdo.WrapperFloatJdoEntities +
-demoapp.dom.types.javalang.floats.jdo.WrapperFloatJdoSeedService +
-demoapp.dom.types.javalang.floats.samples.WrapperFloatSamples +
-demoapp.dom.types.javalang.integers.jdo.WrapperIntegerJdoEntities +
-demoapp.dom.types.javalang.integers.jdo.WrapperIntegerJdoSeedService +
-demoapp.dom.types.javalang.integers.samples.WrapperIntegerSamples +
-demoapp.dom.types.javalang.longs.jdo.WrapperLongJdoEntities +
-demoapp.dom.types.javalang.longs.jdo.WrapperLongJdoSeedService +
-demoapp.dom.types.javalang.longs.samples.WrapperLongSamples +
-demoapp.dom.types.javalang.shorts.jdo.WrapperShortJdoEntities +
-demoapp.dom.types.javalang.shorts.jdo.WrapperShortJdoSeedService +
-demoapp.dom.types.javalang.shorts.samples.WrapperShortSamples +
-demoapp.dom.types.javalang.strings.jdo.JavaLangStringJdoEntities +
-demoapp.dom.types.javalang.strings.jdo.JavaLangStringJdoSeedService +
-demoapp.dom.types.javalang.strings.samples.JavaLangStringSamples +
-demoapp.dom.types.javamath.bigdecimals.jdo.JavaMathBigDecimalJdoEntities +
-demoapp.dom.types.javamath.bigdecimals.jdo.JavaMathBigDecimalJdoSeedService +
-demoapp.dom.types.javamath.bigdecimals.samples.JavaMathBigDecimalSamples +
-demoapp.dom.types.javamath.bigintegers.jdo.JavaMathBigIntegerJdoEntities +
-demoapp.dom.types.javamath.bigintegers.jdo.JavaMathBigIntegerJdoSeedService +
-demoapp.dom.types.javamath.bigintegers.samples.JavaMathBigIntegerSamples +
-demoapp.dom.types.javanet.urls.jdo.JavaNetUrlJdoEntities +
-demoapp.dom.types.javanet.urls.jdo.JavaNetUrlJdoSeedService +
-demoapp.dom.types.javanet.urls.samples.JavaNetUrlSamples +
-demoapp.dom.types.javasql.javasqldate.jdo.JavaSqlDateJdoEntities +
-demoapp.dom.types.javasql.javasqldate.jdo.JavaSqlDateJdoSeedService +
-demoapp.dom.types.javasql.javasqldate.samples.JavaSqlDateSamples +
-demoapp.dom.types.javasql.javasqltimestamp.jdo.JavaSqlTimestampJdoEntities +
-demoapp.dom.types.javasql.javasqltimestamp.jdo.JavaSqlTimestampJdoSeedService +
-demoapp.dom.types.javasql.javasqltimestamp.samples.JavaSqlTimestampSamples +
-demoapp.dom.types.javatime.javatimelocaldate.jdo.JavaTimeLocalDateJdoEntities +
-demoapp.dom.types.javatime.javatimelocaldate.jdo.JavaTimeLocalDateJdoSeedService +
-demoapp.dom.types.javatime.javatimelocaldate.samples.JavaTimeLocalDateSamples +
-demoapp.dom.types.javatime.javatimelocaldatetime.jdo.JavaTimeLocalDateTimeJdoEntities +
-demoapp.dom.types.javatime.javatimelocaldatetime.jdo.JavaTimeLocalDateTimeJdoSeedService +
-demoapp.dom.types.javatime.javatimelocaldatetime.samples.JavaTimeLocalDateTimeSamples +
-demoapp.dom.types.javatime.javatimeoffsetdatetime.jdo.JavaTimeOffsetDateTimeJdoEntities +
-demoapp.dom.types.javatime.javatimeoffsetdatetime.jdo.JavaTimeOffsetDateTimeJdoSeedService +
-demoapp.dom.types.javatime.javatimeoffsetdatetime.samples.JavaTimeOffsetDateTimeSamples +
-demoapp.dom.types.javatime.javatimeoffsettime.jdo.JavaTimeOffsetTimeJdoEntities +
-demoapp.dom.types.javatime.javatimeoffsettime.jdo.JavaTimeOffsetTimeJdoSeedService +
-demoapp.dom.types.javatime.javatimeoffsettime.samples.JavaTimeOffsetTimeSamples +
-demoapp.dom.types.javatime.javatimezoneddatetime.jdo.JavaTimeZonedDateTimeJdoEntities +
-demoapp.dom.types.javatime.javatimezoneddatetime.jdo.JavaTimeZonedDateTimeJdoSeedService +
-demoapp.dom.types.javatime.javatimezoneddatetime.samples.JavaTimeZonedDateTimeSamples +
-demoapp.dom.types.javautil.javautildate.jdo.JavaUtilDateJdoEntities +
-demoapp.dom.types.javautil.javautildate.jdo.JavaUtilDateJdoSeedService +
-demoapp.dom.types.javautil.javautildate.samples.JavaUtilDateSamples +
-demoapp.dom.types.javautil.uuids.jdo.JavaUtilUuidJdoEntities +
-demoapp.dom.types.javautil.uuids.jdo.JavaUtilUuidJdoSeedService +
-demoapp.dom.types.javautil.uuids.samples.JavaUtilUuidSamples +
-demoapp.dom.types.jodatime.jodadatetime.jdo.JodaDateTimeJdoEntities +
-demoapp.dom.types.jodatime.jodadatetime.jdo.JodaDateTimeJdoSeedService +
-demoapp.dom.types.jodatime.jodadatetime.samples.JodaDateTimeSamples +
-demoapp.dom.types.jodatime.jodalocaldate.jdo.JodaLocalDateJdoEntities +
-demoapp.dom.types.jodatime.jodalocaldate.jdo.JodaLocalDateJdoSeedService +
-demoapp.dom.types.jodatime.jodalocaldate.samples.JodaLocalDateSamples +
-demoapp.dom.types.jodatime.jodalocaldatetime.jdo.JodaLocalDateTimeJdoEntities +
-demoapp.dom.types.jodatime.jodalocaldatetime.jdo.JodaLocalDateTimeJdoSeedService +
-demoapp.dom.types.jodatime.jodalocaldatetime.samples.JodaLocalDateTimeSamples +
-demoapp.dom.types.jodatime.jodalocaltime.jdo.JodaLocalTimeJdoEntities +
-demoapp.dom.types.jodatime.jodalocaltime.jdo.JodaLocalTimeJdoSeedService +
-demoapp.dom.types.jodatime.jodalocaltime.samples.JodaLocalTimeSamples +
-demoapp.dom.types.primitive.booleans.jdo.PrimitiveBooleanJdoEntities +
-demoapp.dom.types.primitive.booleans.jdo.PrimitiveBooleanJdoSeedService +
-demoapp.dom.types.primitive.bytes.jdo.PrimitiveByteJdoEntities +
-demoapp.dom.types.primitive.bytes.jdo.PrimitiveByteJdoSeedService +
-demoapp.dom.types.primitive.chars.jdo.PrimitiveCharJdoEntities +
-demoapp.dom.types.primitive.chars.jdo.PrimitiveCharJdoSeedService +
-demoapp.dom.types.primitive.doubles.jdo.PrimitiveDoubleJdoEntities +
-demoapp.dom.types.primitive.doubles.jdo.PrimitiveDoubleJdoSeedService +
-demoapp.dom.types.primitive.floats.jdo.PrimitiveFloatJdoEntities +
-demoapp.dom.types.primitive.floats.jdo.PrimitiveFloatJdoSeedService +
-demoapp.dom.types.primitive.ints.jdo.PrimitiveIntJdoEntities +
-demoapp.dom.types.primitive.ints.jdo.PrimitiveIntJdoSeedService +
-demoapp.dom.types.primitive.longs.jdo.PrimitiveLongJdoEntities +
-demoapp.dom.types.primitive.longs.jdo.PrimitiveLongJdoSeedService +
-demoapp.dom.types.primitive.shorts.jdo.PrimitiveShortJdoEntities +
-demoapp.dom.types.primitive.shorts.jdo.PrimitiveShortJdoSeedService +
-****
-
-.Dependencies
+|.Dependencies
 ****
 com.h2database:h2:jar:<managed> +
 org.apache.isis.extensions:isis-extensions-command-log-jdo:jar:<managed> +
+org.apache.isis.extensions:isis-extensions-command-log-jpa:jar:<managed> +
 org.apache.isis.extensions:isis-extensions-exceldownload-ui:jar:<managed> +
 org.apache.isis.extensions:isis-extensions-pdfjs-applib:jar:<managed> +
 org.apache.isis.extensions:isis-extensions-secman-encryption-jbcrypt:jar:<managed> +
 org.apache.isis.extensions:isis-extensions-secman-model:jar:<managed> +
 org.apache.isis.extensions:isis-extensions-secman-persistence-jdo:jar:<managed> +
+org.apache.isis.extensions:isis-extensions-secman-persistence-jpa:jar:<managed> +
 org.apache.isis.extensions:isis-extensions-secman-shiro-realm:jar:<managed> +
 org.apache.isis.testing:isis-testing-h2console-ui:jar:<managed> +
 org.apache.isis.testing:isis-testing-unittestsupport-applib:jar:<managed> +
@@ -1054,13 +905,13 @@ org.springframework.boot:spring-boot-starter-actuator:jar:<managed> +
 org.springframework.boot:spring-boot-starter-log4j2:jar:<managed> +
 ****
 
-|Demo - Wicket
+|Demo - Wicket (Common)
 [source,yaml]
 ----
 Group: org.apache.isis.examples.apps
-Artifact: demo-wicket
+Artifact: demo-wicket-common
 Type: jar
-Directory: /examples/demo/wicket
+Directory: /examples/demo/wicket/common
 ----
 |.Dependencies
 ****
@@ -1070,8 +921,36 @@ org.apache.isis.mavendeps:isis-mavendeps-webapp:pom:<managed> +
 org.apache.isis.valuetypes:isis-valuetypes-asciidoc-ui-wkt:jar:<managed> +
 org.apache.isis.valuetypes:isis-valuetypes-markdown-ui-wkt:jar:<managed> +
 org.apache.isis.valuetypes:isis-valuetypes-sse-ui-wkt:jar:<managed> +
-org.apache.isis.viewer:isis-viewer-wicket-ui:jar:2.0.0-SNAPSHOT +
-org.apache.isis.viewer:isis-viewer-wicket-viewer:jar:2.0.0-SNAPSHOT +
+org.apache.isis.viewer:isis-viewer-wicket-ui:jar:<managed> +
+org.apache.isis.viewer:isis-viewer-wicket-viewer:jar:<managed> +
+****
+
+|Demo - Wicket/JDO
+[source,yaml]
+----
+Group: org.apache.isis.examples.apps
+Artifact: demo-wicket-jdo
+Type: jar
+Directory: /examples/demo/wicket/jdo
+----
+|.Dependencies
+****
+org.apache.isis.examples.apps:demo-wicket-common:jar:${project.version} +
+org.apache.isis.mavendeps:isis-mavendeps-jdo:pom:<managed> +
+****
+
+|Demo - Wicket/JPA
+[source,yaml]
+----
+Group: org.apache.isis.examples.apps
+Artifact: demo-wicket-jpa
+Type: jar
+Directory: /examples/demo/wicket/jpa
+----
+|.Dependencies
+****
+org.apache.isis.examples.apps:demo-wicket-common:jar:${project.version} +
+org.apache.isis.mavendeps:isis-mavendeps-jpa:pom:<managed> +
 ****
 |===
 
@@ -1125,7 +1004,7 @@ package "Root\n[Software System]" {
 .Projects/Modules (Root)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis (Aggregator)
 [source,yaml]
@@ -1204,7 +1083,7 @@ package "Commons\n[Software System]" {
 .Projects/Modules (Commons)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Commons
 [source,yaml]
@@ -1360,7 +1239,7 @@ package "Core\n[Software System]" {
 .Projects/Modules (Core)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Core
 [source,yaml]
@@ -1414,7 +1293,7 @@ org.jmock:jmock:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:applib:index/AbstractViewModel.adoc[AbstractViewModel], xref:refguide:applib:index/Identifier.adoc[Identifier], xref:refguide:applib:index/IsisModuleApplib.adoc[IsisModuleApplib], xref:refguide:applib:index/RecreatableDomainObject.adoc[RecreatableDomainObject], xref:refguide:applib:index/ViewModel.adoc[ViewModel], xref:refguide:applib:index/adapters/AbstractValueSemanticsProvider.adoc[AbstractValueSemanticsProvider], xref:refguide:applib:index/adapters/DefaultsProvider.adoc [...]
+xref:refguide:applib:index/AbstractViewModel.adoc[AbstractViewModel], xref:refguide:applib:index/Identifier.adoc[Identifier], xref:refguide:applib:index/IsisModuleApplib.adoc[IsisModuleApplib], xref:refguide:applib:index/RecreatableDomainObject.adoc[RecreatableDomainObject], xref:refguide:applib:index/ViewModel.adoc[ViewModel], xref:refguide:applib:index/adapters/AbstractValueSemanticsProvider.adoc[AbstractValueSemanticsProvider], xref:refguide:applib:index/adapters/DefaultsProvider.adoc [...]
 ****
 
 |Apache Isis Core - Code Gen (ByteBuddy)
@@ -1561,7 +1440,7 @@ o.a.i.core.metamodel.services.exceprecog.ExceptionRecognizerForRecoverableExcept
 o.a.i.core.metamodel.services.grid.GridLoaderServiceDefault +
 o.a.i.core.metamodel.services.grid.GridReaderUsingJaxb +
 o.a.i.core.metamodel.services.grid.GridServiceDefault +
-o.a.i.core.metamodel.services.grid.bootstrap3.GridSystemServiceBS3 +
+o.a.i.core.metamodel.services.grid.bootstrap3.GridSystemServiceBootstrap +
 o.a.i.core.metamodel.services.layout.LayoutServiceDefault +
 o.a.i.core.metamodel.services.metamodel.MetaModelServiceDefault +
 o.a.i.core.metamodel.services.registry.ServiceRegistryDefault +
@@ -1588,7 +1467,7 @@ org.jmock:jmock:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:core:index/metamodel/services/command/CommandDtoFactory.adoc[CommandDtoFactory], xref:refguide:core:index/metamodel/services/ixn/InteractionDtoFactory.adoc[InteractionDtoFactory], xref:refguide:core:index/metamodel/services/publishing/CommandPublisher.adoc[CommandPublisher], xref:refguide:core:index/metamodel/services/publishing/ExecutionPublisher.adoc[ExecutionPublisher]
+xref:refguide:core:index/metamodel/services/command/CommandDtoFactory.adoc[CommandDtoFactory], xref:refguide:core:index/metamodel/services/ixn/InteractionDtoFactory.adoc[InteractionDtoFactory], xref:refguide:core:index/metamodel/services/publishing/CommandPublisher.adoc[CommandPublisher], xref:refguide:core:index/metamodel/services/publishing/ExecutionPublisher.adoc[ExecutionPublisher], xref:refguide:core:index/metamodel/services/tablecol/TableColumnOrderServiceDefault.adoc[TableColumnOr [...]
 ****
 
 |Apache Isis Core - Runtime
@@ -1751,6 +1630,7 @@ Introduced to keep the 'runtime' package concise.
 ****
 o.a.i.core.webapp.confmenu.ConfigurationViewServiceDefault +
 o.a.i.core.webapp.health.HealthIndicatorUsingHealthCheckService +
+o.a.i.core.webapp.impersonation.ImpersonatedUserHolderUsingHttpSession +
 o.a.i.core.webapp.modules.logonlog.WebModuleLogOnExceptionLogger +
 o.a.i.core.webapp.modules.templresources.WebModuleTemplateResources +
 o.a.i.core.webapp.webappctx.IsisWebAppContextInitializer +
@@ -1768,6 +1648,11 @@ org.springframework.boot:spring-boot-actuator:jar:<managed> +
 org.springframework.boot:spring-boot-starter-thymeleaf:jar:<managed> +
 ****
 
+.Document Index Entries
+****
+xref:refguide:core:index/webapp/impersonation/ImpersonatedUserHolderUsingHttpSession.adoc[ImpersonatedUserHolderUsingHttpSession]
+****
+
 |Apache Isis - JDK Supplemental
 [source,yaml]
 ----
@@ -1891,7 +1776,7 @@ package "JDO\n[Software System]" {
 .Projects/Modules (JDO)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Persistence - JDO
 [source,yaml]
@@ -2115,7 +2000,7 @@ package "JPA\n[Software System]" {
 .Projects/Modules (JPA)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Persistence - JPA
 [source,yaml]
@@ -2195,6 +2080,11 @@ org.apache.isis.persistence:isis-persistence-jpa-metamodel:jar:<managed> +
 org.springframework.data:spring-data-jpa:jar:<managed> +
 ****
 
+.Document Index Entries
+****
+xref:refguide:persistence:index/jpa/integration/typeconverters/JavaAwtBufferedImageByteArrayConverter.adoc[JavaAwtBufferedImageByteArrayConverter]
+****
+
 |Apache Isis Persistence - JPA (metamodel)
 [source,yaml]
 ----
@@ -2248,7 +2138,7 @@ package "Security\n[Software System]" {
 .Projects/Modules (Security)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Security - Spring
 [source,yaml]
@@ -2313,7 +2203,7 @@ package "Bypass\n[Software System]" {
 .Projects/Modules (Bypass)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Security - Bypass
 [source,yaml]
@@ -2370,7 +2260,7 @@ package "Keycloak\n[Software System]" {
 .Projects/Modules (Keycloak)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Security - Keycloak
 [source,yaml]
@@ -2432,7 +2322,7 @@ package "Shiro\n[Software System]" {
 .Projects/Modules (Shiro)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Security - Shiro
 [source,yaml]
@@ -2499,7 +2389,7 @@ package "Common\n[Software System]" {
 .Projects/Modules (Common)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Viewer - Common Model
 [source,yaml]
@@ -2595,7 +2485,7 @@ package "Restful Objects\n[Software System]" {
 .Projects/Modules (Restful Objects)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Viewer - RO
 [source,yaml]
@@ -2803,7 +2693,7 @@ package "Wicket\n[Software System]" {
 .Projects/Modules (Wicket)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Viewer - Wicket
 [source,yaml]
@@ -2867,6 +2757,8 @@ org.apache.wicket:wicket-extensions:jar:<managed> +
 org.apache.wicket:wicket-spring:jar:<managed> +
 org.datanucleus:javax.jdo:jar:<managed> +
 org.slf4j:slf4j-api:jar:${slf4j-api.version} +
+org.webjars:bootstrap:jar:<managed> +
+org.webjars:jquery:jar:<managed> +
 org.webjars:jquery-ui:jar:<managed> +
 org.webjars:select2:jar:<managed> +
 org.webjars.bower:summernote:jar:<managed> +
@@ -2897,7 +2789,6 @@ o.a.i.viewer.wicket.viewer.services.BookmarkUiServiceWicket +
 o.a.i.viewer.wicket.viewer.services.DeepLinkServiceWicket +
 o.a.i.viewer.wicket.viewer.services.HintStoreUsingWicketSession +
 o.a.i.viewer.wicket.viewer.services.ImageResourceCacheClassPath +
-o.a.i.viewer.wicket.viewer.services.ImpersonatedUserHolderWicket +
 o.a.i.viewer.wicket.viewer.services.LocaleProviderWicket +
 o.a.i.viewer.wicket.viewer.services.TranslationsResolverWicket +
 o.a.i.viewer.wicket.viewer.services.WicketViewerSettingsDefault +
@@ -2916,11 +2807,12 @@ org.apache.wicket:wicket-auth-roles:jar:<managed> +
 org.apache.wicket:wicket-spring:jar:<managed> +
 org.jmock:jmock-junit4:jar:<managed> +
 org.springframework:spring-web:jar:<managed> +
+org.webjars:popper.js:jar:<managed> +
 ****
 
 .Document Index Entries
 ****
-xref:refguide:viewer:index/wicket/viewer/IsisModuleViewerWicketViewer.adoc[IsisModuleViewerWicketViewer], xref:refguide:viewer:index/wicket/viewer/mixins/Object_clearHints.adoc[Object_clearHints], xref:refguide:viewer:index/wicket/viewer/services/ImpersonatedUserHolderWicket.adoc[ImpersonatedUserHolderWicket]
+xref:refguide:viewer:index/wicket/viewer/IsisModuleViewerWicketViewer.adoc[IsisModuleViewerWicketViewer], xref:refguide:viewer:index/wicket/viewer/mixins/Object_clearHints.adoc[Object_clearHints]
 ****
 |===
 
@@ -2954,7 +2846,7 @@ package "Valuetypes\n[Software System]" {
 .Projects/Modules (Valuetypes)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Value types
 [source,yaml]
@@ -3029,28 +2921,35 @@ skinparam rectangle<<9>> {
   FontColor #fffffe
   BorderColor #2E6295
 }
+skinparam rectangle<<10>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
 package "Asciidoc\n[Software System]" {
   rectangle "==Apache Isis Val - Asciidoctor (MetaModel)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
   rectangle "==Apache Isis Val - Asciidoctor (Persistence)\n<size:10>[Container: packaging: pom]</size>" <<5>> as 5
   rectangle "==Apache Isis Val - Asciidoctor (applib)\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
   rectangle "==Apache Isis Val - Asciidoctor (parent)\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
   rectangle "==Apache Isis Val - Asciidoctor (persistence jdo DN5)\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
-  rectangle "==Apache Isis Val - Asciidoctor (ui vaadin)\n<size:10>[Container: packaging: jar]</size>" <<8>> as 8
-  rectangle "==Apache Isis Val - Asciidoctor (ui wicket)\n<size:10>[Container: packaging: jar]</size>" <<9>> as 9
-  rectangle "==Apache Isis Val - Asciidoctor (ui)\n<size:10>[Container: packaging: pom]</size>" <<7>> as 7
+  rectangle "==Apache Isis Val - Asciidoctor (persistence jpa)\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
+  rectangle "==Apache Isis Val - Asciidoctor (ui vaadin)\n<size:10>[Container: packaging: jar]</size>" <<9>> as 9
+  rectangle "==Apache Isis Val - Asciidoctor (ui wicket)\n<size:10>[Container: packaging: jar]</size>" <<10>> as 10
+  rectangle "==Apache Isis Val - Asciidoctor (ui)\n<size:10>[Container: packaging: pom]</size>" <<8>> as 8
 }
 5 .[#707070].> 6 : ""
+5 .[#707070].> 7 : ""
 2 .[#707070].> 4 : ""
 2 .[#707070].> 5 : ""
 2 .[#707070].> 3 : ""
-2 .[#707070].> 7 : ""
-7 .[#707070].> 9 : ""
+2 .[#707070].> 8 : ""
+8 .[#707070].> 10 : ""
 @enduml
 ----
 .Projects/Modules (Asciidoc)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Val - Asciidoctor (parent)
 [source,yaml]
@@ -3139,6 +3038,19 @@ org.datanucleus:datanucleus-core:jar:<managed> +
 xref:refguide:valuetypes:index/asciidoc/persistence/jdo/dn5/IsisModuleValAsciidocPersistenceJdoDn5.adoc[IsisModuleValAsciidocPersistenceJdoDn5], xref:refguide:valuetypes:index/asciidoc/persistence/jdo/dn5/converters/IsisAsciiDocConverter.adoc[IsisAsciiDocConverter]
 ****
 
+|Apache Isis Val - Asciidoctor (persistence jpa)
+[source,yaml]
+----
+Group: org.apache.isis.valuetypes
+Artifact: isis-valuetypes-asciidoc-persistence-jpa
+Type: jar
+Directory: /valuetypes/asciidoc/persistence/jpa
+----
+|.Document Index Entries
+****
+xref:refguide:valuetypes:index/asciidoc/persistence/jpa/IsisModuleValAsciidocPersistenceJpa.adoc[IsisModuleValAsciidocPersistenceJpa], xref:refguide:valuetypes:index/asciidoc/persistence/jpa/converters/IsisAsciiDocConverter.adoc[IsisAsciiDocConverter]
+****
+
 |Apache Isis Val - Asciidoctor (ui)
 [source,yaml]
 ----
@@ -3150,8 +3062,8 @@ Directory: /valuetypes/asciidoc/ui
 |.Dependencies
 ****
 com.github.jnr:jnr-constants:jar:0.10.1 +
-com.github.jnr:jnr-enxio:jar:0.32.4 +
-com.github.jnr:jnr-posix:jar:3.1.5 +
+com.github.jnr:jnr-enxio:jar:0.32.5 +
+com.github.jnr:jnr-posix:jar:3.1.6 +
 org.apache.isis.core:isis-core-metamodel:jar:<managed> +
 org.apache.isis.valuetypes:isis-valuetypes-asciidoc-applib:jar:<managed> +
 org.asciidoctor:asciidoctorj:jar:${asciidoctorj.version} +
@@ -3258,27 +3170,34 @@ skinparam rectangle<<8>> {
   FontColor #fffffe
   BorderColor #2E6295
 }
+skinparam rectangle<<9>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
 package "Markdown\n[Software System]" {
   rectangle "==Apache Isis Val - Markdown (MetaModel)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
   rectangle "==Apache Isis Val - Markdown (Persistence)\n<size:10>[Container: packaging: pom]</size>" <<5>> as 5
   rectangle "==Apache Isis Val - Markdown (applib)\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
   rectangle "==Apache Isis Val - Markdown (parent)\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
   rectangle "==Apache Isis Val - Markdown (persistence jdo DN5)\n<size:10>[Container: packaging: jar]</size>" <<6>> as 6
-  rectangle "==Apache Isis Val - Markdown (ui wicket)\n<size:10>[Container: packaging: jar]</size>" <<8>> as 8
-  rectangle "==Apache Isis Val - Markdown (ui)\n<size:10>[Container: packaging: pom]</size>" <<7>> as 7
+  rectangle "==Apache Isis Val - Markdown (persistence jpa)\n<size:10>[Container: packaging: jar]</size>" <<7>> as 7
+  rectangle "==Apache Isis Val - Markdown (ui wicket)\n<size:10>[Container: packaging: jar]</size>" <<9>> as 9
+  rectangle "==Apache Isis Val - Markdown (ui)\n<size:10>[Container: packaging: pom]</size>" <<8>> as 8
 }
 5 .[#707070].> 6 : ""
+5 .[#707070].> 7 : ""
 2 .[#707070].> 4 : ""
 2 .[#707070].> 5 : ""
 2 .[#707070].> 3 : ""
-2 .[#707070].> 7 : ""
-7 .[#707070].> 8 : ""
+2 .[#707070].> 8 : ""
+8 .[#707070].> 9 : ""
 @enduml
 ----
 .Projects/Modules (Markdown)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Val - Markdown (parent)
 [source,yaml]
@@ -3368,6 +3287,24 @@ org.datanucleus:datanucleus-core:jar:<managed> +
 xref:refguide:valuetypes:index/markdown/persistence/jdo/dn5/IsisModuleValMarkdownPersistenceJdoDn5.adoc[IsisModuleValMarkdownPersistenceJdoDn5], xref:refguide:valuetypes:index/markdown/persistence/jdo/dn5/converters/IsisMarkdownConverter.adoc[IsisMarkdownConverter]
 ****
 
+|Apache Isis Val - Markdown (persistence jpa)
+[source,yaml]
+----
+Group: org.apache.isis.valuetypes
+Artifact: isis-valuetypes-markdown-persistence-jpa
+Type: jar
+Directory: /valuetypes/markdown/persistence/jpa
+----
+|.Dependencies
+****
+org.apache.isis.valuetypes:isis-valuetypes-markdown-applib:jar:<managed> +
+****
+
+.Document Index Entries
+****
+xref:refguide:valuetypes:index/markdown/persistence/jpa/IsisModuleValMarkdownPersistenceJpa.adoc[IsisModuleValMarkdownPersistenceJpa], xref:refguide:valuetypes:index/markdown/persistence/jpa/converters/IsisMarkdownConverter.adoc[IsisMarkdownConverter]
+****
+
 |Apache Isis Val - Markdown (ui)
 [source,yaml]
 ----
@@ -3461,7 +3398,7 @@ package "SSE\n[Software System]" {
 .Projects/Modules (SSE)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Val - Server Sent Events (parent)
 [source,yaml]
@@ -3584,7 +3521,7 @@ package "Mappings\n[Software System]" {
 .Projects/Modules (Mappings)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Mappings
 [source,yaml]
@@ -3647,7 +3584,7 @@ package "JAX-RS Client Library\n[Software System]" {
 .Projects/Modules (JAX-RS Client Library)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Map - JaxRS Client (parent)
 [source,yaml]
@@ -3729,7 +3666,7 @@ package "REST Client\n[Software System]" {
 .Projects/Modules (REST Client)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Ext - REST Client (parent)
 [source,yaml]
@@ -3815,7 +3752,7 @@ skinparam rectangle<<12>> {
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<24>> {
+skinparam rectangle<<13>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
@@ -3954,7 +3891,7 @@ package "Extensions\n[Software System]" {
 .Projects/Modules (Extensions)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Extensions
 [source,yaml]
@@ -4212,11 +4149,18 @@ Directory: /extensions/security/secman/api
 |.Components
 ****
 o.a.i.extensions.secman.api.authorizor.AuthorizorSecman +
+o.a.i.extensions.secman.api.feature.dom.ApplicationFeatureChoices +
+o.a.i.extensions.secman.api.role.dom.ApplicationRoleRepositoryAbstract +
+****
+
+.Dependencies
+****
+org.apache.isis.testing:isis-testing-fixtures-applib:jar:<managed> +
 ****
 
 .Document Index Entries
 ****
-xref:refguide:extensions:index/secman/api/IsisModuleExtSecmanApi.adoc[IsisModuleExtSecmanApi], xref:refguide:extensions:index/secman/api/SecmanConfiguration.adoc[SecmanConfiguration], xref:refguide:extensions:index/secman/api/SecurityRealm.adoc[SecurityRealm], xref:refguide:extensions:index/secman/api/SecurityRealmCharacteristic.adoc[SecurityRealmCharacteristic], xref:refguide:extensions:index/secman/api/SecurityRealmService.adoc[SecurityRealmService], xref:refguide:extensions:index/secm [...]
+xref:refguide:extensions:index/secman/api/IsisModuleExtSecmanApi.adoc[IsisModuleExtSecmanApi], xref:refguide:extensions:index/secman/api/SecmanConfiguration.adoc[SecmanConfiguration], xref:refguide:extensions:index/secman/api/SecurityRealm.adoc[SecurityRealm], xref:refguide:extensions:index/secman/api/SecurityRealmCharacteristic.adoc[SecurityRealmCharacteristic], xref:refguide:extensions:index/secman/api/SecurityRealmService.adoc[SecurityRealmService], xref:refguide:extensions:index/secm [...]
 ****
 
 |Apache Isis Ext - Sec Man Encryption (Using jbcrypt)
@@ -4254,8 +4198,10 @@ Directory: /extensions/security/secman/model
 ----
 |.Components
 ****
-o.a.i.extensions.secman.model.facets.TenantedAuthorizationFacetFactory$Register +
-o.a.i.extensions.secman.model.menu.ImpersonateMenuAdvisorForSecman +
+o.a.i.extensions.secman.model.facets.TenantedAuthorizationPostProcessor$Register +
+o.a.i.extensions.secman.model.seed.SeedSecurityModuleService +
+o.a.i.extensions.secman.model.spiimpl.ImpersonateMenuAdvisorForSecman +
+o.a.i.extensions.secman.model.spiimpl.TableColumnVisibilityServiceForSecman +
 ****
 
 .Dependencies
@@ -4266,7 +4212,7 @@ org.apache.isis.extensions:isis-extensions-secman-api:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:extensions:index/secman/model/IsisModuleExtSecmanModel.adoc[IsisModuleExtSecmanModel], xref:refguide:extensions:index/secman/model/dom/user/MeService.adoc[MeService]
+xref:refguide:extensions:index/secman/model/IsisModuleExtSecmanModel.adoc[IsisModuleExtSecmanModel], xref:refguide:extensions:index/secman/model/seed/SeedSecurityModuleService.adoc[SeedSecurityModuleService], xref:refguide:extensions:index/secman/model/seed/scripts/SeedUsersAndRolesFixtureScript.adoc[SeedUsersAndRolesFixtureScript], xref:refguide:extensions:index/secman/model/seed/scripts/other/IsisConfigurationRoleAndPermissions.adoc[IsisConfigurationRoleAndPermissions], xref:refguide:e [...]
 ****
 
 |Apache Isis Ext - Sec Man Persistence (Using JDO)
@@ -4279,11 +4225,11 @@ Directory: /extensions/security/secman/persistence-jdo
 ----
 |.Components
 ****
-o.a.i.extensions.secman.jdo.dom.permission.ApplicationPermissionRepository +
-o.a.i.extensions.secman.jdo.dom.role.ApplicationRoleRepository +
-o.a.i.extensions.secman.jdo.dom.tenancy.ApplicationTenancyRepository +
-o.a.i.extensions.secman.jdo.dom.user.ApplicationUserRepository +
-o.a.i.extensions.secman.jdo.seed.SeedSecurityModuleService +
+o.a.i.extensions.secman.jdo.permission.dom.ApplicationPermissionRepository +
+o.a.i.extensions.secman.jdo.role.dom.ApplicationRoleRepository +
+o.a.i.extensions.secman.jdo.tenancy.dom.ApplicationTenancyRepository +
+o.a.i.extensions.secman.jdo.user.dom.ApplicationUserRepository +
+o.a.i.extensions.secman.jdo.util.RegexReplacer +
 ****
 
 .Dependencies
@@ -4298,7 +4244,7 @@ org.apache.isis.testing:isis-testing-fixtures-applib:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:extensions:index/secman/jdo/IsisModuleExtSecmanPersistenceJdo.adoc[IsisModuleExtSecmanPersistenceJdo], xref:refguide:extensions:index/secman/jdo/seed/SeedSecurityModuleService.adoc[SeedSecurityModuleService], xref:refguide:extensions:index/secman/jdo/seed/SeedUsersAndRolesFixtureScript.adoc[SeedUsersAndRolesFixtureScript], xref:refguide:extensions:index/secman/jdo/seed/scripts/GlobalTenancy.adoc[GlobalTenancy], xref:refguide:extensions:index/secman/jdo/seed/scripts/IsisExtF [...]
+xref:refguide:extensions:index/secman/jdo/IsisModuleExtSecmanPersistenceJdo.adoc[IsisModuleExtSecmanPersistenceJdo]
 ****
 
 |Apache Isis Ext - Sec Man Persistence (Using JPA)
@@ -4311,11 +4257,11 @@ Directory: /extensions/security/secman/persistence-jpa
 ----
 |.Components
 ****
-o.a.i.extensions.secman.jpa.dom.permission.ApplicationPermissionRepository +
-o.a.i.extensions.secman.jpa.dom.role.ApplicationRoleRepository +
-o.a.i.extensions.secman.jpa.dom.tenancy.ApplicationTenancyRepository +
-o.a.i.extensions.secman.jpa.dom.user.ApplicationUserRepository +
-o.a.i.extensions.secman.jpa.seed.SeedSecurityModuleService +
+o.a.i.extensions.secman.jpa.permission.dom.ApplicationPermissionRepository +
+o.a.i.extensions.secman.jpa.role.dom.ApplicationRoleRepository +
+o.a.i.extensions.secman.jpa.tenancy.dom.ApplicationTenancyRepository +
+o.a.i.extensions.secman.jpa.user.dom.ApplicationUserRepository +
+o.a.i.extensions.secman.jpa.util.RegexReplacer +
 ****
 
 .Dependencies
@@ -4329,7 +4275,7 @@ org.apache.isis.testing:isis-testing-fixtures-applib:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:extensions:index/secman/jpa/IsisModuleExtSecmanPersistenceJpa.adoc[IsisModuleExtSecmanPersistenceJpa], xref:refguide:extensions:index/secman/jpa/seed/SeedSecurityModuleService.adoc[SeedSecurityModuleService], xref:refguide:extensions:index/secman/jpa/seed/SeedUsersAndRolesFixtureScript.adoc[SeedUsersAndRolesFixtureScript], xref:refguide:extensions:index/secman/jpa/seed/scripts/GlobalTenancy.adoc[GlobalTenancy], xref:refguide:extensions:index/secman/jpa/seed/scripts/IsisExtF [...]
+xref:refguide:extensions:index/secman/jpa/IsisModuleExtSecmanPersistenceJpa.adoc[IsisModuleExtSecmanPersistenceJpa]
 ****
 
 |Apache Isis Ext - Sec Man Realm (Using Shiro)
@@ -4396,6 +4342,11 @@ Directory: /extensions/security/spring-oauth2
 ----
 |Authentication Converter, using Spring Security's OAuth2 client
 
+.Components
+****
+o.a.i.extensions.spring.security.oauth2.authconverters.AuthenticationConverterOfOAuth2UserPrincipal +
+****
+
 .Dependencies
 ****
 org.apache.isis.core:isis-core-internaltestsupport:jar:<managed> +
@@ -4441,19 +4392,26 @@ skinparam rectangle<<4>> {
   FontColor #fffffe
   BorderColor #2E6295
 }
+skinparam rectangle<<5>> {
+  BackgroundColor #438dd5
+  FontColor #fffffe
+  BorderColor #2E6295
+}
 package "Core: Command Log\n[Software System]" {
   rectangle "==Apache Isis Ext - Command Log\n<size:10>[Container: packaging: pom]</size>" <<2>> as 2
-  rectangle "==Apache Isis Ext - Command Log Implementation (JDO)\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
-  rectangle "==Apache Isis Ext - Command Log Implementation (JPA)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
+  rectangle "==Apache Isis Ext - Command Log API\n<size:10>[Container: packaging: jar]</size>" <<3>> as 3
+  rectangle "==Apache Isis Ext - Command Log Implementation (JDO)\n<size:10>[Container: packaging: jar]</size>" <<4>> as 4
+  rectangle "==Apache Isis Ext - Command Log Implementation (JPA)\n<size:10>[Container: packaging: jar]</size>" <<5>> as 5
 }
 2 .[#707070].> 3 : ""
 2 .[#707070].> 4 : ""
+2 .[#707070].> 5 : ""
 @enduml
 ----
 .Projects/Modules (Core: Command Log)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Ext - Command Log
 [source,yaml]
@@ -4465,6 +4423,24 @@ Directory: /extensions/core/command-log
 ----
 |Logs commands
 
+|Apache Isis Ext - Command Log API
+[source,yaml]
+----
+Group: org.apache.isis.extensions
+Artifact: isis-extensions-command-log-applib
+Type: jar
+Directory: /extensions/core/command-log/applib
+----
+|.Dependencies
+****
+org.apache.isis.core:isis-applib:jar:<managed> +
+org.apache.isis.core:isis-core-config:jar:<managed> +
+org.apache.isis.core:isis-core-runtimeservices:jar:<managed> +
+org.apache.isis.testing:isis-testing-fixtures-applib:jar:<managed> +
+org.apache.isis.testing:isis-testing-integtestsupport-applib:jar:<managed> +
+org.apache.isis.testing:isis-testing-unittestsupport-applib:jar:<managed> +
+****
+
 |Apache Isis Ext - Command Log Implementation (JDO)
 [source,yaml]
 ----
@@ -4475,27 +4451,24 @@ Directory: /extensions/core/command-log/jdo
 ----
 |.Components
 ****
-o.a.i.extensions.commandlog.impl.CommandSubscriberForJdo +
-o.a.i.extensions.commandlog.impl.jdo.CommandJdo$TableColumnOrderDefault +
-o.a.i.extensions.commandlog.impl.jdo.CommandJdo$TitleProvider +
-o.a.i.extensions.commandlog.impl.jdo.CommandJdoRepository +
-o.a.i.extensions.commandlog.impl.ui.CommandServiceMenu +
+o.a.i.extensions.commandlog.jdo.CommandSubscriberForJdo +
+o.a.i.extensions.commandlog.jdo.entities.CommandJdo$TableColumnOrderDefault +
+o.a.i.extensions.commandlog.jdo.entities.CommandJdo$TitleProvider +
+o.a.i.extensions.commandlog.jdo.entities.CommandJdoRepository +
+o.a.i.extensions.commandlog.jdo.ui.CommandServiceMenu +
 ****
 
 .Dependencies
 ****
-org.apache.isis.core:isis-applib:jar:<managed> +
-org.apache.isis.core:isis-core-config:jar:<managed> +
-org.apache.isis.core:isis-core-runtimeservices:jar:<managed> +
+org.apache.isis.extensions:isis-extensions-command-log-applib:jar:<managed> +
 org.apache.isis.mavendeps:isis-mavendeps-jdo:pom:<managed> +
-org.apache.isis.testing:isis-testing-fixtures-applib:jar:<managed> +
 org.apache.isis.testing:isis-testing-integtestsupport-applib:jar:<managed> +
 org.apache.isis.testing:isis-testing-unittestsupport-applib:jar:<managed> +
 ****
 
 .Document Index Entries
 ****
-xref:refguide:extensions:index/commandlog/impl/CommandSubscriberForJdo.adoc[CommandSubscriberForJdo], xref:refguide:extensions:index/commandlog/impl/IsisModuleExtCommandLogImpl.adoc[IsisModuleExtCommandLogImpl], xref:refguide:extensions:index/commandlog/impl/mixins/HasInteractionId_command.adoc[HasInteractionId_command], xref:refguide:extensions:index/commandlog/impl/mixins/HasUsername_recentCommandsByUser.adoc[HasUsername_recentCommandsByUser], xref:refguide:extensions:index/commandlog/ [...]
+xref:refguide:extensions:index/commandlog/jdo/CommandSubscriberForJdo.adoc[CommandSubscriberForJdo], xref:refguide:extensions:index/commandlog/jdo/IsisModuleExtCommandLogJdo.adoc[IsisModuleExtCommandLogJdo], xref:refguide:extensions:index/commandlog/jdo/mixins/HasInteractionId_command.adoc[HasInteractionId_command], xref:refguide:extensions:index/commandlog/jdo/mixins/HasUsername_recentCommandsByUser.adoc[HasUsername_recentCommandsByUser], xref:refguide:extensions:index/commandlog/jdo/mi [...]
 ****
 
 |Apache Isis Ext - Command Log Implementation (JPA)
@@ -4506,16 +4479,25 @@ Artifact: isis-extensions-command-log-jpa
 Type: jar
 Directory: /extensions/core/command-log/jpa
 ----
-|.Dependencies
+|.Components
 ****
-org.apache.isis.core:isis-applib:jar:<managed> +
-org.apache.isis.core:isis-core-config:jar:<managed> +
-org.apache.isis.core:isis-core-runtimeservices:jar:<managed> +
+o.a.i.extensions.commandlog.jpa.entities.CommandJpa$TableColumnOrderDefault +
+o.a.i.extensions.commandlog.jpa.entities.CommandJpa$TitleProvider +
+o.a.i.extensions.commandlog.jpa.entities.CommandJpaRepository +
+****
+
+.Dependencies
+****
+org.apache.isis.extensions:isis-extensions-command-log-applib:jar:<managed> +
 org.apache.isis.mavendeps:isis-mavendeps-jpa:pom:<managed> +
-org.apache.isis.testing:isis-testing-fixtures-applib:jar:<managed> +
 org.apache.isis.testing:isis-testing-integtestsupport-applib:jar:<managed> +
 org.apache.isis.testing:isis-testing-unittestsupport-applib:jar:<managed> +
 ****
+
+.Document Index Entries
+****
+xref:refguide:extensions:index/commandlog/jpa/IsisModuleExtCommandLogJpa.adoc[IsisModuleExtCommandLogJpa]
+****
 |===
 
 === Core: Command Replay
@@ -4562,7 +4544,7 @@ package "Core: Command Replay\n[Software System]" {
 .Projects/Modules (Core: Command Replay)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Ext - Command Replay
 [source,yaml]
@@ -4595,7 +4577,7 @@ o.a.i.extensions.commandreplay.primary.spiimpl.CaptureResultOfCommand +
 org.apache.isis.core:isis-core-config:jar:<managed> +
 org.apache.isis.core:isis-core-runtime:jar:<managed> +
 org.apache.isis.core:isis-schema:jar:<managed> +
-org.apache.isis.extensions:isis-extensions-command-log-jdo:jar:<managed> +
+org.apache.isis.extensions:isis-extensions-command-log-applib:jar:<managed> +
 org.apache.isis.mappings:isis-mappings-jaxrsclient-applib:jar:<managed> +
 org.apache.isis.mappings:isis-mappings-jaxrsclient-impl:jar:<managed> +
 org.apache.isis.testing:isis-testing-fixtures-applib:jar:<managed> +
@@ -4634,7 +4616,7 @@ org.apache.isis.core:isis-core-config:jar:<managed> +
 org.apache.isis.core:isis-core-internaltestsupport:jar:<managed> +
 org.apache.isis.core:isis-core-runtime:jar:<managed> +
 org.apache.isis.core:isis-schema:jar:<managed> +
-org.apache.isis.extensions:isis-extensions-command-log-jdo:jar:<managed> +
+org.apache.isis.extensions:isis-extensions-command-log-applib:jar:<managed> +
 org.apache.isis.extensions:isis-extensions-quartz-impl:jar:<managed> +
 org.apache.isis.mappings:isis-mappings-jaxrsclient-applib:jar:<managed> +
 org.apache.isis.mappings:isis-mappings-jaxrsclient-impl:jar:<managed> +
@@ -4643,7 +4625,7 @@ org.apache.isis.testing:isis-testing-fixtures-applib:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:extensions:index/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.adoc[IsisModuleExtCommandReplaySecondary], xref:refguide:extensions:index/commandreplay/secondary/SecondaryStatus.adoc[SecondaryStatus], xref:refguide:extensions:index/commandreplay/secondary/analyser/CommandReplayAnalyser.adoc[CommandReplayAnalyser], xref:refguide:extensions:index/commandreplay/secondary/analyser/CommandReplayAnalyserException.adoc[CommandReplayAnalyserException], xref:refguide:ex [...]
+xref:refguide:extensions:index/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.adoc[IsisModuleExtCommandReplaySecondary], xref:refguide:extensions:index/commandreplay/secondary/SecondaryStatus.adoc[SecondaryStatus], xref:refguide:extensions:index/commandreplay/secondary/analyser/CommandReplayAnalyser.adoc[CommandReplayAnalyser], xref:refguide:extensions:index/commandreplay/secondary/analyser/CommandReplayAnalyserException.adoc[CommandReplayAnalyserException], xref:refguide:ex [...]
 ****
 |===
 
@@ -4684,7 +4666,7 @@ package "Core: Quartz\n[Software System]" {
 .Projects/Modules (Core: Quartz)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Ext - Quartz
 [source,yaml]
@@ -4829,7 +4811,7 @@ package "Subdomains\n[Software System]" {
 .Projects/Modules (Subdomains)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Subdomains
 [source,yaml]
@@ -5009,7 +4991,7 @@ package "Base\n[Software System]" {
 .Projects/Modules (Base)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Sub - Base (parent)
 [source,yaml]
@@ -5107,7 +5089,7 @@ package "Excel\n[Software System]" {
 .Projects/Modules (Excel)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Sub - Excel (parent)
 [source,yaml]
@@ -5243,7 +5225,7 @@ package "Spring\n[Software System]" {
 .Projects/Modules (Spring)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Sub - Spring (parent)
 [source,yaml]
@@ -5317,7 +5299,7 @@ package "XDocReport\n[Software System]" {
 .Projects/Modules (XDocReport)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Sub - XdocReport (parent)
 [source,yaml]
@@ -5432,7 +5414,7 @@ package "Tooling\n[Software System]" {
 .Projects/Modules (Tooling)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis - Tooling
 [source,yaml]
@@ -5695,7 +5677,7 @@ package "Regression Tests\n[Software System]" {
 .Projects/Modules (Regression Tests)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis - Regression Tests
 [source,yaml]
@@ -5937,7 +5919,7 @@ package "Incubator\n[Software System]" {
 .Projects/Modules (Incubator)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Incubator
 [source,yaml]
@@ -5985,7 +5967,7 @@ package "Kroviz Client\n[Software System]" {
 .Projects/Modules (Kroviz Client)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Inc - Client kroViz
 [source,yaml]
@@ -6049,7 +6031,7 @@ package "JavaFX Viewer\n[Software System]" {
 .Projects/Modules (JavaFX Viewer)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Inc - Viewer JavaFX
 [source,yaml]
@@ -6159,7 +6141,7 @@ package "Vaadin Viewer\n[Software System]" {
 .Projects/Modules (Vaadin Viewer)
 [cols="3a,5a", options="header"]
 |===
-|Coordinates |Description
+|Coordinates |Description 
 
 |Apache Isis Inc - Viewer Vaadin
 [source,yaml]
diff --git a/core/config/src/main/adoc/modules/config/pages/sections/isis.applib.adoc b/core/config/src/main/adoc/modules/config/pages/sections/isis.applib.adoc
index 40fc9cc..49993c5 100644
--- a/core/config/src/main/adoc/modules/config/pages/sections/isis.applib.adoc
+++ b/core/config/src/main/adoc/modules/config/pages/sections/isis.applib.adoc
@@ -17,7 +17,7 @@ isis.applib.annotation. +
 action-layout.css-class-fa. +
 patterns
 
-|
+| 
 | Provides a mapping of patterns to font-awesome CSS classes, where the pattern is used to match against the name of the action method in order to determine a CSS class to use, for example on the action's menu icon if rendered by the Wicket viewer.
 
 Providing a default set of patterns encourages a common set of verbs to be used.
@@ -30,7 +30,7 @@ The font awesome class for individual actions can be overridden using ``ActionLa
 isis.applib.annotation. +
 action-layout.css-class.patterns
 
-|
+| 
 | Provides a mapping of patterns to CSS classes, where the pattern is used to match against the name of the action method in order to determine a CSS class to use, for example on the action's button if rendered by the Wicket viewer.
 
 Providing a default set of patterns encourages a common set of verbs to be used.
@@ -43,8 +43,8 @@ The CSS class for individual actions can be overridden using ``ActionLayout#cssC
 isis.applib.annotation.action. +
 command-publishing
 
-|
-| TODO[2464] semantic renaming audit/dispatch -> publishing The default for whether action invocations should be reified as a xref:refguide:applib:index/services/command/Command.adoc[Command], to be sent to any registered ``CommandSubscriber``s, either for auditing or for replayed against a secondary system, eg for regression testing.
+| 
+| TODO[2464] semantic renaming audit/dispatch -> publishing The default for whether action invocations should be reified as a ``Command``, to be sent to any registered ``CommandSubscriber``s, either for auditing or for replayed against a secondary system, eg for regression testing.
 
 This setting can be overridden on a case-by-case basis using ``Action#commandPublishing()``.
 
@@ -71,7 +71,7 @@ The algorithm for determining whether (and what type of) an event is actually se
 isis.applib.annotation.action. +
 execution-publishing
 
-|
+| 
 | TODO[2464] semantic renaming audit/dispatch -> publishing The default for whether action invocations should be sent through to the ``ExecutionSubscriber`` for publishing.
 
 The service's publish method is called only once per transaction, with ``Execution`` collecting details of the identity of the target object, the action invoked, the action arguments and the returned object (if any).
@@ -84,7 +84,7 @@ This setting can be overridden on a case-by-case basis using ``Action#executionD
 isis.applib.annotation.action. +
 explicit
 
-|
+| 
 | Whether or not a public method needs to be annotated with @``Action`` in order to be picked up as an action in the metamodel.
 
 
@@ -93,7 +93,7 @@ explicit
 isis.applib.annotation. +
 collection-layout.default-view
 
-|
+| 
 | Defines the initial view to display collections when rendered.
 
 The value of this can be overridden on a case-by-case basis using ``CollectionLayout#defaultView()``. Note that this default configuration property is an enum and so defines only a fixed number of values, whereas the annotation returns a string; this is to allow for flexibility that individual viewers might support their own additional types. For example, the Wicket viewer supports
@@ -116,7 +116,7 @@ isis.applib.annotation.collection. +
 domain-event.post-for-default
 
 |  true
-| Influences whether an ``DomainEvent`` should be published (on the internal ``EventBusService``) whenever a collection is being interacted with.
+| Influences whether an ``CollectionDomainEvent`` should be published (on the internal ``EventBusService``) whenever a collection is being interacted with.
 
 Up to two different events can be fired during an interaction, with the event's phase determining which (hide, disable)Subscribers can influence the behaviour at each of these phases.
 
@@ -134,7 +134,7 @@ domain-object-layout. +
 css-class-ui-event. +
 post-for-default
 
-|
+| 
 | Influences whether an ``CssClassUiEvent`` should be published (on the internal ``EventBusService``) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally ``CssClassUiEvent#setCssClass(String)`` change) the CSS classes that are used.
 
 The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObjectLayout#cssClassUiEvent()`` @DomainObjectLayout(cssClassEvent=...)} for the domain object in question.
@@ -152,7 +152,7 @@ isis.applib.annotation. +
 domain-object-layout.icon-ui-event. +
 post-for-default
 
-|
+| 
 | Influences whether an ``IconUiEvent`` should be published (on the internal ``EventBusService``) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally ``IconUiEvent#setIconName(String)`` change) the icon that is used.
 
 The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObjectLayout#iconUiEvent()`` @DomainObjectLayout(iconEvent=...)} for the domain object in question.
@@ -170,7 +170,7 @@ isis.applib.annotation. +
 domain-object-layout. +
 layout-ui-event.post-for-default
 
-|
+| 
 | Influences whether an ``LayoutUiEvent`` should be published (on the internal ``EventBusService``) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally ``LayoutUiEvent#setLayout(String)`` change) the layout that is used.
 
 If a different layout value has been set, then a layout in the form ``xml`` use used (where ``zzz`` is the name of the layout).
@@ -201,7 +201,7 @@ isis.applib.annotation. +
 domain-object-layout. +
 title-ui-event.post-for-default
 
-|
+| 
 | Influences whether an ``TitleUiEvent`` should be published (on the internal ``EventBusService``) whenever a domain object is about to be rendered in the UI - thereby allowing subscribers to optionally ``TitleUiEvent#setTitle(String)`` change) the title that is used.
 
 The algorithm for determining whether (and what type of) an event is sent depends on the value of the ``DomainObjectLayout#titleUiEvent()`` @DomainObjectLayout(titleEvent=...)} for the domain object in question.
@@ -235,7 +235,7 @@ The algorithm for determining whether (and what type of) an event is sent depend
 isis.applib.annotation. +
 domain-object.editing
 
-|
+| 
 | The default for whether the properties of domain objects can be edited, or whether instead they can be modified only using actions (or programmatically as a side-effect of actions on other objects).
 
 This setting can be overridden on a case-by-case basis using DomainObject#getEditing()
@@ -247,7 +247,7 @@ isis.applib.annotation. +
 domain-object. +
 entity-change-publishing
 
-|
+| 
 | TODO[2464] semantic renaming audit/dispatch -> publishing The default for whether _domain entities_ should be audited or not (meaning that any changes are sent through to ``EntityChangesSubscriber``s and sent through to ``EntityPropertyChangeSubscriber``.
 
 This setting can be overridden on a case-by-case basis using ``DomainObject#entityChangePublishing()``
@@ -376,7 +376,7 @@ Note: this applies only to domain entities, not to view models.
 isis.applib.annotation. +
 parameter-layout.label-position
 
-|
+| 
 | Defines the default position for the label for an action parameter.
 
 Can be overridden on a case-by-case basis using ``ParameterLayout#labelPosition()``.
@@ -389,7 +389,7 @@ If left as ``LabelPosition#NOT_SPECIFIED`` and not overridden, then the position
 isis.applib.annotation. +
 property-layout.label-position
 
-|
+| 
 | Defines the default position for the label for a domain object property.
 
 Can be overridden on a case-by-case basis using ``ParameterLayout#labelPosition()``.
@@ -402,8 +402,8 @@ If left as ``LabelPosition#NOT_SPECIFIED`` and not overridden, then the position
 isis.applib.annotation.property. +
 command-publishing
 
-|
-| TODO[2464] semantic renaming audit/dispatch -> publishing The default for whether property edits should be reified as a xref:refguide:applib:index/services/command/Command.adoc[Command], to be sent to any registered ``CommandSubscriber``s, either for auditing or for replayed against a secondary system, eg for regression testing.
+| 
+| TODO[2464] semantic renaming audit/dispatch -> publishing The default for whether property edits should be reified as a ``Command``, to be sent to any registered ``CommandSubscriber``s, either for auditing or for replayed against a secondary system, eg for regression testing.
 
 This setting can be overridden on a case-by-case basis using ``Property#commandDispatch()``.
 
@@ -430,7 +430,7 @@ The algorithm for determining whether (and what type of) an event is actually se
 isis.applib.annotation.property. +
 execution-publishing
 
-|
+| 
 | TODO[2464] semantic renaming audit/dispatch -> publishing The default for whether property edits should be sent through to the ``ExecutionSubscriber`` for publishing.
 
 The service's publish method is called only once per transaction, with ``Execution`` collecting details of the identity of the target object, the property edited, and the new value of the property.
@@ -511,7 +511,7 @@ isis.applib.annotation.view-model. +
 validation.semantic-checking. +
 enable
 
-|
+| 
 | Whether to check for inconsistencies between the usage of ``DomainObject``, ``ViewModel``, ``DomainObjectLayout`` and ``ViewModelLayout``.
 
 
diff --git a/core/config/src/main/adoc/modules/config/pages/sections/isis.viewer.wicket.adoc b/core/config/src/main/adoc/modules/config/pages/sections/isis.viewer.wicket.adoc
index 3cc4dcf..3e26053 100644
--- a/core/config/src/main/adoc/modules/config/pages/sections/isis.viewer.wicket.adoc
+++ b/core/config/src/main/adoc/modules/config/pages/sections/isis.viewer.wicket.adoc
@@ -279,6 +279,14 @@ This can be overridden on a case-by-case basis using ``ActionLayout#promptStyle(
 
 
 |
+[[isis.viewer.wicket.j-query-version]]
+isis.viewer.wicket.j-query-version
+
+|  3
+| Which major JQuery version the _Wicket Viewer_ should use, default is 3. @see org.apache.wicket.resource.JQueryResourceReference
+
+
+|
 [[isis.viewer.wicket.live-reload-url]]
 isis.viewer.wicket.live-reload-url
 
diff --git a/tooling/cli/adoc/modules/tooling-cli/examples/isis-tooling.yml b/tooling/cli/adoc/modules/tooling-cli/examples/isis-tooling.yml
index 67e5e2e..6b266ed 100644
--- a/tooling/cli/adoc/modules/tooling-cli/examples/isis-tooling.yml
+++ b/tooling/cli/adoc/modules/tooling-cli/examples/isis-tooling.yml
@@ -41,15 +41,17 @@ commands:
       Bypass: "org.apache.isis.security:isis-security-bypass.*"
       Keycloak: "org.apache.isis.security:isis-security-keycloak.*"
       Shiro: "org.apache.isis.security:isis-security-shiro.*"
+      Spring: "org.apache.isis.security:isis-security-spring.*"
 
       Viewer: org.apache.isis.viewer
+      "Common": "org.apache.isis.viewer:isis-viewer-common.*"
       "Restful Objects": "org.apache.isis.viewer:isis-viewer-restfulobjects.*"
       Wicket: "org.apache.isis.viewer:isis-viewer-wicket.*"
 
       Valuetypes: org.apache.isis.valuetypes.*
       "Asciidoc": "org.apache.isis.valuetypes:isis-valuetypes-asciidoc.*"
       "Markdown": "org.apache.isis.valuetypes:isis-valuetypes-markdown.*"
-      "SSE": "org.apache.isis.valuetypes:isis-valuetypes-ssec.*"
+      "SSE": "org.apache.isis.valuetypes:isis-valuetypes-sse.*"
 
       Mappings: org.apache.isis.mappings
       #"Outbox Publisher": org.apache.isis.mappings:isis-mappings-jaxrsclient.*
@@ -62,7 +64,6 @@ commands:
       "Core: Command Log": "org.apache.isis.extensions:isis-extensions-command-log.*"
       "Core: Command Replay": "org.apache.isis.extensions:isis-extensions-command-replay.*"
       #"Core: Flyway": "org.apache.isis.extensions:isis-extensions-flyway.*"
-      "Core: Model Annotation": "org.apache.isis.extensions:isis-extensions-modelannotation.*"
       "Core: Quartz": "org.apache.isis.extensions:isis-extensions-quartz.*"
       #"Security: Audit Trail": "org.apache.isis.security:isis-extensions-audit-trail.*"
       "Security: Secman": "org.apache.isis.security:isis-extensions-secman.*"
@@ -93,8 +94,6 @@ commands:
       "JavaFX Viewer": "org.apache.isis.incubator.viewer:isis-viewer-javafx.*"
       "Vaadin Viewer": "org.apache.isis.incubator.viewer:isis-viewer-vaadin.*"
 
-      Legacy: org.apache.isis.legacy.*
-
   index:
 
     namespacePartsSkipCount: 3