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/03/05 08:06:48 UTC

[isis] 10/10: ISIS-2444 : regen index

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

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

commit 9ef3c10962ec843825616e36e01ab7bc3cd08f64
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Mar 5 08:05:57 2021 +0000

    ISIS-2444 : regen index
---
 .../modules/_overview/pages/about.adoc             |  33 +-----
 .../modules/applib/pages/index/Identifier.adoc     |  10 +-
 .../index/events/domain/AbstractDomainEvent.adoc   |  55 +++++++++-
 .../index/events/domain/ActionDomainEvent.adoc     |  47 +++-----
 .../index/events/domain/CollectionDomainEvent.adoc |  34 ++----
 .../index/events/domain/PropertyDomainEvent.adoc   |  16 ++-
 .../events/lifecycle/AbstractLifecycleEvent.adoc   |   2 +
 .../index/events/lifecycle/ObjectCreatedEvent.adoc |   2 +
 .../index/events/lifecycle/ObjectLoadedEvent.adoc  |   2 +
 .../events/lifecycle/ObjectPersistedEvent.adoc     |   2 +
 .../events/lifecycle/ObjectPersistingEvent.adoc    |   2 +
 .../events/lifecycle/ObjectRemovingEvent.adoc      |   2 +
 .../index/events/lifecycle/ObjectUpdatedEvent.adoc |   2 +
 .../events/lifecycle/ObjectUpdatingEvent.adoc      |   2 +
 .../pages/index/events/ui/CssClassUiEvent.adoc     |   9 +-
 .../applib/pages/index/events/ui/IconUiEvent.adoc  |   9 +-
 .../pages/index/events/ui/LayoutUiEvent.adoc       |   7 ++
 .../applib/pages/index/events/ui/TitleUiEvent.adoc |   9 +-
 .../HasLogicalType.adoc}                           |  16 ++-
 .../modules/applib/pages/index/id/LogicalType.adoc | 120 +++++++++++++++++++++
 .../modules/applib/pages/index/mixins/dto/Dto.adoc |   9 ++
 .../DtoMixinConstants.adoc}                        |   7 +-
 .../pages/index/mixins/dto/Dto_downloadXml.adoc    |   4 +
 .../pages/index/mixins/dto/Dto_downloadXsd.adoc    |  20 +++-
 .../layout/LayoutMixinConstants.adoc}              |   9 +-
 .../mixins/layout/Object_downloadLayoutXml.adoc    |   3 +
 .../index/mixins/layout/Object_openRestApi.adoc    |   3 +
 .../mixins/layout/Object_rebuildMetamodel.adoc     |   3 +
 .../security/HasUsername.adoc}                     |  24 +++--
 .../system}/DomainChangeRecord.adoc                |  14 +--
 .../DomainChangeRecord_openTargetObject.adoc}      |  17 ++-
 .../system/DomainChangeRecord~ChangeType.adoc}     |  14 ++-
 .../system/HasInteractionId.adoc}                  |  23 ++--
 .../index/mixins/system/HasTransactionId.adoc      |  31 ++++++
 .../updates/OnUpdatedAt.adoc}                      |  11 +-
 .../updates/OnUpdatedBy.adoc}                      |  16 ++-
 .../updates/OnUpdatedByAndAt.adoc}                 |  10 +-
 .../services/appfeat/ApplicationFeatureId.adoc     | 105 ++++++++++++++++++
 .../appfeat/ApplicationFeatureRepository.adoc      |   8 +-
 .../appfeat/ApplicationFeatureSort.adoc}           |  43 ++++++--
 .../appfeat/ApplicationMemberSort.adoc}            |  12 ++-
 .../pages/index/services/bookmark/Bookmark.adoc    |  17 ++-
 .../index/services/confview/ConfigurationMenu.adoc |   4 +-
 .../confview/ConfigurationViewService.adoc         |   9 +-
 .../pages/index/services/iactn/Interaction.adoc    |  24 ++---
 .../pages/index/services/iactn/SequenceType.adoc   |  45 ++++++++
 .../services/publishing/spi/EntityChanges.adoc     |  16 +--
 .../pages/index/services/xactn/TransactionId.adoc  |  14 ++-
 .../impl/mixins/HasUniqueId_command.adoc           |   4 +-
 .../api/permission/ApplicationPermission.adoc      |   4 +-
 .../ApplicationPermissionRepository.adoc           |   7 +-
 .../mixins/Persistable_datanucleusIdLong.adoc      |   4 +
 .../mixins/Persistable_datanucleusVersionLong.adoc |   4 +
 .../Persistable_datanucleusVersionTimestamp.adoc   |   4 +
 .../mixins/Persistable_downloadJdoMetadata.adoc    |   2 +
 55 files changed, 699 insertions(+), 226 deletions(-)

diff --git a/antora/components/refguide-index/modules/_overview/pages/about.adoc b/antora/components/refguide-index/modules/_overview/pages/about.adoc
index 2701bf5..333266c 100644
--- a/antora/components/refguide-index/modules/_overview/pages/about.adoc
+++ b/antora/components/refguide-index/modules/_overview/pages/about.adoc
@@ -1244,7 +1244,7 @@ org.yaml:snakeyaml:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:commons:index/collections/Can.adoc[Can], xref:refguide:commons:index/collections/Cardinality.adoc[Cardinality], xref:refguide:commons:index/functional/Result.adoc[Result], xref:refguide:commons:index/having/HasUniqueId.adoc[HasUniqueId], xref:refguide:commons:index/having/HasUpdatedAt.adoc[HasUpdatedAt], xref:refguide:commons:index/having/HasUpdatedBy.adoc[HasUpdatedBy], xref:refguide:commons:index/having/HasUsername.adoc[HasUsername], xref:refguide:commons:index/resource/R [...]
+xref:refguide:commons:index/collections/Can.adoc[Can], xref:refguide:commons:index/collections/Cardinality.adoc[Cardinality], xref:refguide:commons:index/functional/Result.adoc[Result], xref:refguide:commons:index/resource/ResourceCoordinates.adoc[ResourceCoordinates]
 ****
 |===
 
@@ -1424,7 +1424,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)
@@ -3754,12 +3754,12 @@ skinparam {
 }
 hide stereotype
 left to right direction
-skinparam rectangle<<11>> {
+skinparam rectangle<<22>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<22>> {
+skinparam rectangle<<11>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
@@ -5842,30 +5842,7 @@ Artifact: isis-viewer-javafx-ui
 Type: jar
 Directory: /incubator/viewers/javafx/ui
 ----
-|.Components
-****
-o.a.i.incubator.viewer.javafx.ui.components.UiComponentFactoryFx +
-o.a.i.incubator.viewer.javafx.ui.components.markup.MarkupFieldFactory +
-o.a.i.incubator.viewer.javafx.ui.components.number.NumberFieldFactory +
-o.a.i.incubator.viewer.javafx.ui.components.objectref.ObjectReferenceFieldFactory +
-o.a.i.incubator.viewer.javafx.ui.components.other.FallbackFieldFactory +
-o.a.i.incubator.viewer.javafx.ui.components.temporal.TemporalFieldFactory +
-o.a.i.incubator.viewer.javafx.ui.components.text.TextFieldFactory +
-o.a.i.incubator.viewer.javafx.ui.decorator.disabling.DisablingDecoratorForButton +
-o.a.i.incubator.viewer.javafx.ui.decorator.disabling.DisablingDecoratorForFormField +
-o.a.i.incubator.viewer.javafx.ui.decorator.icon.IconDecoratorForLabeled +
-o.a.i.incubator.viewer.javafx.ui.decorator.icon.IconDecoratorForMenuItem +
-o.a.i.incubator.viewer.javafx.ui.decorator.icon.IconServiceDefault +
-o.a.i.incubator.viewer.javafx.ui.decorator.prototyping.PrototypingDecoratorForButton +
-o.a.i.incubator.viewer.javafx.ui.decorator.prototyping.PrototypingDecoratorForFormField +
-o.a.i.incubator.viewer.javafx.ui.decorator.prototyping.PrototypingInfoPopupProvider +
-o.a.i.incubator.viewer.javafx.ui.main.MainViewFx +
-o.a.i.incubator.viewer.javafx.ui.main.UiActionHandlerFx +
-o.a.i.incubator.viewer.javafx.ui.main.UiBuilderFx +
-o.a.i.incubator.viewer.javafx.ui.main.UiContextFxDefault +
-****
-
-.Dependencies
+|.Dependencies
 ****
 org.apache.isis.core:isis-core-runtimeservices:jar:<managed> +
 org.apache.isis.incubator.viewer:isis-viewer-javafx-model:jar:<managed> +
diff --git a/antora/components/refguide-index/modules/applib/pages/index/Identifier.adoc b/antora/components/refguide-index/modules/applib/pages/index/Identifier.adoc
index b448428..42b7e6a 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/Identifier.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/Identifier.adoc
@@ -1,7 +1,7 @@
 = Identifier
 :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 [...]
 
-Combines xref:refguide:applib:index/id/TypeIdentifier.adoc[TypeIdentifier] and member identification (from properties, collections or actions), to a fully qualified _feature_ identifier.
+Combines xref:refguide:applib:index/id/LogicalType.adoc[LogicalType] and member identification (from properties, collections or actions), to a fully qualified _feature_ identifier.
 
 For xref:refguide:applib:index/Identifier.adoc[Identifier] (s) of type _Identifier.Type#CLASS_ member information is left empty.
 
@@ -11,10 +11,10 @@ For xref:refguide:applib:index/Identifier.adoc[Identifier] (s) of type _Identifi
 .Identifier.java
 ----
 class Identifier {
-  Identifier classIdentifier(final TypeIdentifier typeIdentifier)
-  Identifier propertyOrCollectionIdentifier(final TypeIdentifier typeIdentifier, final String propertyOrCollectionName)
-  Identifier actionIdentifier(final TypeIdentifier typeIdentifier, final String actionName, final Class<?>... parameterClasses)
-  Identifier actionIdentifier(final TypeIdentifier typeIdentifier, final String actionName, final Can<String> parameterClassNames)
+  Identifier classIdentifier(final LogicalType typeIdentifier)
+  Identifier propertyOrCollectionIdentifier(final LogicalType typeIdentifier, final String propertyOrCollectionName)
+  Identifier actionIdentifier(final LogicalType typeIdentifier, final String actionName, final Class<?>... parameterClasses)
+  Identifier actionIdentifier(final LogicalType typeIdentifier, final String actionName, final Can<String> parameterClassNames)
   String getLogicalIdentityString(final String delimiter)
   String getClassNaturalName()
   String getMemberNaturalName()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/domain/AbstractDomainEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/domain/AbstractDomainEvent.adoc
index 656f2ee..0486927 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/domain/AbstractDomainEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/domain/AbstractDomainEvent.adoc
@@ -1,6 +1,12 @@
 = AbstractDomainEvent
 :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 [...]
 
+Superclass for all domain events that are raised by the framework when interacting with actions, properties or collections.
+
+The main purpose of the class is to define the protocol by which subscribers can influence an interaction (eg hide a collection, disable a property, validate action arguments).
+
+The class also provides a simple mechanism to allow adhoc sharing of user data between different phases.
+
 == API
 
 [source,java]
@@ -9,6 +15,7 @@
 class AbstractDomainEvent<S> {
   AbstractDomainEvent()     // <.>
   AbstractDomainEvent(final S source, final Identifier identifier)
+  S getSource()     // <.>
   void setMixedIn(final Object mixedIn)     // <.>
   Object getSubject()     // <.>
   void setEventPhase(Phase phase)     // <.>
@@ -33,6 +40,11 @@ class AbstractDomainEvent<S> {
 --
 If used then the framework will set state via (non-API) setters.
 --
+<.> xref:#getSource__[getSource()]
++
+--
+The domain object raising this event.
+--
 <.> xref:#setMixedIn__Object[setMixedIn(Object)]
 +
 --
@@ -54,10 +66,30 @@ Not API, set by the framework.
 Not API, set by the framework if the no-arg constructor is used.
 --
 <.> xref:#hide__[hide()]
++
+--
+API for subscribers to hide the member.
+--
 <.> xref:#disable__String[disable(String)]
++
+--
+API for subscribers to disable the member, specifying the reason why.
+--
 <.> xref:#disable__TranslatableString[disable(TranslatableString)]
++
+--
+API for subscribers to disable the member, specifying the reason why as a xref:refguide:applib:index/services/i18n/TranslatableString.adoc[TranslatableString] .
+--
 <.> xref:#invalidate__String[invalidate(String)]
++
+--
+API for subscribers to invalidate an interaction, eg invalid arguments to an action.
+--
 <.> xref:#invalidate__TranslatableString[invalidate(TranslatableString)]
++
+--
+API for subscribers to invalidate an interaction, specifying the reason as a xref:refguide:applib:index/services/i18n/TranslatableString.adoc[TranslatableString] .
+--
 <.> xref:#veto__String_Object[veto(String, Object)]
 +
 --
@@ -76,7 +108,7 @@ Obtain user-data, as set by a previous _#getEventPhase() phase_ .
 <.> xref:#put__Object_Object[put(Object, Object)]
 +
 --
-Set user-data, for the use of a subsequent _#getEventPhase() phase_ .
+Mechanism to allow subscribers to share arbitrary information between phases. One event instance is used for both the hide and disable phases, and a different event instance is shared between validate/pre-execute/post-execute. Set user-data, for the use of a subsequent _#getEventPhase() phase_ .
 --
 
 == Members
@@ -88,6 +120,15 @@ If used then the framework will set state via (non-API) setters.
 
 Because the xref:refguide:applib:index/events/EventObjectBase.adoc[EventObjectBase] superclass prohibits a null source, a dummy value is temporarily used.
 
+[#getSource__]
+=== getSource()
+
+The domain object raising this event.
+
+For a "regular" action, property or collection then this will be the target domain object.
+
+But for a "mixin" action, this will be an instance of the mixin itself.
+
 [#setMixedIn__Object]
 === setMixedIn(Object)
 
@@ -111,18 +152,28 @@ Not API, set by the framework if the no-arg constructor is used.
 [#hide__]
 === hide()
 
+API for subscribers to hide the member.
+
 [#disable__String]
 === disable(String)
 
+API for subscribers to disable the member, specifying the reason why.
+
 [#disable__TranslatableString]
 === disable(TranslatableString)
 
+API for subscribers to disable the member, specifying the reason why as a xref:refguide:applib:index/services/i18n/TranslatableString.adoc[TranslatableString] .
+
 [#invalidate__String]
 === invalidate(String)
 
+API for subscribers to invalidate an interaction, eg invalid arguments to an action.
+
 [#invalidate__TranslatableString]
 === invalidate(TranslatableString)
 
+API for subscribers to invalidate an interaction, specifying the reason as a xref:refguide:applib:index/services/i18n/TranslatableString.adoc[TranslatableString] .
+
 [#veto__String_Object]
 === veto(String, Object)
 
@@ -145,4 +196,4 @@ Obtain user-data, as set by a previous _#getEventPhase() phase_ .
 [#put__Object_Object]
 === put(Object, Object)
 
-Set user-data, for the use of a subsequent _#getEventPhase() phase_ .
+Mechanism to allow subscribers to share arbitrary information between phases. One event instance is used for both the hide and disable phases, and a different event instance is shared between validate/pre-execute/post-execute. Set user-data, for the use of a subsequent _#getEventPhase() phase_ .
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/domain/ActionDomainEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/domain/ActionDomainEvent.adoc
index c6afbc3..f039de0 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/domain/ActionDomainEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/domain/ActionDomainEvent.adoc
@@ -1,6 +1,17 @@
 = ActionDomainEvent
 :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 [...]
 
+Fired whenever the framework interacts with a domain object's action.
+
+This is the specialization of xref:refguide:applib:index/events/domain/AbstractDomainEvent.adoc[AbstractDomainEvent] , for actions, which should then be further subclassed by domain application.
+
+The class has a number of responsibilities (in addition to those it inherits):
+
+* capture the arguments for each of the action's parameters
+* provide selected metadata about the action parameters from the metamodel (names, types)
+
+The class itself is instantiated automatically by the framework using a no-arg constructor; fields are set reflectively.
+
 == API
 
 [source,java]
@@ -20,64 +31,40 @@ class ActionDomainEvent<S> {
 <.> xref:#ActionDomainEvent__[ActionDomainEvent()]
 +
 --
-If used then the framework will set state via (non-API) setters.
+Subtypes can define a no-arg constructor; the framework sets state via (non-API) setters.
 --
 <.> xref:#setReturnValue__Object[setReturnValue(Object)]
 +
 --
-Set by the framework. Event subscribers can replace the value with some other value if they wish, though only in the _AbstractDomainEvent.Phase#EXECUTED_ phase.
+Set by the framework.
 --
 <.> xref:#setSemantics__SemanticsOf[setSemantics(SemanticsOf)]
-+
---
-Not API - set by the framework.
---
 <.> xref:#setParameterNames__List[setParameterNames(List)]
-+
---
-Not API - set by the framework.
---
 <.> xref:#setParameterTypes__List[setParameterTypes(List)]
-+
---
-Not API - set by the framework.
---
 <.> xref:#setMixedIn__Object[setMixedIn(Object)]
-+
---
-Not API - set by the framework.
---
 
 == Members
 
 [#ActionDomainEvent__]
 === ActionDomainEvent()
 
-If used then the framework will set state via (non-API) setters.
-
-Recommended because it reduces the amount of boilerplate in the domain object classes.
+Subtypes can define a no-arg constructor; the framework sets state via (non-API) setters.
 
 [#setReturnValue__Object]
 === setReturnValue(Object)
 
-Set by the framework. Event subscribers can replace the value with some other value if they wish, though only in the _AbstractDomainEvent.Phase#EXECUTED_ phase.
+Set by the framework.
+
+Event subscribers can replace the value with some other value if they wish, though only in the _AbstractDomainEvent.Phase#EXECUTED_ phase.
 
 [#setSemantics__SemanticsOf]
 === setSemantics(SemanticsOf)
 
-Not API - set by the framework.
-
 [#setParameterNames__List]
 === setParameterNames(List)
 
-Not API - set by the framework.
-
 [#setParameterTypes__List]
 === setParameterTypes(List)
 
-Not API - set by the framework.
-
 [#setMixedIn__Object]
 === setMixedIn(Object)
-
-Not API - set by the framework.
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/domain/CollectionDomainEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/domain/CollectionDomainEvent.adoc
index 4a7733e..8dae20e 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/domain/CollectionDomainEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/domain/CollectionDomainEvent.adoc
@@ -1,6 +1,12 @@
 = CollectionDomainEvent
 :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 [...]
 
+Fired whenever the framework interacts with a domain object's collection.
+
+This is the specialization of xref:refguide:applib:index/events/domain/AbstractDomainEvent.adoc[AbstractDomainEvent] , for collections, * which should then be further subclassed by domain application. .
+
+The class itself is instantiated automatically by the framework using a no-arg constructor; fields are set reflectively.
+
 == API
 
 [source,java]
@@ -8,8 +14,6 @@
 ----
 class CollectionDomainEvent<S, T> {
   CollectionDomainEvent()     // <.>
-  void setValue(T value)     // <.>
-  void setOf(Of of)     // <.>
   String toString()
 }
 ----
@@ -17,17 +21,7 @@ class CollectionDomainEvent<S, T> {
 <.> xref:#CollectionDomainEvent__[CollectionDomainEvent()]
 +
 --
-If used then the framework will set state via (non-API) setters.
---
-<.> xref:#setValue__T[setValue(T)]
-+
---
-Not API, set by the framework.
---
-<.> xref:#setOf__Of[setOf(Of)]
-+
---
-Not API; updates from _Of#ACCESS_ to either _Of#ADD_TO_ or _Of#REMOVE_FROM_ when hits the _AbstractDomainEvent.Phase#VALIDATE validation phase_ .
+Subtypes can define a no-arg constructor; the framework sets state via (non-API) setters.
 --
 
 == Members
@@ -35,16 +29,4 @@ Not API; updates from _Of#ACCESS_ to either _Of#ADD_TO_ or _Of#REMOVE_FROM_ when
 [#CollectionDomainEvent__]
 === CollectionDomainEvent()
 
-If used then the framework will set state via (non-API) setters.
-
-Recommended because it reduces the amount of boilerplate in the domain object classes.
-
-[#setValue__T]
-=== setValue(T)
-
-Not API, set by the framework.
-
-[#setOf__Of]
-=== setOf(Of)
-
-Not API; updates from _Of#ACCESS_ to either _Of#ADD_TO_ or _Of#REMOVE_FROM_ when hits the _AbstractDomainEvent.Phase#VALIDATE validation phase_ .
+Subtypes can define a no-arg constructor; the framework sets state via (non-API) setters.
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/domain/PropertyDomainEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/domain/PropertyDomainEvent.adoc
index bd15f24..d7f7238 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/domain/PropertyDomainEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/domain/PropertyDomainEvent.adoc
@@ -1,6 +1,16 @@
 = PropertyDomainEvent
 :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 [...]
 
+Fired whenever the framework interacts with a domain object's property.
+
+This is the specialization of xref:refguide:applib:index/events/domain/AbstractDomainEvent.adoc[AbstractDomainEvent] , for properties, * which should then be further subclassed by domain application.
+
+The class has a number of responsibilities (in addition to those it inherits):
+
+* capture the old and new values of the property
+
+The class itself is instantiated automatically by the framework using a no-arg constructor; fields are set reflectively.
+
 == API
 
 [source,java]
@@ -15,7 +25,7 @@ class PropertyDomainEvent<S, T> {
 <.> xref:#PropertyDomainEvent__[PropertyDomainEvent()]
 +
 --
-If used then the framework will set state via (non-API) setters.
+Subtypes can define a no-arg constructor; the framework sets state via (non-API) setters.
 --
 
 == Members
@@ -23,6 +33,4 @@ If used then the framework will set state via (non-API) setters.
 [#PropertyDomainEvent__]
 === PropertyDomainEvent()
 
-If used then the framework will set state via (non-API) setters.
-
-Recommended because it reduces the amount of boilerplate in the domain object classes.
+Subtypes can define a no-arg constructor; the framework sets state via (non-API) setters.
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/AbstractLifecycleEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/AbstractLifecycleEvent.adoc
index 001cdfe..55839b1 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/AbstractLifecycleEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/AbstractLifecycleEvent.adoc
@@ -1,6 +1,8 @@
 = AbstractLifecycleEvent
 :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 [...]
 
+Superclass for all lifecycle events that are raised by the framework when loading, saving, updating or deleting objects from the database.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectCreatedEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectCreatedEvent.adoc
index db18d3f..58edd87 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectCreatedEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectCreatedEvent.adoc
@@ -1,6 +1,8 @@
 = ObjectCreatedEvent
 :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 [...]
 
+Broadcast when an object (entiy or view model) is first instantiated using the _org.apache.isis.applib.services.factory.FactoryService_ .
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc
index 7260199..0e11712 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc
@@ -1,6 +1,8 @@
 = ObjectLoadedEvent
 :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 [...]
 
+Broadcast when an entity is retrieved from the database.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectPersistedEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectPersistedEvent.adoc
index 1f7a3b2..df581b1 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectPersistedEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectPersistedEvent.adoc
@@ -1,6 +1,8 @@
 = ObjectPersistedEvent
 :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 [...]
 
+Broadcast when an entity is first saved (inserted) into the database either explicitly using the _org.apache.isis.applib.services.repository.RepositoryService_ , or implicitly, for example due to persistence-by-reachability or similar persistence mechanisms.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectPersistingEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectPersistingEvent.adoc
index abf8b50..3ba1ce9 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectPersistingEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectPersistingEvent.adoc
@@ -1,6 +1,8 @@
 = ObjectPersistingEvent
 :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 [...]
 
+Broadcast when an entity is about to be saved (inserted) into the database either explicitly using the _org.apache.isis.applib.services.repository.RepositoryService_ , or implicitly, for example due to persistence-by-reachability or similar persistence mechanisms.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectRemovingEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectRemovingEvent.adoc
index f7bfa79..24a018d 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectRemovingEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectRemovingEvent.adoc
@@ -1,6 +1,8 @@
 = ObjectRemovingEvent
 :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 [...]
 
+Broadcast when an entity is about to be removed (deleted) into the database either explicitly using the _org.apache.isis.applib.services.repository.RepositoryService_ , or implicitly, for example due to cascade delete or similar persistence mechanisms.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectUpdatedEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectUpdatedEvent.adoc
index ee8ce80..ba1d9ca 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectUpdatedEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectUpdatedEvent.adoc
@@ -1,6 +1,8 @@
 = ObjectUpdatedEvent
 :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 [...]
 
+Broadcast when an entity has just been updated in the database, usually as the result of the ORM dirty tracking mechanisms.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectUpdatingEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectUpdatingEvent.adoc
index 5a4d97c..d53eedb 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectUpdatingEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectUpdatingEvent.adoc
@@ -1,6 +1,8 @@
 = ObjectUpdatingEvent
 :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 [...]
 
+Broadcast when an entity is about to be updated in the database, usually as the result of the ORM dirty tracking mechanisms.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/ui/CssClassUiEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/ui/CssClassUiEvent.adoc
index 860c7df..02ea467 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/ui/CssClassUiEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/ui/CssClassUiEvent.adoc
@@ -1,7 +1,14 @@
 = CssClassUiEvent
 :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 [...]
 
-Emitted for subscribers to obtain a cssClass hint (equivalent to the `cssClass()` supporting method or the _DomainObjectLayout#cssClass()_ attribute).
+Emitted for subscribers to provide a cssClass hint (equivalent to the `cssClass()` supporting method or the _DomainObjectLayout#cssClass()_ element).
+
+The class has a number of responsibilities:
+
+* capture the target object being interacted with
+* capture the CSS class, if any, as specified to one of the subscribers
+
+The class itself is instantiated automatically by the framework.
 
 == API
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/ui/IconUiEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/ui/IconUiEvent.adoc
index 5e84c61..a377408 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/ui/IconUiEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/ui/IconUiEvent.adoc
@@ -1,7 +1,14 @@
 = IconUiEvent
 :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 [...]
 
-Emitted for subscribers to obtain a cssClass hint (equivalent to the `iconName()` supporting method).
+Emitted for subscribers to provide a cssClass hint (equivalent to the `iconName()` supporting method).* If the domain object defines its own xref:refguide:applib-methods:reserved.adoc#iconName[iconName()] supporting method, or if it has the xref:refguide:applib:index/annotation/DomainObjectLayout.adoc#cssClassFa[@DomainObjectLayout#cssClassFa()] attribute, then these will take precedence.
+
+The class has a number of responsibilities:
+
+* capture the target object being interacted with
+* capture the icon (name), if any, as specified to one of the subscribers
+
+The class itself is instantiated automatically by the framework.
 
 == API
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/ui/LayoutUiEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/ui/LayoutUiEvent.adoc
index ffb2642..bf734038 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/ui/LayoutUiEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/ui/LayoutUiEvent.adoc
@@ -3,6 +3,13 @@
 
 Emitted for subscribers to obtain a layout hint (equivalent to the `layout()` supporting method).
 
+The class has a number of responsibilities:
+
+* capture the target object being interacted with
+* capture the layout, if any, as specified to one of the subscribers
+
+The class itself is instantiated automatically by the framework.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/ui/TitleUiEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/events/ui/TitleUiEvent.adoc
index 4582567..b454187 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/ui/TitleUiEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/events/ui/TitleUiEvent.adoc
@@ -1,7 +1,14 @@
 = TitleUiEvent
 :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 [...]
 
-Emitted for subscribers to obtain a cssClass hint (equivalent to the `title()` supporting method).
+Emitted for subscribers to obtain a title hint (equivalent to the `title()` supporting method).
+
+The class has a number of responsibilities:
+
+* capture the target object being interacted with
+* capture the title, if any, as specified to one of the subscribers
+
+The class itself is instantiated automatically by the framework.
 
 == API
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/id/HasLogicalType.adoc
similarity index 74%
copy from antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc
copy to antora/components/refguide-index/modules/applib/pages/index/id/HasLogicalType.adoc
index 7260199..326758d 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/id/HasLogicalType.adoc
@@ -1,14 +1,20 @@
-= ObjectLoadedEvent
+= HasLogicalType _(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]
-.ObjectLoadedEvent.java
+.HasLogicalType.java
 ----
-class ObjectLoadedEvent<S> {
-  ObjectLoadedEvent()
-  ObjectLoadedEvent(final S source)
+interface HasLogicalType {
+  LogicalType getLogicalType()
+  String getLogicalTypeName()     // <.>
 }
 ----
 
+<.> xref:#getLogicalTypeName__[getLogicalTypeName()]
+
+== Members
+
+[#getLogicalTypeName__]
+=== getLogicalTypeName()
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
new file mode 100644
index 0000000..c903813
--- /dev/null
+++ b/antora/components/refguide-index/modules/applib/pages/index/id/LogicalType.adoc
@@ -0,0 +1,120 @@
+= LogicalType
+: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 generalization of Java's class type to also hold a logical name, which can be supplied lazily.
+
+Equality is driven by the corresponding class exclusively, meaning the logical name is ignored in order to not cause any side-effects on logical name memoization eg. it happening too early.
+
+Meta-model validators will take care, that there is no logical name ambiguity: There cannot be any LogicalTypes sharing the same corresponding class while having different logical names.
+
+== API
+
+[source,java]
+.LogicalType.java
+----
+class LogicalType {
+  LogicalType lazy(final Class<?> correspondingClass, final Supplier<String> logicalNameProvider)     // <.>
+  LogicalType eager(final Class<?> correspondingClass, final String logicalName)     // <.>
+  LogicalType fqcn(final Class<?> correspondingClass)     // <.>
+  String getClassName()     // <.>
+  String getLogicalTypeName()     // <.>
+  String getLogicalTypeSimpleName()     // <.>
+  String getNamespace()     // <.>
+  String getLogicalTypeNameFormatted(final String root, final String delimiter)     // <.>
+  boolean equals(final Object obj)
+  boolean isEqualTo(final LogicalType other)
+  int hashCode()
+  int compareTo(final LogicalType other)
+}
+----
+
+<.> xref:#lazy__Class_Supplier[lazy(Class, Supplier)]
++
+--
+Returns a new TypeIdentifier based on the corresponding class and a _logicalNameProvider_ for lazy logical name lookup.
+--
+<.> xref:#eager__Class_String[eager(Class, String)]
++
+--
+Returns a new TypeIdentifier based on the corresponding class and (ahead of time) known _logicalName_ .
+--
+<.> xref:#fqcn__Class[fqcn(Class)]
++
+--
+Use the corresponding class's fully qualified name for the _logicalName_ . Most likely used in testing scenarios.
+--
+<.> xref:#getClassName__[getClassName()]
++
+--
+Canonical name of the corresponding class.
+--
+<.> xref:#getLogicalTypeName__[getLogicalTypeName()]
++
+--
+Returns the (unique) logical-type-name, as per the _ObjectSpecIdFacet_ .
+--
+<.> xref:#getLogicalTypeSimpleName__[getLogicalTypeSimpleName()]
++
+--
+The logical type name consists of 2 parts, the _namespace_ and the _logical simple name_ .
+--
+<.> xref:#getNamespace__[getNamespace()]
++
+--
+The logical type name consists of 2 parts, the _namespace_ and the _logical simple name_ .
+--
+<.> xref:#getLogicalTypeNameFormatted__String_String[getLogicalTypeNameFormatted(String, String)]
++
+--
+The logical type name consists of 2 parts, the _namespace_ and the _logical simple name_ . Returns a concatenation of _namespace_ , _delimiter_ and the _logical simple name_ , whereas in the absence of a _namespace_ returns a concatenation of _root_ and the _logical simple name_ .
+--
+
+== Members
+
+[#lazy__Class_Supplier]
+=== lazy(Class, Supplier)
+
+Returns a new TypeIdentifier based on the corresponding class and a _logicalNameProvider_ for lazy logical name lookup.
+
+[#eager__Class_String]
+=== eager(Class, String)
+
+Returns a new TypeIdentifier based on the corresponding class and (ahead of time) known _logicalName_ .
+
+[#fqcn__Class]
+=== fqcn(Class)
+
+Use the corresponding class's fully qualified name for the _logicalName_ . Most likely used in testing scenarios.
+
+[#getClassName__]
+=== getClassName()
+
+Canonical name of the corresponding class.
+
+[#getLogicalTypeName__]
+=== getLogicalTypeName()
+
+Returns the (unique) logical-type-name, as per the _ObjectSpecIdFacet_ .
+
+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.
+
+[#getLogicalTypeSimpleName__]
+=== getLogicalTypeSimpleName()
+
+The logical type name consists of 2 parts, the _namespace_ and the _logical simple name_ .
+
+Returns the _logical simple name_ part.
+
+[#getNamespace__]
+=== getNamespace()
+
+The logical type name consists of 2 parts, the _namespace_ and the _logical simple name_ .
+
+Returns the _namespace_ part.
+
+[#getLogicalTypeNameFormatted__String_String]
+=== getLogicalTypeNameFormatted(String, String)
+
+The logical type name consists of 2 parts, the _namespace_ and the _logical simple name_ . Returns a concatenation of _namespace_ , _delimiter_ and the _logical simple name_ , whereas in the absence of a _namespace_ returns a concatenation of _root_ and the _logical simple name_ .
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto.adoc
index 955735a..61df241 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto.adoc
@@ -1,6 +1,14 @@
 = Dto _(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 [...]
 
+Allows JAXB-annotated view models to act as a mixee in order that other modules (and the core framework) can contribute behaviour.
+
+A JAXB view model is one annotated with _javax.xml.bind.annotation.XmlRootElement_ .
+
+The two mixin behaviours contributed by the core framework are the ability to download the view model as XML (using xref:refguide:applib:index/mixins/dto/Dto_downloadXml.adoc[Dto_downloadXml] ) and to download the XSD schema for that XML (using xref:refguide:applib:index/mixins/dto/Dto_downloadXsd.adoc[Dto_downloadXsd] ).
+
+The interface is just a marker interface (with no members).
+
 == API
 
 [source,java]
@@ -10,3 +18,4 @@ interface Dto {
 }
 ----
 
+include::hooks/Dto_see-also.adoc[]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/MixinConstants.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/DtoMixinConstants.adoc
similarity index 88%
rename from antora/components/refguide-index/modules/applib/pages/index/mixins/MixinConstants.adoc
rename to antora/components/refguide-index/modules/applib/pages/index/mixins/dto/DtoMixinConstants.adoc
index 7514082..cfc34bd 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/MixinConstants.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/DtoMixinConstants.adoc
@@ -1,13 +1,12 @@
-= MixinConstants
+= DtoMixinConstants
 :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]
-.MixinConstants.java
+.DtoMixinConstants.java
 ----
-class MixinConstants {
-  public static final String METADATA_LAYOUT_GROUPNAME;
+class DtoMixinConstants {
   public static final String FILENAME_PROPERTY_NAME;
   public static final String FILENAME_PROPERTY_DESCRIPTION;
 }
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXml.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXml.adoc
index eba4f41..1c28cd8 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXml.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXml.adoc
@@ -1,6 +1,10 @@
 = Dto_downloadXml
 :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 [...]
 
+Mixin that provides the ability to download a view model as XML.
+
+Requires that the view model is a JAXB view model, and implements the xref:refguide:applib:index/mixins/dto/Dto.adoc[Dto] marker interface.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXsd.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXsd.adoc
index cd483db..e468692 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXsd.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/dto/Dto_downloadXsd.adoc
@@ -1,6 +1,12 @@
 = Dto_downloadXsd
 :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 [...]
 
+Mixin that provides the ability to download the XSD schema for a view model can be downloaded as XML.
+
+Requires that the view model is a JAXB view model, and implements the xref:refguide:applib:index/mixins/dto/Dto.adoc[Dto] marker interface.
+
+If the domain object's JAXB annotations reference only a single XSD schema then this will return that XML text as a xref:refguide:applib:index/value/Clob.adoc[Clob] of that XSD. If there are multiple XSD schemas referenced then the action will return a zip of those schemas, wrapped up in a xref:refguide:applib:index/value/Blob.adoc[Blob] .
+
 == API
 
 [source,java]
@@ -11,9 +17,21 @@ class Dto_downloadXsd {
 MessageService messageService;
   @Inject
 JaxbService jaxbService;
-  Object act(final String fileName, final IsisSchemas isisSchemas)
+  Object act(final String fileName, final IsisSchemas isisSchemas)     // <.>
   String default0Act()
   IsisSchemas default1Act()
 }
 ----
 
+<.> xref:#act__String_IsisSchemas[act(String, IsisSchemas)]
++
+--
+The _IsisSchemas_ parameter can be used to optionally ignore the common Apache Isis schemas; useful if there is only one other XSD schema referenced by the DTO.
+--
+
+== Members
+
+[#act__String_IsisSchemas]
+=== act(String, IsisSchemas)
+
+The _IsisSchemas_ parameter can be used to optionally ignore the common Apache Isis schemas; useful if there is only one other XSD schema referenced by the DTO.
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/LayoutMixinConstants.adoc
similarity index 85%
copy from antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc
copy to antora/components/refguide-index/modules/applib/pages/index/mixins/layout/LayoutMixinConstants.adoc
index 7260199..0ba5c30 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/LayoutMixinConstants.adoc
@@ -1,14 +1,13 @@
-= ObjectLoadedEvent
+= LayoutMixinConstants
 :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]
-.ObjectLoadedEvent.java
+.LayoutMixinConstants.java
 ----
-class ObjectLoadedEvent<S> {
-  ObjectLoadedEvent()
-  ObjectLoadedEvent(final S source)
+class LayoutMixinConstants {
+  public static final String METADATA_LAYOUT_GROUPNAME;
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_downloadLayoutXml.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_downloadLayoutXml.adoc
index c690555..7ea956c 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_downloadLayoutXml.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_downloadLayoutXml.adoc
@@ -1,6 +1,8 @@
 = Object_downloadLayoutXml
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Provides a mixin to download the layout XML for any domain object.
+
 == API
 
 [source,java]
@@ -15,3 +17,4 @@ LayoutService layoutService;
 }
 ----
 
+include::hooks/Object_downloadLayoutXml_see-also.adoc[]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_openRestApi.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_openRestApi.adoc
index 46d67cc..e1749cb 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_openRestApi.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_openRestApi.adoc
@@ -1,6 +1,8 @@
 = Object_openRestApi
 :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 navigate to the corresponding URL of this domain object in the REST API provided by the _Restful Objects_ viewer.
+
 == API
 
 [source,java]
@@ -15,3 +17,4 @@ RestfulPathProvider restfulPathProvider;
 }
 ----
 
+include::hooks/Object_openRestApi_see-also.adoc[]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_rebuildMetamodel.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_rebuildMetamodel.adoc
index 5c88115..bd41993 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_rebuildMetamodel.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_rebuildMetamodel.adoc
@@ -1,6 +1,8 @@
 = Object_rebuildMetamodel
 :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 discard the current internal metamodel data for the domain class of the rendered object, and recreate from code and other sources (most notably, layout XML data).
+
 == API
 
 [source,java]
@@ -13,3 +15,4 @@ MetaModelService metaModelService;
 }
 ----
 
+include::hooks/Object_rebuildMetamodel_see-also.adoc[]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/RepresentsInteractionMemberExecution.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/security/HasUsername.adoc
similarity index 53%
rename from antora/components/refguide-index/modules/applib/pages/index/services/RepresentsInteractionMemberExecution.adoc
rename to antora/components/refguide-index/modules/applib/pages/index/mixins/security/HasUsername.adoc
index faba1dd..8a78914 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/RepresentsInteractionMemberExecution.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/security/HasUsername.adoc
@@ -1,17 +1,29 @@
-= RepresentsInteractionMemberExecution _(interface)_
+= HasUsername _(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 [...]
 
-Extends xref:refguide:commons:index/having/HasUniqueId.adoc[HasUniqueId] , where the _HasUniqueId#getUniqueId()_ is interpreted as an interaction (cf _InteractionDto_ ) that has at least one member execution (cf _MemberExecutionDto_ ) and may (by way of xref:refguide:applib:index/services/wrapper/WrapperFactory.adoc[WrapperFactory] ) contain several.
+Allows domain objects that were created, updated or are otherwise associated with a named user to act as a mixee in order that other modules may contribute behaviour.
 
-Examples could include SPI services that persist published events and status messages.
+The xref:refguide:applib:index/mixins/updates/OnUpdatedBy.adoc[OnUpdatedBy] interface is for entities to be automatically updated by the framework when persisted.
 
 == API
 
 [source,java]
-.RepresentsInteractionMemberExecution.java
+.HasUsername.java
 ----
-interface RepresentsInteractionMemberExecution {
-  int getSequence()
+interface HasUsername {
+  String getUsername()     // <.>
 }
 ----
 
+<.> xref:#getUsername__[getUsername()]
++
+--
+The user that created, updated or is otherwise associated with this object.
+--
+
+== Members
+
+[#getUsername__]
+=== getUsername()
+
+The user that created, updated or is otherwise associated with this object.
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/DomainChangeRecord.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/system/DomainChangeRecord.adoc
similarity index 84%
rename from antora/components/refguide-index/modules/applib/pages/index/services/DomainChangeRecord.adoc
rename to antora/components/refguide-index/modules/applib/pages/index/mixins/system/DomainChangeRecord.adoc
index 199d915..75b3fd4 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/DomainChangeRecord.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/system/DomainChangeRecord.adoc
@@ -1,7 +1,7 @@
 = DomainChangeRecord _(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 [...]
 
-An abstraction of some sort of recorded change to a domain object: commands, audit entries or published events.
+Allows domain objects that represents some sort of recorded change to a domain object (commands, audit entries, published interactions) to act as a mixee in order that other modules can contribute behaviour.
 
 == API
 
@@ -10,7 +10,7 @@ An abstraction of some sort of recorded change to a domain object: commands, aud
 ----
 interface DomainChangeRecord {
   ChangeType getType()     // <.>
-  UUID getUniqueId()     // <.>
+  UUID getInteractionId()     // <.>
   String getUsername()     // <.>
   Timestamp getTimestamp()     // <.>
   String getTargetObjectType()     // <.>
@@ -26,10 +26,10 @@ interface DomainChangeRecord {
 --
 Distinguishes commands from audit entries from published events/interactions (when these are shown mixed together in a (standalone) table).
 --
-<.> xref:#getUniqueId__[getUniqueId()]
+<.> xref:#getInteractionId__[getInteractionId()]
 +
 --
-The unique identifier (a GUID) of the transaction in which this change occurred.
+The unique identifier (a GUID) of the _org.apache.isis.applib.services.iactn.Interaction_ within which this change occurred.
 --
 <.> xref:#getUsername__[getUsername()]
 +
@@ -74,10 +74,10 @@ The value of the property after it has changed.
 
 Distinguishes commands from audit entries from published events/interactions (when these are shown mixed together in a (standalone) table).
 
-[#getUniqueId__]
-=== getUniqueId()
+[#getInteractionId__]
+=== getInteractionId()
 
-The unique identifier (a GUID) of the transaction in which this change occurred.
+The unique identifier (a GUID) of the _org.apache.isis.applib.services.iactn.Interaction_ within which this change occurred.
 
 [#getUsername__]
 === getUsername()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_openRestApi.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/system/DomainChangeRecord_openTargetObject.adoc
similarity index 56%
copy from antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_openRestApi.adoc
copy to antora/components/refguide-index/modules/applib/pages/index/mixins/system/DomainChangeRecord_openTargetObject.adoc
index 46d67cc..064aeb8 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/mixins/layout/Object_openRestApi.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/system/DomainChangeRecord_openTargetObject.adoc
@@ -1,17 +1,24 @@
-= Object_openRestApi
+= DomainChangeRecord_openTargetObject
 :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 navigate to a domain object from a xref:refguide:applib:index/mixins/system/DomainChangeRecord.adoc[DomainChangeRecord] which only holds the domain object by way of a _DomainChangeRecord#getTarget() target_ _org.apache.isis.applib.services.bookmark.Bookmark_ .
+
 == API
 
 [source,java]
-.Object_openRestApi.java
+.DomainChangeRecord_openTargetObject.java
 ----
-class Object_openRestApi {
+class DomainChangeRecord_openTargetObject {
   @Inject
 BookmarkService bookmarkService;
   @Inject
-RestfulPathProvider restfulPathProvider;
-  LocalResourcePath act()
+MessageService messageService;
+  @Inject
+MetaModelService metaModelService;
+  DomainChangeRecord_openTargetObject(DomainChangeRecord domainChangeRecord)
+  Object openTargetObject()
+  boolean hideOpenTargetObject()
+  String disableOpenTargetObject()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/system/DomainChangeRecord~ChangeType.adoc
similarity index 78%
copy from antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc
copy to antora/components/refguide-index/modules/applib/pages/index/mixins/system/DomainChangeRecord~ChangeType.adoc
index 7260199..b644fe0 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/system/DomainChangeRecord~ChangeType.adoc
@@ -1,14 +1,18 @@
-= ObjectLoadedEvent
+= DomainChangeRecord.ChangeType _(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 [...]
 
+Enumerates the different types of changes recognised.
+
 == API
 
 [source,java]
-.ObjectLoadedEvent.java
+.DomainChangeRecord~ChangeType.java
 ----
-class ObjectLoadedEvent<S> {
-  ObjectLoadedEvent()
-  ObjectLoadedEvent(final S source)
+enum ChangeType {
+  COMMAND
+  AUDIT_ENTRY
+  PUBLISHED_INTERACTION
+  String toString()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/domain/PropertyDomainEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/system/HasInteractionId.adoc
similarity index 60%
copy from antora/components/refguide-index/modules/applib/pages/index/events/domain/PropertyDomainEvent.adoc
copy to antora/components/refguide-index/modules/applib/pages/index/mixins/system/HasInteractionId.adoc
index bd15f24..0540eee 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/domain/PropertyDomainEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/system/HasInteractionId.adoc
@@ -1,28 +1,29 @@
-= PropertyDomainEvent
+= HasInteractionId _(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 [...]
 
+Allows domain objects that represent or are associated with a system xref:refguide:applib:index/services/iactn/Interaction.adoc[Interaction] to act as a mixee in order that other modules can contribute behaviour.
+
 == API
 
 [source,java]
-.PropertyDomainEvent.java
+.HasInteractionId.java
 ----
-class PropertyDomainEvent<S, T> {
-  PropertyDomainEvent()     // <.>
-  String toString()
+interface HasInteractionId {
+  UUID getInteractionId()     // <.>
 }
 ----
 
-<.> xref:#PropertyDomainEvent__[PropertyDomainEvent()]
+<.> xref:#getInteractionId__[getInteractionId()]
 +
 --
-If used then the framework will set state via (non-API) setters.
+A unique identifier (a GUID).
 --
 
 == Members
 
-[#PropertyDomainEvent__]
-=== PropertyDomainEvent()
+[#getInteractionId__]
+=== getInteractionId()
 
-If used then the framework will set state via (non-API) setters.
+A unique identifier (a GUID).
 
-Recommended because it reduces the amount of boilerplate in the domain object classes.
+include::hooks/HasInteractionId_see-also.adoc[]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/mixins/system/HasTransactionId.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/system/HasTransactionId.adoc
new file mode 100644
index 0000000..ccbe858
--- /dev/null
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/system/HasTransactionId.adoc
@@ -0,0 +1,31 @@
+= HasTransactionId _(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 [...]
+
+Extends xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] to add a strictly monotonically increasing sequence number so that each transaction within the overall _org.apache.isis.applib.services.iactn.Interaction_ has its own unique identity.
+
+In the vast majority of cases there will only be a single transaction per _org.apache.isis.applib.services.iactn.Interaction_ , but this isn't _always_ the case as domain objects may on occasion need to explicitly manage transaction boundaries using _org.apache.isis.applib.services.xactn.TransactionService_ .
+
+== API
+
+[source,java]
+.HasTransactionId.java
+----
+interface HasTransactionId {
+  int getSequence()     // <.>
+}
+----
+
+<.> xref:#getSequence__[getSequence()]
++
+--
+Holds the sequence number uniquely identifying the transaction number within the overall _org.apache.isis.applib.services.iactn.Interaction_ .
+--
+
+== Members
+
+[#getSequence__]
+=== getSequence()
+
+Holds the sequence number uniquely identifying the transaction number within the overall _org.apache.isis.applib.services.iactn.Interaction_ .
+
+The values in this sequence are ultimately obtained from the non-API method _org.apache.isis.applib.services.iactn.Interaction#next(SequenceType)_ , with a xref:refguide:applib:index/services/iactn/SequenceType.adoc[SequenceType] of _SequenceType#TRANSACTION_ .
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/updates/OnUpdatedAt.adoc
similarity index 73%
copy from antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc
copy to antora/components/refguide-index/modules/applib/pages/index/mixins/updates/OnUpdatedAt.adoc
index 7260199..219519c 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/updates/OnUpdatedAt.adoc
@@ -1,14 +1,15 @@
-= ObjectLoadedEvent
+= OnUpdatedAt _(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 [...]
 
+Allows domain entities that keep track of when they were updated to be called by the (framework-provided) `TimestampService` whenever modified in a transaction.
+
 == API
 
 [source,java]
-.ObjectLoadedEvent.java
+.OnUpdatedAt.java
 ----
-class ObjectLoadedEvent<S> {
-  ObjectLoadedEvent()
-  ObjectLoadedEvent(final S source)
+interface OnUpdatedAt {
+  void setUpdatedAt(java.sql.Timestamp updatedAt)
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/confview/ConfigurationMenu.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/updates/OnUpdatedBy.adoc
similarity index 61%
copy from antora/components/refguide-index/modules/applib/pages/index/services/confview/ConfigurationMenu.adoc
copy to antora/components/refguide-index/modules/applib/pages/index/mixins/updates/OnUpdatedBy.adoc
index edb8a9c..edb9c9f 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/confview/ConfigurationMenu.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/updates/OnUpdatedBy.adoc
@@ -1,19 +1,17 @@
-= ConfigurationMenu
+= OnUpdatedBy _(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 [...]
 
-Simply provides a UI in order to access the configuration properties available from xref:refguide:applib:index/services/confview/ConfigurationViewService.adoc[ConfigurationViewService] .
+Allows domain entities that reference the user that updated them to be called by the (framework-provided) `TimestampService` whenever modified in a transaction with the current user.
+
+Note that this interface defines only a setter. The _org.apache.isis.applib.mixins.security.HasUsername_ can be used to expose this user name, allowing other modules to contribute behaviour to that mixee.
 
 == API
 
 [source,java]
-.ConfigurationMenu.java
+.OnUpdatedBy.java
 ----
-class ConfigurationMenu {
-  ConfigurationMenu(ConfigurationViewService configurationService)
-  Set<ConfigurationProperty> configuration()
+interface OnUpdatedBy {
+  void setUpdatedBy(String updatedBy)
 }
 ----
 
-include::hooks/ConfigurationMenu_010-implementation.adoc[]
-
-include::hooks/ConfigurationMenu_020-examples-and-usage.adoc[]
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/mixins/updates/OnUpdatedByAndAt.adoc
similarity index 73%
copy from antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc
copy to antora/components/refguide-index/modules/applib/pages/index/mixins/updates/OnUpdatedByAndAt.adoc
index 7260199..ac6fab5 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/mixins/updates/OnUpdatedByAndAt.adoc
@@ -1,14 +1,14 @@
-= ObjectLoadedEvent
+= OnUpdatedByAndAt _(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 [...]
 
+Combines xref:refguide:applib:index/mixins/updates/OnUpdatedBy.adoc[OnUpdatedBy] and xref:refguide:applib:index/mixins/updates/OnUpdatedAt.adoc[OnUpdatedAt] , as these are often implemented together.
+
 == API
 
 [source,java]
-.ObjectLoadedEvent.java
+.OnUpdatedByAndAt.java
 ----
-class ObjectLoadedEvent<S> {
-  ObjectLoadedEvent()
-  ObjectLoadedEvent(final S source)
+interface OnUpdatedByAndAt {
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureId.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureId.adoc
new file mode 100644
index 0000000..23b305d
--- /dev/null
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureId.adoc
@@ -0,0 +1,105 @@
+= ApplicationFeatureId
+: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 [...]
+
+Value type representing a namespace, type or member.
+
+This value is _Comparable_ , the implementation of which considers _#getSort() (feature) sort_ , _#getNamespace() namespace_ , _#getTypeSimpleName() type simple name_ and _#getMemberName() member name_ .
+
+== API
+
+[source,java]
+.ApplicationFeatureId.java
+----
+class ApplicationFeatureId {
+  public static final ApplicationFeatureId NAMESPACE_DEFAULT;
+  @Getter
+@NonNull
+final ApplicationFeatureSort sort;
+  ApplicationFeatureId fromIdentifier(final Identifier identifier)
+  ApplicationFeatureId newFeature(final ApplicationFeatureSort featureSort, final String qualifiedName)
+  ApplicationFeatureId newFeature(final String namespace, final String logicalTypeSimpleName, final String memberName)
+  ApplicationFeatureId newNamespace(final String namespace)
+  ApplicationFeatureId newType(final String logicalTypeName)
+  ApplicationFeatureId newMember(final String logicalTypeName, final String memberName)
+  ApplicationFeatureId newMember(String fullyQualifiedName)
+  String title()     // <.>
+  ApplicationFeatureId getParentTypeFeatureId()     // <.>
+  String getFullyQualifiedName()
+  String getLogicalTypeName()
+  ApplicationFeatureId getParentNamespaceFeatureId()     // <.>
+  String stringify()
+  ApplicationFeatureId parse(final String stringified)     // <.>
+  String asEncodedString()
+  ApplicationFeatureId parseEncoded(final String encodedString)     // <.>
+  Can<ApplicationFeatureId> getPathIds()
+  Can<ApplicationFeatureId> getParentFeatureIds()
+  int compareTo(final ApplicationFeatureId other)
+  boolean equals(final Object o)
+  int hashCode()
+  String toString()
+  ApplicationFeatureId withNamespace(final String namespace)     // <.>
+}
+----
+
+<.> xref:#title__[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
+--
+<.> xref:#getParentTypeFeatureId__[getParentTypeFeatureId()]
++
+--
+The xref:refguide:applib:index/services/appfeat/ApplicationFeatureId.adoc[ApplicationFeatureId] of the member's logical type.
+--
+<.> xref:#getParentNamespaceFeatureId__[getParentNamespaceFeatureId()]
++
+--
+The xref:refguide:applib:index/services/appfeat/ApplicationFeatureId.adoc[ApplicationFeatureId] of the parent package of this class or package.
+--
+<.> xref:#parse__String[parse(String)]
++
+--
+Round-trip with _#stringify()_
+--
+<.> xref:#parseEncoded__String[parseEncoded(String)]
++
+--
+Round-trip with _#asEncodedString()_
+--
+<.> xref:#withNamespace__String[withNamespace(String)]
++
+--
+Returns a new instance that is a clone of this, except for the namespace, which is taken from the argument.
+--
+
+== Members
+
+[#title__]
+=== 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
+
+[#getParentTypeFeatureId__]
+=== getParentTypeFeatureId()
+
+The xref:refguide:applib:index/services/appfeat/ApplicationFeatureId.adoc[ApplicationFeatureId] of the member's logical type.
+
+[#getParentNamespaceFeatureId__]
+=== getParentNamespaceFeatureId()
+
+The xref:refguide:applib:index/services/appfeat/ApplicationFeatureId.adoc[ApplicationFeatureId] of the parent package of this class or package.
+
+[#parse__String]
+=== parse(String)
+
+Round-trip with _#stringify()_
+
+[#parseEncoded__String]
+=== parseEncoded(String)
+
+Round-trip with _#asEncodedString()_
+
+[#withNamespace__String]
+=== withNamespace(String)
+
+Returns a new instance that is a clone of this, except for the namespace, which is taken from the argument.
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureRepository.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureRepository.adoc
index 6738e90..c053956 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureRepository.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureRepository.adoc
@@ -9,11 +9,11 @@ Provides the access to string representations of the packages, classes and class
 .ApplicationFeatureRepository.java
 ----
 interface ApplicationFeatureRepository {
-  SortedSet<String> packageNames()
-  SortedSet<String> packageNamesContainingClasses(ApplicationMemberType memberType)
-  SortedSet<String> classNamesContainedIn(String packageFqn, ApplicationMemberType memberType)
+  SortedSet<String> namespaceNames()
+  SortedSet<String> classNamesContainedIn(String packageFqn, ApplicationMemberSort memberSort)
   SortedSet<String> classNamesRecursivelyContainedIn(String packageFqn)
-  SortedSet<String> memberNamesOf(String packageFqn, String className, ApplicationMemberType memberType)
+  SortedSet<String> memberNamesOf(String packageFqn, String className, ApplicationMemberSort memberSort)
+  Map<String, ApplicationFeatureId> getFeatureIdentifiersByName()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/domain/PropertyDomainEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureSort.adoc
similarity index 52%
copy from antora/components/refguide-index/modules/applib/pages/index/events/domain/PropertyDomainEvent.adoc
copy to antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureSort.adoc
index bd15f24..b5a1fb4 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/domain/PropertyDomainEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationFeatureSort.adoc
@@ -1,28 +1,51 @@
-= PropertyDomainEvent
+= ApplicationFeatureSort _(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 [...]
 
 == API
 
 [source,java]
-.PropertyDomainEvent.java
+.ApplicationFeatureSort.java
 ----
-class PropertyDomainEvent<S, T> {
-  PropertyDomainEvent()     // <.>
+enum ApplicationFeatureSort {
+  NAMESPACE     // <.>
+  TYPE     // <.>
+  MEMBER     // <.>
+  boolean isNamespace()
+  boolean isType()
+  boolean isMember()
   String toString()
 }
 ----
 
-<.> xref:#PropertyDomainEvent__[PropertyDomainEvent()]
+<.> xref:#NAMESPACE[NAMESPACE]
 +
 --
-If used then the framework will set state via (non-API) setters.
+logical namespace
+--
+<.> xref:#TYPE[TYPE]
++
+--
+_namespace + "." + typeSimpleName_ makes up the fully qualified logical type
+--
+<.> xref:#MEMBER[MEMBER]
++
+--
+_namespace + "." + typeSimpleName + "." + memberName_ makes up the fully qualified logical member
 --
 
 == Members
 
-[#PropertyDomainEvent__]
-=== PropertyDomainEvent()
+[#NAMESPACE]
+=== NAMESPACE
+
+logical namespace
+
+[#TYPE]
+=== TYPE
+
+_namespace + "." + typeSimpleName_ makes up the fully qualified logical type
 
-If used then the framework will set state via (non-API) setters.
+[#MEMBER]
+=== MEMBER
 
-Recommended because it reduces the amount of boilerplate in the domain object classes.
+_namespace + "." + typeSimpleName + "." + memberName_ makes up the fully qualified logical member
diff --git a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationMemberSort.adoc
similarity index 84%
copy from antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc
copy to antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationMemberSort.adoc
index 7260199..a1a7033 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/events/lifecycle/ObjectLoadedEvent.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/appfeat/ApplicationMemberSort.adoc
@@ -1,14 +1,16 @@
-= ObjectLoadedEvent
+= ApplicationMemberSort _(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 [...]
 
 == API
 
 [source,java]
-.ObjectLoadedEvent.java
+.ApplicationMemberSort.java
 ----
-class ObjectLoadedEvent<S> {
-  ObjectLoadedEvent()
-  ObjectLoadedEvent(final S source)
+enum ApplicationMemberSort {
+  PROPERTY
+  COLLECTION
+  ACTION
+  String toString()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/bookmark/Bookmark.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/bookmark/Bookmark.adoc
index 696a415..895548d 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/bookmark/Bookmark.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/bookmark/Bookmark.adoc
@@ -11,13 +11,14 @@ Analogous to the `RootOid` .
 .Bookmark.java
 ----
 class Bookmark {
-  Bookmark of(String objectType, String identifier)
+  Bookmark of(String logicalTypeName, String identifier)
   Optional<Bookmark> parse(String str)     // <.>
   OidDto toOidDto()
   Bookmark from(OidDto oidDto)
   String toString()     // <.>
   Bookmark withHintId(String hintId)
   String toStringUsingIdentifier(String id)
+  String getObjectType()     // <.>
 }
 ----
 
@@ -29,7 +30,12 @@ Round-trip with _#toString()_ representation.
 <.> xref:#toString__[toString()]
 +
 --
-The canonical form of the xref:refguide:applib:index/services/bookmark/Bookmark.adoc[Bookmark] , that is " _#getObjectType() objectType_ _#SEPARATOR_ _#getIdentifier()_ ".
+The canonical form of the xref:refguide:applib:index/services/bookmark/Bookmark.adoc[Bookmark] , that is " _#getLogicalTypeName() logical-type-name_ _#SEPARATOR_ _#getIdentifier()_ ".
+--
+<.> xref:#getObjectType__[getObjectType()]
++
+--
+Alias for _#getLogicalTypeName()_ .
 --
 
 == Members
@@ -42,6 +48,11 @@ Round-trip with _#toString()_ representation.
 [#toString__]
 === toString()
 
-The canonical form of the xref:refguide:applib:index/services/bookmark/Bookmark.adoc[Bookmark] , that is " _#getObjectType() objectType_ _#SEPARATOR_ _#getIdentifier()_ ".
+The canonical form of the xref:refguide:applib:index/services/bookmark/Bookmark.adoc[Bookmark] , that is " _#getLogicalTypeName() logical-type-name_ _#SEPARATOR_ _#getIdentifier()_ ".
 
 This is parseable by the _#parse(String)_ .
+
+[#getObjectType__]
+=== getObjectType()
+
+Alias for _#getLogicalTypeName()_ .
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 edb8a9c..0c64b66 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,8 +9,8 @@ Simply provides a UI in order to access the configuration properties available f
 .ConfigurationMenu.java
 ----
 class ConfigurationMenu {
-  ConfigurationMenu(ConfigurationViewService configurationService)
-  Set<ConfigurationProperty> configuration()
+  ConfigurationMenu(FactoryService factoryService)
+  ConfigurationViewmodel configuration()
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/confview/ConfigurationViewService.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/confview/ConfigurationViewService.adoc
index 81f495a..6205aa0 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/confview/ConfigurationViewService.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/confview/ConfigurationViewService.adoc
@@ -11,11 +11,12 @@ This is the backing service used by xref:refguide:applib:index/services/confview
 .ConfigurationViewService.java
 ----
 interface ConfigurationViewService {
-  Set<ConfigurationProperty> allProperties()     // <.>
+  Set<ConfigurationProperty> getVisibleConfigurationProperties()     // <.>
+  Set<ConfigurationProperty> getEnvironmentProperties()
 }
 ----
 
-<.> xref:#allProperties__[allProperties()]
+<.> xref:#getVisibleConfigurationProperties__[getVisibleConfigurationProperties()]
 +
 --
 Returns all properties, each as an instance of xref:refguide:applib:index/services/confview/ConfigurationProperty.adoc[ConfigurationProperty] (a view model). Mask sensitive values if required.
@@ -23,8 +24,8 @@ Returns all properties, each as an instance of xref:refguide:applib:index/servic
 
 == Members
 
-[#allProperties__]
-=== allProperties()
+[#getVisibleConfigurationProperties__]
+=== getVisibleConfigurationProperties()
 
 Returns all properties, each as an instance of xref:refguide:applib:index/services/confview/ConfigurationProperty.adoc[ConfigurationProperty] (a view model). Mask sensitive values if required.
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/iactn/Interaction.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/iactn/Interaction.adoc
index 53791ed..3b992ad 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/iactn/Interaction.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/iactn/Interaction.adoc
@@ -15,18 +15,18 @@ To confuse matters slightly, historically the xref:refguide:applib:index/service
 .Interaction.java
 ----
 interface Interaction {
-  UUID getUniqueId()     // <.>
+  UUID getInteractionId()     // <.>
   Command getCommand()     // <.>
   Execution<?, ?> getCurrentExecution()     // <.>
   Execution<?, ?> getPriorExecution()     // <.>
-  int next(final String sequenceId)     // <.>
+  int next(final SequenceType sequenceType)     // <.>
 }
 ----
 
-<.> xref:#getUniqueId__[getUniqueId()]
+<.> xref:#getInteractionId__[getInteractionId()]
 +
 --
-The unique identifier of this interaction (inherited from xref:refguide:commons:index/having/HasUniqueId.adoc[HasUniqueId] )
+The unique identifier of this interaction (inherited from xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] )
 --
 <.> xref:#getCommand__[getCommand()]
 +
@@ -43,18 +43,18 @@ The current (most recently pushed) xref:refguide:applib:index/services/iactn/Exe
 --
 The execution that preceded the current one.
 --
-<.> xref:#next__String[next(String)]
+<.> xref:#next__SequenceType[next(SequenceType)]
 +
 --
-Generates numbers in a named sequence. The name of the sequence can be arbitrary, though note that the framework also uses this capability to generate sequence numbers corresponding to the sequences enumerated by the xref:refguide:applib:index/services/iactn/Sequence.adoc[Sequence] enum.
+Framework use only: generates numbers for a named sequence type.
 --
 
 == Members
 
-[#getUniqueId__]
-=== getUniqueId()
+[#getInteractionId__]
+=== getInteractionId()
 
-The unique identifier of this interaction (inherited from xref:refguide:commons:index/having/HasUniqueId.adoc[HasUniqueId] )
+The unique identifier of this interaction (inherited from xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] )
 
 This can be used to correlate audit records and transactions happening as a consequence or within the interaction.
 
@@ -73,10 +73,10 @@ The current (most recently pushed) xref:refguide:applib:index/services/iactn/Exe
 
 The execution that preceded the current one.
 
-[#next__String]
-=== next(String)
+[#next__SequenceType]
+=== next(SequenceType)
 
-Generates numbers in a named sequence. The name of the sequence can be arbitrary, though note that the framework also uses this capability to generate sequence numbers corresponding to the sequences enumerated by the xref:refguide:applib:index/services/iactn/Sequence.adoc[Sequence] enum.
+Framework use only: generates numbers for a named sequence type.
 
 include::hooks/Interaction_010-implementation.adoc[]
 
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/iactn/SequenceType.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/iactn/SequenceType.adoc
new file mode 100644
index 0000000..f284970
--- /dev/null
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/iactn/SequenceType.adoc
@@ -0,0 +1,45 @@
+= SequenceType _(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 [...]
+
+Enumerates the different reasons for a sequence of occurrences within a single (top-level) xref:refguide:applib:index/services/iactn/Interaction.adoc[Interaction] .
+
+== API
+
+[source,java]
+.SequenceType.java
+----
+enum SequenceType {
+  EXECUTION     // <.>
+  TRANSACTION     // <.>
+  String id()
+}
+----
+
+<.> xref:#EXECUTION[EXECUTION]
++
+--
+Numbers the executions (an action invocation or property edit) within a given xref:refguide:applib:index/services/iactn/Interaction.adoc[Interaction] .
+--
+<.> xref:#TRANSACTION[TRANSACTION]
++
+--
+Numbers the transactions within a given xref:refguide:applib:index/services/iactn/Interaction.adoc[Interaction] .
+--
+
+== Members
+
+[#EXECUTION]
+=== EXECUTION
+
+Numbers the executions (an action invocation or property edit) within a given xref:refguide:applib:index/services/iactn/Interaction.adoc[Interaction] .
+
+Each xref:refguide:applib:index/services/iactn/Interaction.adoc[Interaction] is initiated by an execution of action invocation or a property edit. Thereafter there could be multiple other executions as the result of nested calls using the xref:refguide:applib:index/services/wrapper/WrapperFactory.adoc[WrapperFactory] .
+
+Another possible reason is support for bulk action invocations.
+
+[#TRANSACTION]
+=== TRANSACTION
+
+Numbers the transactions within a given xref:refguide:applib:index/services/iactn/Interaction.adoc[Interaction] .
+
+Each xref:refguide:applib:index/services/iactn/Interaction.adoc[Interaction] is executed within the context of a transaction, but the (occasionally) the transaction may be committed and a new one started as the result of the domain object using the _org.apache.isis.applib.services.xactn.TransactionService_ .
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/publishing/spi/EntityChanges.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/publishing/spi/EntityChanges.adoc
index dc713f1..90ec59b 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/publishing/spi/EntityChanges.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/publishing/spi/EntityChanges.adoc
@@ -11,7 +11,7 @@ The numbers of objects loaded, created, updated or deleted and the number of obj
 .EntityChanges.java
 ----
 interface EntityChanges {
-  UUID getUniqueId()     // <.>
+  UUID getInteractionId()     // <.>
   String getUsername()     // <.>
   Timestamp getCompletedAt()     // <.>
   int getNumberLoaded()     // <.>
@@ -23,15 +23,15 @@ interface EntityChanges {
 }
 ----
 
-<.> xref:#getUniqueId__[getUniqueId()]
+<.> xref:#getInteractionId__[getInteractionId()]
 +
 --
-inherited from xref:refguide:commons:index/having/HasUniqueId.adoc[HasUniqueId] , correlates back to the unique identifier of the transaction in which these objects were changed.
+inherited from xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] , correlates back to the unique identifier of the transaction in which these objects were changed.
 --
 <.> xref:#getUsername__[getUsername()]
 +
 --
-Inherited from xref:refguide:commons:index/having/HasUsername.adoc[HasUsername] , is the user that initiated the transaction causing these objects to change.
+Inherited from xref:refguide:applib:index/mixins/security/HasUsername.adoc[HasUsername] , is the user that initiated the transaction causing these objects to change.
 --
 <.> xref:#getCompletedAt__[getCompletedAt()]
 +
@@ -71,15 +71,15 @@ Same details, but as an an instance of _ChangesDto_ .
 
 == Members
 
-[#getUniqueId__]
-=== getUniqueId()
+[#getInteractionId__]
+=== getInteractionId()
 
-inherited from xref:refguide:commons:index/having/HasUniqueId.adoc[HasUniqueId] , correlates back to the unique identifier of the transaction in which these objects were changed.
+inherited from xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] , correlates back to the unique identifier of the transaction in which these objects were changed.
 
 [#getUsername__]
 === getUsername()
 
-Inherited from xref:refguide:commons:index/having/HasUsername.adoc[HasUsername] , is the user that initiated the transaction causing these objects to change.
+Inherited from xref:refguide:applib:index/mixins/security/HasUsername.adoc[HasUsername] , is the user that initiated the transaction causing these objects to change.
 
 [#getCompletedAt__]
 === getCompletedAt()
diff --git a/antora/components/refguide-index/modules/applib/pages/index/services/xactn/TransactionId.adoc b/antora/components/refguide-index/modules/applib/pages/index/services/xactn/TransactionId.adoc
index 63565aa..2ac7ce8 100644
--- a/antora/components/refguide-index/modules/applib/pages/index/services/xactn/TransactionId.adoc
+++ b/antora/components/refguide-index/modules/applib/pages/index/services/xactn/TransactionId.adoc
@@ -3,7 +3,7 @@
 
 Value type used to identify a transaction within the context of an outer _org.apache.isis.applib.services.iactn.Interaction_ .
 
-The transaction and _org.apache.isis.applib.services.iactn.Interaction_ are associated by the _#getUniqueId() uniqueId_ .
+The transaction and _org.apache.isis.applib.services.iactn.Interaction_ are associated by the _#getInteractionId() uniqueId_ .
 
 Obtainable from _TransactionService#currentTransactionId()_ .
 
@@ -13,14 +13,14 @@ Obtainable from _TransactionService#currentTransactionId()_ .
 .TransactionId.java
 ----
 class TransactionId {
-  UUID uniqueId;     // <.>
+  UUID interactionId;     // <.>
   int sequence;     // <.>
   String context;     // <.>
   TransactionId empty()     // <.>
 }
 ----
 
-<.> xref:#uniqueId[uniqueId]
+<.> xref:#interactionId[interactionId]
 +
 --
 The unique identifier of the outer _org.apache.isis.applib.services.iactn.Interaction_ .
@@ -43,16 +43,20 @@ Factory method that returns a nominally "empty" transaction identifier, used as
 
 == Members
 
-[#uniqueId]
-=== uniqueId
+[#interactionId]
+=== interactionId
 
 The unique identifier of the outer _org.apache.isis.applib.services.iactn.Interaction_ .
 
+Together with _#getSequence()_ , this makes up the implementation of xref:refguide:applib:index/mixins/system/HasTransactionId.adoc[HasTransactionId]
+
 [#sequence]
 === sequence
 
 Identifies the transaction (there could be multiple) within the _org.apache.isis.applib.services.iactn.Interaction_ .
 
+Together with _#getInteractionId()_ , this makes up the implementation of xref:refguide:applib:index/mixins/system/HasTransactionId.adoc[HasTransactionId]
+
 [#context]
 === context
 
diff --git a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/HasUniqueId_command.adoc b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/HasUniqueId_command.adoc
index 72c8238..6ca9e82 100644
--- a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/HasUniqueId_command.adoc
+++ b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/impl/mixins/HasUniqueId_command.adoc
@@ -1,7 +1,7 @@
 = HasUniqueId_command
 :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 `command` action to any (non-command) implementation of xref:refguide:commons:index/having/HasUniqueId.adoc[HasUniqueId] ; that is: audit entries, and published events. Thus, it is possible to navigate from the effect back to the cause.
+This mixin contributes a `command` action to any (non-command) implementation of xref:refguide:applib:index/mixins/system/HasInteractionId.adoc[HasInteractionId] ; that is: audit entries, and published events. Thus, it is possible to navigate from the effect back to the cause.
 
 == API
 
@@ -11,7 +11,7 @@ This mixin contributes a `command` action to any (non-command) implementation of
 class HasUniqueId_command {
   @Inject
 CommandJdoRepository commandServiceRepository;
-  HasUniqueId_command(final HasUniqueId hasInteractionId)
+  HasUniqueId_command(final HasInteractionId hasInteractionId)
   CommandJdo act()
   boolean hideAct()     // <.>
   String disableAct()
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/ApplicationPermission.adoc
index 784440e..4701ea9 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/ApplicationPermission.adoc
@@ -17,14 +17,14 @@ For a given permission, there is an interaction between the xref:refguide:extens
 ----
 interface ApplicationPermission {
   String title()     // <.>
-  ApplicationFeatureType getFeatureType()
+  ApplicationFeatureSort getFeatureSort()
   ApplicationRole getRole()
   void setRole(ApplicationRole applicationRole)
   ApplicationPermissionRule getRule()
   void setRule(ApplicationPermissionRule rule)
   ApplicationPermissionMode getMode()
   void setMode(ApplicationPermissionMode changing)
-  String getType()
+  String getSort()
   String getFeatureFqn()
   void setFeatureFqn(String featureFqn)
   Optional<ApplicationFeatureId> createFeatureId()
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
index 51971f9..b61a3d9 100644
--- 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
@@ -8,14 +8,15 @@
 ----
 interface ApplicationPermissionRepository<P> {
   Optional<P> findByUserAndPermissionValue(String username, ApplicationPermissionValue changingPermissionValue)
-  Optional<P> findByRoleAndRuleAndFeature(ApplicationRole holder, ApplicationPermissionRule rule, ApplicationFeatureType type, String featureFqn)
+  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, ApplicationFeatureType type)
+  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 holder, ApplicationPermissionRule rule, ApplicationPermissionMode mode, ApplicationFeatureType featureType, String featureFqn)
+  P newPermission(ApplicationRole role, ApplicationPermissionRule rule, ApplicationPermissionMode mode, ApplicationFeatureSort featureSort, String featureFqn)
+  P newPermission(ApplicationRole role, ApplicationPermissionRule rule, ApplicationPermissionMode mode, ApplicationFeatureId featureId)
 }
 ----
 
diff --git a/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_datanucleusIdLong.adoc b/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_datanucleusIdLong.adoc
index 4bfd757..9466833 100644
--- a/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_datanucleusIdLong.adoc
+++ b/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_datanucleusIdLong.adoc
@@ -1,6 +1,10 @@
 = Persistable_datanucleusIdLong
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Contributes the value of the id (introduced by enhancing) as a property.
+
+Only visible if the id can be cast to a long.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_datanucleusVersionLong.adoc b/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_datanucleusVersionLong.adoc
index 43edf2d..d3f15ea 100644
--- a/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_datanucleusVersionLong.adoc
+++ b/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_datanucleusVersionLong.adoc
@@ -1,6 +1,10 @@
 = Persistable_datanucleusVersionLong
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Contributes the value of the version (introduced by enhancing, and used by the ORM for optimistic locking) as a property.
+
+Only visible if the version can be cast to a long.
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_datanucleusVersionTimestamp.adoc b/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_datanucleusVersionTimestamp.adoc
index 84e23aa..29d99fb 100644
--- a/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_datanucleusVersionTimestamp.adoc
+++ b/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_datanucleusVersionTimestamp.adoc
@@ -1,6 +1,10 @@
 = Persistable_datanucleusVersionTimestamp
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Contributes the value of the version (introduced by enhancing, and used by the ORM for optimistic locking) as a property.
+
+Only visible if the version can be cast to a _java.sql.Timestamp_ .
+
 == API
 
 [source,java]
diff --git a/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.adoc b/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.adoc
index 24ea6a0..2a41571 100644
--- a/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.adoc
+++ b/antora/components/refguide-index/modules/persistence/pages/index/jdo/datanucleus/mixins/Persistable_downloadJdoMetadata.adoc
@@ -1,6 +1,8 @@
 = Persistable_downloadJdoMetadata
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Provides the ability to download the JDOclass metadataas XML.
+
 == API
 
 [source,java]