You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/12/10 18:14:07 UTC

[isis] branch master updated: ISIS-2473: regenerate index (adoc)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 1b7d500  ISIS-2473: regenerate index (adoc)
1b7d500 is described below

commit 1b7d50075407f40ddfdff70d0ec6e1ffebd1b3db
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Dec 10 19:13:56 2020 +0100

    ISIS-2473: regenerate index (adoc)
---
 .../generated/pages/index/AcceptHeaderService.adoc |   6 +
 .../generated/pages/index/ActionArgumentEvent.adoc |  11 ++
 .../pages/index/ActionInvocationEvent.adoc         |  11 ++
 .../pages/index/ActionUsabilityEvent.adoc          |   7 +
 .../pages/index/ActionVisibilityEvent.adoc         |   7 +
 .../pages/index/ApplicationFeatureRepository.adoc  |   6 +
 .../generated/pages/index/AsyncControl.adoc        |   6 +
 .../modules/generated/pages/index/Bookmark.adoc    |  17 +++
 .../generated/pages/index/BookmarkHolder.adoc      |   6 +
 .../generated/pages/index/BookmarkService.adoc     |  34 +++++
 .../generated/pages/index/BookmarkUiService.adoc   |   6 +
 .../generated/pages/index/ClockService.adoc        |   6 +
 .../pages/index/CollectionAccessEvent.adoc         |   7 +
 .../pages/index/CollectionAddToEvent.adoc          |  10 ++
 .../pages/index/CollectionMethodEvent.adoc         |  31 ++++
 .../pages/index/CollectionRemoveFromEvent.adoc     |   7 +
 .../pages/index/CollectionUsabilityEvent.adoc      |   7 +
 .../modules/generated/pages/index/Command.adoc     |  37 +++++
 .../generated/pages/index/CommandDtoProcessor.adoc |  11 ++
 .../pages/index/CommandDtoProcessorService.adoc    |   7 +
 .../index/CommandDtoProcessorServiceIdentity.adoc  |   6 +
 .../pages/index/CommandExecutorService.adoc        |   9 ++
 .../generated/pages/index/CommandLogger.adoc       |   6 +
 .../pages/index/CommandOutcomeHandler.adoc         |   6 +
 .../generated/pages/index/CommandSubscriber.adoc   |  11 ++
 .../pages/index/ConfigurationProperty.adoc         |   6 +
 .../pages/index/ConfigurationViewService.adoc      |   9 ++
 .../pages/index/ContentMappingService.adoc         |   9 ++
 .../index/ContentMappingServiceForCommandDto.adoc  |   6 +
 .../index/ContentMappingServiceForCommandsDto.adoc |   9 ++
 .../generated/pages/index/ControlAbstract.adoc     |   9 ++
 .../generated/pages/index/DeepLinkService.adoc     |  10 ++
 .../generated/pages/index/DisabledException.adoc   |   6 +
 .../generated/pages/index/DomainChangeRecord.adoc  |  55 +++++++
 .../generated/pages/index/DomainMember.adoc        |   6 +
 .../modules/generated/pages/index/DomainModel.adoc |   6 +
 .../pages/index/EmailNotificationService.adoc      |  10 ++
 .../pages/index/EmailRegistrationEvent.adoc        |   6 +
 .../generated/pages/index/EmailService.adoc        |  10 ++
 .../generated/pages/index/EntityChanges.adoc       |   6 +
 .../generated/pages/index/EntityChangesLogger.adoc |   6 +
 .../pages/index/EntityChangesSubscriber.adoc       |   9 ++
 .../pages/index/EntityPropertyChange.adoc          |   6 +
 .../pages/index/EntityPropertyChangeLogger.adoc    |   6 +
 .../index/EntityPropertyChangeSubscriber.adoc      |   9 ++
 .../generated/pages/index/ErrorDetails.adoc        |   7 +
 .../pages/index/ErrorReportingService.adoc         |   6 +
 .../generated/pages/index/EventBusService.adoc     |   6 +
 .../generated/pages/index/ExceptionHandler.adoc    |   9 ++
 .../generated/pages/index/ExceptionRecognizer.adoc |  13 ++
 .../pages/index/ExceptionRecognizerService.adoc    |  17 +++
 .../generated/pages/index/ExecutionContext.adoc    |   9 ++
 .../generated/pages/index/ExecutionLogger.adoc     |   6 +
 .../generated/pages/index/ExecutionSubscriber.adoc |  11 ++
 .../generated/pages/index/GridLoaderService.adoc   |  29 ++++
 .../modules/generated/pages/index/GridService.adoc |  55 +++++++
 .../generated/pages/index/GridSystemService.adoc   |  14 ++
 .../generated/pages/index/HasCommandDto.adoc       |   6 +
 .../modules/generated/pages/index/Health.adoc      |   6 +
 .../generated/pages/index/HealthCheckService.adoc  |   6 +
 .../generated/pages/index/HiddenException.adoc     |   6 +
 .../modules/generated/pages/index/HintStore.adoc   |   6 +
 .../pages/index/HomePageResolverService.adoc       |   6 +
 .../modules/generated/pages/index/Interaction.adoc |  22 +++
 .../generated/pages/index/InteractionAdapter.adoc  |   6 +
 .../generated/pages/index/InteractionContext.adoc  |   9 ++
 .../generated/pages/index/InteractionEvent.adoc    |  84 +++++++++++
 .../generated/pages/index/InteractionListener.adoc | 102 +++++++++++++
 .../generated/pages/index/InvalidException.adoc    |   6 +
 .../modules/generated/pages/index/JaxbService.adoc |  14 ++
 .../generated/pages/index/LayoutService.adoc       |  19 +++
 .../generated/pages/index/LayoutServiceMenu.adoc   |   6 +
 .../generated/pages/index/LocaleProvider.adoc      |   6 +
 .../pages/index/MenuBarsLoaderService.adoc         |  14 ++
 .../generated/pages/index/MenuBarsService.adoc     |   9 ++
 .../generated/pages/index/MessageService.adoc      |  55 +++++++
 .../generated/pages/index/MetaModelService.adoc    |  24 ++++
 .../pages/index/MetaModelServiceMenu.adoc          |   6 +
 .../generated/pages/index/MethodReferences.adoc    |   6 +
 .../generated/pages/index/MetricsService.adoc      |  22 +++
 .../generated/pages/index/ObjectTitleEvent.adoc    |   7 +
 .../generated/pages/index/ObjectValidityEvent.adoc |   7 +
 .../pages/index/ObjectVisibilityEvent.adoc         |   7 +
 .../generated/pages/index/ParseValueEvent.adoc     |  10 ++
 .../generated/pages/index/PasswordResetEvent.adoc  |   6 +
 .../generated/pages/index/PropertyAccessEvent.adoc |   7 +
 .../generated/pages/index/PropertyModifyEvent.adoc |  10 ++
 .../pages/index/PropertyUsabilityEvent.adoc        |   7 +
 .../pages/index/PropertyVisibilityEvent.adoc       |   7 +
 .../generated/pages/index/ProposedHolderEvent.adoc |   6 +
 .../pages/index/QueryResultCacheControl.adoc       |   6 +
 .../generated/pages/index/QueryResultsCache.adoc   |  10 ++
 .../generated/pages/index/RepositoryService.adoc   | 160 +++++++++++++++++++++
 .../RepresentsInteractionMemberExecution.adoc      |   7 +
 .../generated/pages/index/RoutingService.adoc      |   6 +
 .../modules/generated/pages/index/Scratchpad.adoc  |  15 ++
 .../generated/pages/index/ServiceInjector.adoc     |   7 +
 .../generated/pages/index/ServiceRegistry.adoc     |  41 ++++++
 .../pages/index/SessionLoggingService.adoc         |   6 +
 .../pages/index/SessionLoggingServiceLogging.adoc  |   6 +
 .../modules/generated/pages/index/SudoService.adoc |  14 ++
 .../generated/pages/index/SwaggerService.adoc      |   6 +
 .../modules/generated/pages/index/SyncControl.adoc |   9 ++
 .../pages/index/TableColumnOrderService.adoc       |   6 +
 .../modules/generated/pages/index/Ticket.adoc      |  44 ++++++
 .../generated/pages/index/TitleService.adoc        |  14 ++
 .../modules/generated/pages/index/Transaction.adoc |  13 ++
 .../generated/pages/index/TransactionId.adoc       |   6 +
 .../pages/index/TransactionScopeListener.adoc      |   9 ++
 .../generated/pages/index/TransactionService.adoc  |  34 +++++
 .../pages/index/TranslatableException.adoc         |  17 +++
 .../generated/pages/index/TranslatableString.adoc  |  43 ++++++
 .../generated/pages/index/TranslationService.adoc  |  27 ++++
 .../pages/index/TranslationsResolver.adoc          |   6 +
 .../generated/pages/index/UrlEncodingService.adoc  |   6 +
 .../generated/pages/index/UsabilityEvent.adoc      |   7 +
 .../generated/pages/index/UserDataKeys.adoc        |   6 +
 .../modules/generated/pages/index/UserDetails.adoc |   6 +
 .../generated/pages/index/UserProfileService.adoc  |  12 ++
 .../pages/index/UserRegistrationService.adoc       |   7 +
 .../modules/generated/pages/index/UserService.adoc |  11 +-
 .../generated/pages/index/ValidityEvent.adoc       |  18 +++
 .../generated/pages/index/VisibilityEvent.adoc     |   7 +
 .../generated/pages/index/WrapperFactory.adoc      |  95 ++++++++++++
 .../generated/pages/index/WrappingObject.adoc      |  29 ++++
 .../modules/generated/pages/index/XmlService.adoc  |  24 ++++
 .../generated/pages/index/XmlServiceDefault.adoc   |   6 +
 .../pages/index/XmlSnapshotServiceDefault.adoc     |  15 ++
 .../modules/generated/pages/system-overview.adoc   |  22 +--
 129 files changed, 1950 insertions(+), 12 deletions(-)

diff --git a/antora/components/system/modules/generated/pages/index/AcceptHeaderService.adoc b/antora/components/system/modules/generated/pages/index/AcceptHeaderService.adoc
new file mode 100644
index 0000000..acf337a
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/AcceptHeaderService.adoc
@@ -0,0 +1,6 @@
+= AcceptHeaderService : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/ActionArgumentEvent.adoc b/antora/components/system/modules/generated/pages/index/ActionArgumentEvent.adoc
new file mode 100644
index 0000000..e4fe5e1
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ActionArgumentEvent.adoc
@@ -0,0 +1,11 @@
+= ActionArgumentEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents a check as to whether a particular argument for an action is valid or not.
+If _#getReason()_ is not `null` then provides the reason why the argument is invalid; otherwise the argument is valid.
+Called once per argument, and before xref:system:generated:index/ActionInvocationEvent.adoc[ActionInvocationEvent] .
+
+* `[teal]#*getPosition*#()` : `int`
++
+The position (0-based) of the invalid argument.
diff --git a/antora/components/system/modules/generated/pages/index/ActionInvocationEvent.adoc b/antora/components/system/modules/generated/pages/index/ActionInvocationEvent.adoc
new file mode 100644
index 0000000..71c4571
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ActionInvocationEvent.adoc
@@ -0,0 +1,11 @@
+= ActionInvocationEvent : _class_
+
+
+
+ _Supported only by xref:system:generated:index/WrapperFactory.adoc[WrapperFactory] service,_ represents a check as to whether a particular argument for an action is valid or not.
+If _#getReason()_ is not `null` then provides the reason why the set of arguments are invalid; otherwise the arguments are valid.
+Called after each of the xref:system:generated:index/ActionArgumentEvent.adoc[ActionArgumentEvent] s.
+
+* `[teal]#*getProposed*#()` : `Object`
++
+Does not apply
diff --git a/antora/components/system/modules/generated/pages/index/ActionUsabilityEvent.adoc b/antora/components/system/modules/generated/pages/index/ActionUsabilityEvent.adoc
new file mode 100644
index 0000000..da8c0ac
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ActionUsabilityEvent.adoc
@@ -0,0 +1,7 @@
+= ActionUsabilityEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents a check as to whether an action is usable or has been disabled.
+If _#getReason()_ is not `null` then provides the reason why the action is disabled; otherwise action is enabled.
+
diff --git a/antora/components/system/modules/generated/pages/index/ActionVisibilityEvent.adoc b/antora/components/system/modules/generated/pages/index/ActionVisibilityEvent.adoc
new file mode 100644
index 0000000..9e29e57
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ActionVisibilityEvent.adoc
@@ -0,0 +1,7 @@
+= ActionVisibilityEvent : _class_
+
+
+
+ _Supported only by xref:system:generated:index/WrapperFactory.adoc[WrapperFactory] service,_ represents a check as to whether an action is visible or has been hidden.
+If _#getReason()_ is not `null` then provides the reason why the action is invisible; otherwise action is visible.
+
diff --git a/antora/components/system/modules/generated/pages/index/ApplicationFeatureRepository.adoc b/antora/components/system/modules/generated/pages/index/ApplicationFeatureRepository.adoc
new file mode 100644
index 0000000..1b63d82
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ApplicationFeatureRepository.adoc
@@ -0,0 +1,6 @@
+= ApplicationFeatureRepository : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/AsyncControl.adoc b/antora/components/system/modules/generated/pages/index/AsyncControl.adoc
new file mode 100644
index 0000000..7ed9ad3
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/AsyncControl.adoc
@@ -0,0 +1,6 @@
+= AsyncControl : _class_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/Bookmark.adoc b/antora/components/system/modules/generated/pages/index/Bookmark.adoc
new file mode 100644
index 0000000..8dd1978
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/Bookmark.adoc
@@ -0,0 +1,17 @@
+= Bookmark : _class_
+
+
+
+String representation of any persistable or re-createable object managed by the framework.
+Analogous to the `RootOid` .
+
+* `[teal]#*_parse_*#(String str)` : `Optional<xref:system:generated:index/Bookmark.adoc[Bookmark]>`
++
+Round-trip with _#toString()_ representation.
+
+
+* `[teal]#*toString*#()` : `String`
++
+The canonical form of the xref:system:generated:index/Bookmark.adoc[Bookmark] , that is " _#getObjectType() objectType_ _#SEPARATOR_ _#getIdentifier()_ ".
++
+This is parseable by the _#parse(String)_ .
diff --git a/antora/components/system/modules/generated/pages/index/BookmarkHolder.adoc b/antora/components/system/modules/generated/pages/index/BookmarkHolder.adoc
new file mode 100644
index 0000000..90f54e3
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/BookmarkHolder.adoc
@@ -0,0 +1,6 @@
+= BookmarkHolder : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/BookmarkService.adoc b/antora/components/system/modules/generated/pages/index/BookmarkService.adoc
new file mode 100644
index 0000000..bb6d365
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/BookmarkService.adoc
@@ -0,0 +1,34 @@
+= BookmarkService : _interface_
+
+
+
+This service enables a serializable 'bookmark' to be created for an entity.
+
+* `[teal]#*bookmarkFor*#(Object domainObject)` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
++
+Returns the xref:system:generated:index/Bookmark.adoc[Bookmark] for the given domain object.
++
+ *Note* : Not every domain object is bookmark-able: only entities, view models and services (NOT values or collections)
+
+
+* `[teal]#*bookmarkForElseThrow*#(Object domainObject)` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
++
+As per _#bookmarkFor(Object)_ , but requires that a non-null xref:system:generated:index/Bookmark.adoc[Bookmark] is returned.
+
+
+* `[teal]#*bookmarkFor*#(Class<?> cls, String identifier)` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
++
+Utility method that creates a xref:system:generated:index/Bookmark.adoc[Bookmark] from the constituent parts.
+
+
+* `[teal]#*lookup*#(xref:system:generated:index/BookmarkHolder.adoc[BookmarkHolder] bookmarkHolder)` : `Object`
+
+
+* `[teal]#*lookup*#(xref:system:generated:index/Bookmark.adoc[Bookmark] bookmark)` : `Object`
++
+Reciprocal of _#bookmarkFor(Object)_
+
+
+* `[teal]#*lookup*#<T>(xref:system:generated:index/Bookmark.adoc[Bookmark] bookmark, Class<T> cls)` : `T`
++
+As _#lookup(Bookmark)_ , but down-casting to the specified type.
diff --git a/antora/components/system/modules/generated/pages/index/BookmarkUiService.adoc b/antora/components/system/modules/generated/pages/index/BookmarkUiService.adoc
new file mode 100644
index 0000000..1077fb3
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/BookmarkUiService.adoc
@@ -0,0 +1,6 @@
+= BookmarkUiService : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/ClockService.adoc b/antora/components/system/modules/generated/pages/index/ClockService.adoc
new file mode 100644
index 0000000..f4e843d
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ClockService.adoc
@@ -0,0 +1,6 @@
+= ClockService : _interface_
+
+
+
+This service allows an application to be decoupled from the system time. The most common use case is in support of testing scenarios, to "mock the clock". Use of this service also opens up the use of centralized co-ordinated time management through a centralized time service.
+
diff --git a/antora/components/system/modules/generated/pages/index/CollectionAccessEvent.adoc b/antora/components/system/modules/generated/pages/index/CollectionAccessEvent.adoc
new file mode 100644
index 0000000..f63158c
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/CollectionAccessEvent.adoc
@@ -0,0 +1,7 @@
+= CollectionAccessEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents an access (reading) of a collection.
+Analogous to xref:system:generated:index/CollectionAddToEvent.adoc[CollectionAddToEvent] or xref:system:generated:index/CollectionRemoveFromEvent.adoc[CollectionRemoveFromEvent] , however the _#getReason()_ will always be `null` . (If access is not allowed then a vetoing _CollectionVisibilityEvent_ would have been fired).
+
diff --git a/antora/components/system/modules/generated/pages/index/CollectionAddToEvent.adoc b/antora/components/system/modules/generated/pages/index/CollectionAddToEvent.adoc
new file mode 100644
index 0000000..b07dd8f
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/CollectionAddToEvent.adoc
@@ -0,0 +1,10 @@
+= CollectionAddToEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents a check as to whether a particular object to be added to a collection is valid or not.
+If _#getReason()_ is not `null` then provides the reason why the object is invalid; otherwise the object is valid.
+
+* `[teal]#*getProposed*#()` : `Object`
++
+The object that is being added.
diff --git a/antora/components/system/modules/generated/pages/index/CollectionMethodEvent.adoc b/antora/components/system/modules/generated/pages/index/CollectionMethodEvent.adoc
new file mode 100644
index 0000000..6601cfd
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/CollectionMethodEvent.adoc
@@ -0,0 +1,31 @@
+= CollectionMethodEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents an interaction with a collection object itself.
+
+* `[teal]#*getSource*#()` : `Object`
++
+The collection object (an instance of a `List` or a `Set` etc) that is the originator of this event.
++
+The owning domain object is available using _#getDomainObject()_ .
+
+
+* `[teal]#*getDomainObject*#()` : `Object`
++
+The owner of the collection (an instance of `Customer/tt> or `Order` , say).` 
+
+
+* `[teal]#*getMethodName*#()` : `String`
++
+The name of the method invoked on this collection, for example `isEmpty` .
+
+
+* `[teal]#*getArgs*#()` : `Object[]`
++
+The arguments with which the collection's _#getMethodName() method_ was invoked.
+
+
+* `[teal]#*getReturnValue*#()` : `Object`
++
+The return value from the _#getMethodName() method_ invocation.
diff --git a/antora/components/system/modules/generated/pages/index/CollectionRemoveFromEvent.adoc b/antora/components/system/modules/generated/pages/index/CollectionRemoveFromEvent.adoc
new file mode 100644
index 0000000..d54e3ab
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/CollectionRemoveFromEvent.adoc
@@ -0,0 +1,7 @@
+= CollectionRemoveFromEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents a check as to whether a particular object to be removed from a collection is valid or not.
+If _#getReason()_ is not `null` then provides the reason why the object is invalid; otherwise the object is valid.
+
diff --git a/antora/components/system/modules/generated/pages/index/CollectionUsabilityEvent.adoc b/antora/components/system/modules/generated/pages/index/CollectionUsabilityEvent.adoc
new file mode 100644
index 0000000..01fbdc7
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/CollectionUsabilityEvent.adoc
@@ -0,0 +1,7 @@
+= CollectionUsabilityEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents a check as to whether a collection is usable or has been disabled.
+If _#getReason()_ is not `null` then provides the reason why the collection is disabled; otherwise collection is enabled.
+
diff --git a/antora/components/system/modules/generated/pages/index/Command.adoc b/antora/components/system/modules/generated/pages/index/Command.adoc
new file mode 100644
index 0000000..6b6c210
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/Command.adoc
@@ -0,0 +1,37 @@
+= Command : _class_
+
+
+
+Represents the _intention to_ invoke either an action or modify a property. There can be only one such intention per (web) request, so a command is in effect interaction-scoped.
+Each Command holds a _CommandDto_ (see Apache Isiscmdschema) which reifies all the details in a serializable form.
+It also captures details of the corresponding action invocation (or property edit), specifically when that action/edit _Command#getStartedAt() started_ or _Command#getCompletedAt() completed_ , and its result, either a _Command#getResult() return value_ or an _Command#getException() exception_ . Also captures a stack of _ActionDomainEvent_ s.
+Note that when invoking an action, other actions may be invoked courtesy of the xref:system:generated:index/WrapperFactory.adoc[WrapperFactory] . These "sub-actions" do _not_ modify the contents of the current command object; in other words think of the command object as representing the outer-most originating action.
+That said, if the sub-action is invoked asynchronously (using _WrapperFactory#asyncWrap(Object, AsyncControl)_ or _WrapperFactory#asyncWrapMixin(Class, Object, AsyncControl)_ ), then a separate xref:system:generated:index/Command.adoc[Command] object is created, and the originating xref:system:generated:index/Command.adoc[Command] is set to be its _Command#getParent() parent_ .
+
+* `[teal]#*getUsername*#()` : `String`
++
+The user that created the command.
++
+Derived from _#getCommandDto()_ 's _CommandDto#getUser()_
+
+
+* `[teal]#*getTimestamp*#()` : `Timestamp`
++
+The date/time at which this command was created.
++
+Derived from _#getCommandDto()_ 's _CommandDto#getTimestamp()_ .
+
+
+* `[teal]#*getTarget*#()` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
++
+Derived from _#getCommandDto()_ , is the xref:system:generated:index/Bookmark.adoc[Bookmark] of the target object (entity or service) on which this action/edit was performed.
+
+
+* `[teal]#*getLogicalMemberIdentifier*#()` : `String`
++
+Derived from _#getCommandDto()_ , holds a string representation of the invoked action, or the edited property.
+
+
+* `[teal]#*updater*#()` : `Updater`
++
+ *NOT API* : intended to be called only by the framework.
diff --git a/antora/components/system/modules/generated/pages/index/CommandDtoProcessor.adoc b/antora/components/system/modules/generated/pages/index/CommandDtoProcessor.adoc
new file mode 100644
index 0000000..d0b79a3
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/CommandDtoProcessor.adoc
@@ -0,0 +1,11 @@
+= CommandDtoProcessor : _interface_
+
+
+
+Refine (or possibly ignore) a command when replicating from primary to secondary.
+
+* `[teal]#*process*#(CommandDto commandDto)` : `CommandDto`
++
+The implementation can if necessary refine or alter the _CommandDto_ to be replicated from primary to secondary.
++
+That said, the most common use case is to returnnull, which results in the command effectively being ignore.
diff --git a/antora/components/system/modules/generated/pages/index/CommandDtoProcessorService.adoc b/antora/components/system/modules/generated/pages/index/CommandDtoProcessorService.adoc
new file mode 100644
index 0000000..aedbf8b
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/CommandDtoProcessorService.adoc
@@ -0,0 +1,7 @@
+= CommandDtoProcessorService : _interface_
+
+
+
+Optional SPI called by xref:system:generated:index/ContentMappingServiceForCommandDto.adoc[ContentMappingServiceForCommandDto] . Similar to xref:system:generated:index/CommandDtoProcessor.adoc[CommandDtoProcessor] , but applied to all _CommandDto_ s globally.
+
+* `[teal]#*process*#(Object domainObject, CommandDto commandDto)` : `CommandDto`
diff --git a/antora/components/system/modules/generated/pages/index/CommandDtoProcessorServiceIdentity.adoc b/antora/components/system/modules/generated/pages/index/CommandDtoProcessorServiceIdentity.adoc
new file mode 100644
index 0000000..e6052fe
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/CommandDtoProcessorServiceIdentity.adoc
@@ -0,0 +1,6 @@
+= CommandDtoProcessorServiceIdentity : _class_
+
+
+
+At least one implementation is required.
+
diff --git a/antora/components/system/modules/generated/pages/index/CommandExecutorService.adoc b/antora/components/system/modules/generated/pages/index/CommandExecutorService.adoc
new file mode 100644
index 0000000..6570f7c
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/CommandExecutorService.adoc
@@ -0,0 +1,9 @@
+= CommandExecutorService : _interface_
+
+
+
+
+
+* `[teal]#*executeCommand*#(SudoPolicy sudoPolicy, xref:system:generated:index/Command.adoc[Command] command)` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
++
+Executes the specified command.
diff --git a/antora/components/system/modules/generated/pages/index/CommandLogger.adoc b/antora/components/system/modules/generated/pages/index/CommandLogger.adoc
new file mode 100644
index 0000000..890977b
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/CommandLogger.adoc
@@ -0,0 +1,6 @@
+= CommandLogger : _class_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/CommandOutcomeHandler.adoc b/antora/components/system/modules/generated/pages/index/CommandOutcomeHandler.adoc
new file mode 100644
index 0000000..e8ea51d
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/CommandOutcomeHandler.adoc
@@ -0,0 +1,6 @@
+= CommandOutcomeHandler : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/CommandSubscriber.adoc b/antora/components/system/modules/generated/pages/index/CommandSubscriber.adoc
new file mode 100644
index 0000000..218616d
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/CommandSubscriber.adoc
@@ -0,0 +1,11 @@
+= CommandSubscriber : _interface_
+
+
+
+Part of the _Publishing SPI_ . A component to receive xref:system:generated:index/Command.adoc[Command] s (with publishing enabled) that just completed.
+
+* `[teal]#*onCompleted*#(xref:system:generated:index/Command.adoc[Command] command)` : `void`
++
+Notifies that the command has completed.
++
+This is an opportunity for implementations to process the command, for example to persist a representation of it.
diff --git a/antora/components/system/modules/generated/pages/index/ConfigurationProperty.adoc b/antora/components/system/modules/generated/pages/index/ConfigurationProperty.adoc
new file mode 100644
index 0000000..25f23a5
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ConfigurationProperty.adoc
@@ -0,0 +1,6 @@
+= ConfigurationProperty : _class_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/ConfigurationViewService.adoc b/antora/components/system/modules/generated/pages/index/ConfigurationViewService.adoc
new file mode 100644
index 0000000..30cfd51
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ConfigurationViewService.adoc
@@ -0,0 +1,9 @@
+= ConfigurationViewService : _interface_
+
+
+
+
+
+* `[teal]#*allProperties*#()` : `Set<xref:system:generated:index/ConfigurationProperty.adoc[ConfigurationProperty]>`
++
+Returns all properties, each as an instance of xref:system:generated:index/ConfigurationProperty.adoc[ConfigurationProperty] (a view model). Mask sensitive values if required.
diff --git a/antora/components/system/modules/generated/pages/index/ContentMappingService.adoc b/antora/components/system/modules/generated/pages/index/ContentMappingService.adoc
new file mode 100644
index 0000000..6c5162f
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ContentMappingService.adoc
@@ -0,0 +1,9 @@
+= ContentMappingService : _interface_
+
+
+
+
+
+* `[teal]#*map*#(Object object, List<MediaType> acceptableMediaTypes)` : `Object`
++
+Typically for mapping from a domain object to a DTO.
diff --git a/antora/components/system/modules/generated/pages/index/ContentMappingServiceForCommandDto.adoc b/antora/components/system/modules/generated/pages/index/ContentMappingServiceForCommandDto.adoc
new file mode 100644
index 0000000..460ec6c
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ContentMappingServiceForCommandDto.adoc
@@ -0,0 +1,6 @@
+= ContentMappingServiceForCommandDto : _class_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/ContentMappingServiceForCommandsDto.adoc b/antora/components/system/modules/generated/pages/index/ContentMappingServiceForCommandsDto.adoc
new file mode 100644
index 0000000..d5521c7
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ContentMappingServiceForCommandsDto.adoc
@@ -0,0 +1,9 @@
+= ContentMappingServiceForCommandsDto : _class_
+
+
+
+
+
+* `[teal]#*map*#(Object object)` : `CommandsDto`
++
+Not part of the xref:system:generated:index/ContentMappingService.adoc[ContentMappingService] API.
diff --git a/antora/components/system/modules/generated/pages/index/ControlAbstract.adoc b/antora/components/system/modules/generated/pages/index/ControlAbstract.adoc
new file mode 100644
index 0000000..ec9124f
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ControlAbstract.adoc
@@ -0,0 +1,9 @@
+= ControlAbstract : _class_
+
+
+
+
+
+* `[teal]#*getExecutionModes*#()` : `ImmutableEnumSet<ExecutionMode>`
++
+Not API.
diff --git a/antora/components/system/modules/generated/pages/index/DeepLinkService.adoc b/antora/components/system/modules/generated/pages/index/DeepLinkService.adoc
new file mode 100644
index 0000000..881c40e
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/DeepLinkService.adoc
@@ -0,0 +1,10 @@
+= DeepLinkService : _interface_
+
+
+
+A service that creates a web link to any domain object in one of the Isis viewers.
+The implementation is specific to the viewer(s) configured for Isis. At the time of writing only one implementation is available, for the Wicket viewer.
+
+* `[teal]#*deepLinkFor*#(Object domainObject)` : `URI`
++
+Creates a URI that can be used to obtain a representation of the provided domain object in one of the Isis viewers.
diff --git a/antora/components/system/modules/generated/pages/index/DisabledException.adoc b/antora/components/system/modules/generated/pages/index/DisabledException.adoc
new file mode 100644
index 0000000..3ba0616
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/DisabledException.adoc
@@ -0,0 +1,6 @@
+= DisabledException : _class_
+
+
+
+Superclass of exceptions which indicate an attempt to interact with a class member that is disabled.
+
diff --git a/antora/components/system/modules/generated/pages/index/DomainChangeRecord.adoc b/antora/components/system/modules/generated/pages/index/DomainChangeRecord.adoc
new file mode 100644
index 0000000..bac6c18
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/DomainChangeRecord.adoc
@@ -0,0 +1,55 @@
+= DomainChangeRecord : _interface_
+
+
+
+An abstraction of some sort of recorded change to a domain object: commands, audit entries or published events.
+
+* `[teal]#*getType*#()` : `ChangeType`
++
+Distinguishes commands from audit entries from published events/interactions (when these are shown mixed together in a (standalone) table).
+
+
+* `[teal]#*getUniqueId*#()` : `UUID`
++
+The unique identifier (a GUID) of the transaction in which this change occurred.
+
+
+* `[teal]#*getUsername*#()` : `String`
++
+The user that caused the change.
+
+
+* `[teal]#*getTimestamp*#()` : `Timestamp`
++
+The time that the change occurred.
+
+
+* `[teal]#*getTargetObjectType*#()` : `String`
++
+The object type of the domain object being changed.
+
+
+* `[teal]#*getTarget*#()` : `xref:system:generated:index/Bookmark.adoc[Bookmark]`
++
+The xref:system:generated:index/Bookmark.adoc[Bookmark] identifying the domain object that has changed.
+
+
+* `[teal]#*getTargetMember*#()` : `String`
++
+The member interaction (ie action invocation or property edit) which caused the domain object to be changed.
++
+Populated for commands and for published events that represent action invocations or property edits.
+
+
+* `[teal]#*getPreValue*#()` : `String`
++
+The value of the property prior to it being changed.
++
+Populated only for audit entries.
+
+
+* `[teal]#*getPostValue*#()` : `String`
++
+The value of the property after it has changed.
++
+Populated only for audit entries.
diff --git a/antora/components/system/modules/generated/pages/index/DomainMember.adoc b/antora/components/system/modules/generated/pages/index/DomainMember.adoc
new file mode 100644
index 0000000..18045c7
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/DomainMember.adoc
@@ -0,0 +1,6 @@
+= DomainMember : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/DomainModel.adoc b/antora/components/system/modules/generated/pages/index/DomainModel.adoc
new file mode 100644
index 0000000..97de4c7
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/DomainModel.adoc
@@ -0,0 +1,6 @@
+= DomainModel : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/EmailNotificationService.adoc b/antora/components/system/modules/generated/pages/index/EmailNotificationService.adoc
new file mode 100644
index 0000000..8c30e4f
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/EmailNotificationService.adoc
@@ -0,0 +1,10 @@
+= EmailNotificationService : _interface_
+
+
+
+Supporting service for the user-registration functionality.
+The framework provides a default implementation which in turn uses the _org.apache.isis.applib.services.email.EmailService_ , namelyEmailServiceDefault.
+
+* `[teal]#*isConfigured*#()` : `boolean`
++
+Whether this service has been configured and thus available for use.
diff --git a/antora/components/system/modules/generated/pages/index/EmailRegistrationEvent.adoc b/antora/components/system/modules/generated/pages/index/EmailRegistrationEvent.adoc
new file mode 100644
index 0000000..f3e1b1e
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/EmailRegistrationEvent.adoc
@@ -0,0 +1,6 @@
+= EmailRegistrationEvent : _class_
+
+
+
+An event send to all services interested in user registration
+
diff --git a/antora/components/system/modules/generated/pages/index/EmailService.adoc b/antora/components/system/modules/generated/pages/index/EmailService.adoc
new file mode 100644
index 0000000..c64f9fb
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/EmailService.adoc
@@ -0,0 +1,10 @@
+= EmailService : _interface_
+
+
+
+Provides the ability to send emails to one or more recipients.
+The core framework also provides a default implementation `EmailServiceDefault` that sends email as an HTML message, using an external SMTP provider. See the Isis website for further details.
+
+* `[teal]#*isConfigured*#()` : `boolean`
++
+Whether this service has been configured and thus available for use.
diff --git a/antora/components/system/modules/generated/pages/index/EntityChanges.adoc b/antora/components/system/modules/generated/pages/index/EntityChanges.adoc
new file mode 100644
index 0000000..21aeeb3
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/EntityChanges.adoc
@@ -0,0 +1,6 @@
+= EntityChanges : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/EntityChangesLogger.adoc b/antora/components/system/modules/generated/pages/index/EntityChangesLogger.adoc
new file mode 100644
index 0000000..0dd7de8
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/EntityChangesLogger.adoc
@@ -0,0 +1,6 @@
+= EntityChangesLogger : _class_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/EntityChangesSubscriber.adoc b/antora/components/system/modules/generated/pages/index/EntityChangesSubscriber.adoc
new file mode 100644
index 0000000..89712f9
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/EntityChangesSubscriber.adoc
@@ -0,0 +1,9 @@
+= EntityChangesSubscriber : _interface_
+
+
+
+Part of the _Publishing SPI_ . A component to receive the entire set of entities (with publishing enabled) that are about to change, serializable as ChangesDto.
+
+* `[teal]#*onChanging*#(xref:system:generated:index/EntityChanges.adoc[EntityChanges] entityChanges)` : `void`
++
+Receives all changing entities (with publishing enabled) at then end of the a transaction during the pre-commit phase.
diff --git a/antora/components/system/modules/generated/pages/index/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/EntityPropertyChange.adoc
new file mode 100644
index 0000000..a2ad974
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/EntityPropertyChange.adoc
@@ -0,0 +1,6 @@
+= EntityPropertyChange : _class_
+
+
+
+Immutable data record for xref:system:generated:index/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
+
diff --git a/antora/components/system/modules/generated/pages/index/EntityPropertyChangeLogger.adoc b/antora/components/system/modules/generated/pages/index/EntityPropertyChangeLogger.adoc
new file mode 100644
index 0000000..dafebe3
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/EntityPropertyChangeLogger.adoc
@@ -0,0 +1,6 @@
+= EntityPropertyChangeLogger : _class_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/EntityPropertyChangeSubscriber.adoc b/antora/components/system/modules/generated/pages/index/EntityPropertyChangeSubscriber.adoc
new file mode 100644
index 0000000..6fb7813
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/EntityPropertyChangeSubscriber.adoc
@@ -0,0 +1,9 @@
+= EntityPropertyChangeSubscriber : _interface_
+
+
+
+Part of the _Publishing SPI_ . A component to receive pre-post property values for each changed entity (with publishing enabled).
+
+* `[teal]#*onChanging*#(xref:system:generated:index/EntityPropertyChange.adoc[EntityPropertyChange] entityPropertyChange)` : `void`
++
+Receives all pre-post property values for entities (with publishing enabled) at then end of the transaction during the pre-commit phase.
diff --git a/antora/components/system/modules/generated/pages/index/ErrorDetails.adoc b/antora/components/system/modules/generated/pages/index/ErrorDetails.adoc
new file mode 100644
index 0000000..d880fe2
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ErrorDetails.adoc
@@ -0,0 +1,7 @@
+= ErrorDetails : _class_
+
+
+
+Details of the error (obtained from the thrown exception), passed as part of the request to the xref:system:generated:index/ErrorReportingService.adoc[ErrorReportingService] .
+Implementation note: a class has been used here so that additional fields might be added in the future.
+
diff --git a/antora/components/system/modules/generated/pages/index/ErrorReportingService.adoc b/antora/components/system/modules/generated/pages/index/ErrorReportingService.adoc
new file mode 100644
index 0000000..b07360f
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ErrorReportingService.adoc
@@ -0,0 +1,6 @@
+= ErrorReportingService : _interface_
+
+
+
+Optional SPI service providing the ability to record errors occurring in the application into an external incident recording system (such as JIRA) and to provide a user-friendly (jargon-free) error message to the end-user, along with incident reference.
+
diff --git a/antora/components/system/modules/generated/pages/index/EventBusService.adoc b/antora/components/system/modules/generated/pages/index/EventBusService.adoc
new file mode 100644
index 0000000..e253a1b
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/EventBusService.adoc
@@ -0,0 +1,6 @@
+= EventBusService : _interface_
+
+
+
+A service implementing an Event Bus, allowing arbitrary events to be posted.
+
diff --git a/antora/components/system/modules/generated/pages/index/ExceptionHandler.adoc b/antora/components/system/modules/generated/pages/index/ExceptionHandler.adoc
new file mode 100644
index 0000000..a0cd3c8
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ExceptionHandler.adoc
@@ -0,0 +1,9 @@
+= ExceptionHandler : _interface_
+
+
+
+
+
+* `[teal]#*handle*#(Exception ex)` : `Object`
++
+Handle the exception in some way. Typically this will log and rethrow the exception. If necessary though it can return some other value instead (must be compatible with the expected return value of the interaction, that is, the action invocation or property edit).
diff --git a/antora/components/system/modules/generated/pages/index/ExceptionRecognizer.adoc b/antora/components/system/modules/generated/pages/index/ExceptionRecognizer.adoc
new file mode 100644
index 0000000..47a4b99
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ExceptionRecognizer.adoc
@@ -0,0 +1,13 @@
+= ExceptionRecognizer : _interface_
+
+
+
+Domain service to (attempt) to recognize certain exceptions, and return user-friendly messages instead.
+Rather than redirecting to a general-purpose error page, the message (corresponding to the recognized exception) is rendered as a regular validation message.
+More than one implementation of xref:system:generated:index/ExceptionRecognizer.adoc[ExceptionRecognizer] can be registered; they will all be consulted (in the order as specified by the @Order annotation) to determine if they recognize the exception. The message returned by the first service recognizing the exception is used.
+The Isis framework also provides a default implementation of this service that recognizes any _org.apache.isis.applib.RecoverableException_ , simply returning the exception's _org.apache.isis.applib.RecoverableException#getMessage() message_ . This allows any component or domain object to throw this exception with the knowledge that it will be handled appropriately.
+Initially introduced for the Wicket viewer; check the documentation of other viewers to determine whether they also support this service.
+
+* `[teal]#*recognize*#(Throwable ex)` : `Optional<Recognition>`
++
+(Attempt to) recognize the exception and return a user-friendly message to render instead.
diff --git a/antora/components/system/modules/generated/pages/index/ExceptionRecognizerService.adoc b/antora/components/system/modules/generated/pages/index/ExceptionRecognizerService.adoc
new file mode 100644
index 0000000..7667cab
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ExceptionRecognizerService.adoc
@@ -0,0 +1,17 @@
+= ExceptionRecognizerService : _interface_
+
+
+
+
+
+* `[teal]#*getExceptionRecognizers*#()` : `Can<xref:system:generated:index/ExceptionRecognizer.adoc[ExceptionRecognizer]>`
+
+
+* `[teal]#*recognize*#(Exception ex)` : `Optional<Recognition>`
++
+Takes into consideration ExceptionRecognizers as given by _#getExceptionRecognizers()_ .
+
+
+* `[teal]#*recognizeFromSelected*#(Can<xref:system:generated:index/ExceptionRecognizer.adoc[ExceptionRecognizer]> recognizers, Exception ex)` : `Optional<Recognition>`
++
+Takes into consideration ExceptionRecognizers as given by _recognizers_ .
diff --git a/antora/components/system/modules/generated/pages/index/ExecutionContext.adoc b/antora/components/system/modules/generated/pages/index/ExecutionContext.adoc
new file mode 100644
index 0000000..01b0d79
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ExecutionContext.adoc
@@ -0,0 +1,9 @@
+= ExecutionContext : _class_
+
+
+
+Provides the user and scenario specific environment for an _Interaction.Execution_
+
+* `[teal]#*_ofUserWithSystemDefaults_*#(xref:system:generated:index/UserMemento.adoc[UserMemento] user)` : `xref:system:generated:index/ExecutionContext.adoc[ExecutionContext]`
++
+Creates a new xref:system:generated:index/ExecutionContext.adoc[ExecutionContext] with the specified user and system defaults for clock, locale and time-zone.
diff --git a/antora/components/system/modules/generated/pages/index/ExecutionLogger.adoc b/antora/components/system/modules/generated/pages/index/ExecutionLogger.adoc
new file mode 100644
index 0000000..7cd5abc
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ExecutionLogger.adoc
@@ -0,0 +1,6 @@
+= ExecutionLogger : _class_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/ExecutionSubscriber.adoc b/antora/components/system/modules/generated/pages/index/ExecutionSubscriber.adoc
new file mode 100644
index 0000000..6872fae
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ExecutionSubscriber.adoc
@@ -0,0 +1,11 @@
+= ExecutionSubscriber : _interface_
+
+
+
+SPI that allows individual interactions (action invocations or property edits) to be _#publish(Interaction.Execution) published_ . Note that re-publishing is not part of this SPI.
+
+* `[teal]#*onExecution*#(Execution<?, ?> execution)` : `void`
++
+Publish each _Interaction.Execution_ immediately after it completes.
++
+Most implementations are expected to use _Interaction.Execution#getDto()_ to create a serializable XML representation of the execution. The easiest way to do this is using _InteractionDtoUtils#newInteractionDto(Interaction.Execution)_ . There is some flexibility here, though.
diff --git a/antora/components/system/modules/generated/pages/index/GridLoaderService.adoc b/antora/components/system/modules/generated/pages/index/GridLoaderService.adoc
new file mode 100644
index 0000000..506b2e7
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/GridLoaderService.adoc
@@ -0,0 +1,29 @@
+= GridLoaderService : _interface_
+
+
+
+
+
+* `[teal]#*supportsReloading*#()` : `boolean`
++
+Whether dynamic reloading of layouts is enabled.
+
+
+* `[teal]#*remove*#(Class<?> domainClass)` : `void`
++
+To support metamodel invalidation/rebuilding of spec.
+
+
+* `[teal]#*existsFor*#(Class<?> domainClass)` : `boolean`
++
+Whether any persisted layout metadata (eg a.layout.xmlfile) exists for this domain class.
+
+
+* `[teal]#*load*#(Class<?> domainClass)` : `Grid`
++
+Returns a new instance of a _Grid_ for the specified domain class, eg from alayout.xmlfile, elsenull.
+
+
+* `[teal]#*load*#(Class<?> domainClass, String layout)` : `Grid`
++
+Returns a new instance of a _Grid_ for the specified domain class, eg from alayout.xmlfile, elsenull.
diff --git a/antora/components/system/modules/generated/pages/index/GridService.adoc b/antora/components/system/modules/generated/pages/index/GridService.adoc
new file mode 100644
index 0000000..c782fdc
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/GridService.adoc
@@ -0,0 +1,55 @@
+= GridService : _interface_
+
+
+
+
+
+* `[teal]#*supportsReloading*#()` : `boolean`
++
+Whether dynamic reloading of layouts is enabled.
+
+
+* `[teal]#*remove*#(Class<?> domainClass)` : `void`
++
+To support metamodel invalidation/rebuilding of spec.
+
+
+* `[teal]#*existsFor*#(Class<?> domainClass)` : `boolean`
++
+Whether any persisted layout metadata (eg a.layout.xmlfile) exists for this domain class.
+
+
+* `[teal]#*load*#(Class<?> domainClass)` : `Grid`
++
+Returns a new instance of a _Grid_ for the specified domain class, eg from alayout.xmlfile, elsenull.
+
+
+* `[teal]#*load*#(Class<?> domainClass, String layout)` : `Grid`
++
+Returns a new instance of a _Grid_ for the specified domain class, eg from a[domainClass].layout.[layout].xmlfile, elsenull.
+
+
+* `[teal]#*defaultGridFor*#(Class<?> domainClass)` : `Grid`
++
+Returns a default grid; eg where none can be loaded using _#load(Class)_ .
+
+
+* `[teal]#*normalize*#(Grid grid)` : `Grid`
++
+Returns a normalized grid for the domain class obtained previously using _#load(Class)_ .
++
+If a "normalized" grid is persisted as thelayout.xml, then the expectation is that the _MemberOrder_ annotation can be removed from the domain class because the binding of properties/collections/actions will be within the XML. However, the layout annotations ( _DomainObjectLayout_ , _ActionLayout_ , _PropertyLayout_ and _CollectionLayout_ ) (if present) will continue to be used to provide additional layout metadata. Of course, there is nothing to prevent the developer from extending the  [...]
+
+
+* `[teal]#*complete*#(Grid grid)` : `Grid`
++
+Modifies the provided _Grid_ with additional metadata, broadly speaking corresponding to the _DomainObjectLayout_ , _ActionLayout_ , _PropertyLayout_ and _CollectionLayout_ .
++
+If a "completed" grid is persisted as thelayout.xml, then there should be no need for any of the layout annotations, nor the _MemberOrder_ annotations, to be required in the domain class itself.
+
+
+* `[teal]#*minimal*#(Grid grid)` : `Grid`
++
+Modifies the provided _Grid_ , removing all metadata except the basic grid structure.
++
+If a "minimal" grid is persisted as thelayout.xml, then the expectation is that most of the layout annotations ( _DomainObjectLayout_ , _ActionLayout_ , _PropertyLayout_ , _CollectionLayout_ , but also _MemberOrder_ ) will still be retained in the domain class code.
diff --git a/antora/components/system/modules/generated/pages/index/GridSystemService.adoc b/antora/components/system/modules/generated/pages/index/GridSystemService.adoc
new file mode 100644
index 0000000..f58ad9a
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/GridSystemService.adoc
@@ -0,0 +1,14 @@
+= GridSystemService : _interface_
+
+
+
+Provides an implementation of _Grid_ .
+
+* `[teal]#*gridImplementation*#()` : `Class<G>`
++
+Which grid (implementation) is defined by this service.
+
+
+* `[teal]#*normalize*#(G grid, Class<?> domainClass)` : `void`
++
+Validate the grid, derive any missing object members, and overwrite any facets in the metamodel based on the layout.
diff --git a/antora/components/system/modules/generated/pages/index/HasCommandDto.adoc b/antora/components/system/modules/generated/pages/index/HasCommandDto.adoc
new file mode 100644
index 0000000..50ec0cd
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/HasCommandDto.adoc
@@ -0,0 +1,6 @@
+= HasCommandDto : _interface_
+
+
+
+Objects implementing this interface will be processed automatically by _org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandDto_ .
+
diff --git a/antora/components/system/modules/generated/pages/index/Health.adoc b/antora/components/system/modules/generated/pages/index/Health.adoc
new file mode 100644
index 0000000..0dfabf6
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/Health.adoc
@@ -0,0 +1,6 @@
+= Health : _class_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/HealthCheckService.adoc b/antora/components/system/modules/generated/pages/index/HealthCheckService.adoc
new file mode 100644
index 0000000..80410d8
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/HealthCheckService.adoc
@@ -0,0 +1,6 @@
+= HealthCheckService : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/HiddenException.adoc b/antora/components/system/modules/generated/pages/index/HiddenException.adoc
new file mode 100644
index 0000000..7fc0668
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/HiddenException.adoc
@@ -0,0 +1,6 @@
+= HiddenException : _class_
+
+
+
+Superclass of exceptions which indicate an attempt to interact with a class member that is in some way hidden or invisible.
+
diff --git a/antora/components/system/modules/generated/pages/index/HintStore.adoc b/antora/components/system/modules/generated/pages/index/HintStore.adoc
new file mode 100644
index 0000000..7e544bf
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/HintStore.adoc
@@ -0,0 +1,6 @@
+= HintStore : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/HomePageResolverService.adoc b/antora/components/system/modules/generated/pages/index/HomePageResolverService.adoc
new file mode 100644
index 0000000..0e17757
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/HomePageResolverService.adoc
@@ -0,0 +1,6 @@
+= HomePageResolverService : _interface_
+
+
+
+Returns a view model annotated with _HomePage_ .
+
diff --git a/antora/components/system/modules/generated/pages/index/Interaction.adoc b/antora/components/system/modules/generated/pages/index/Interaction.adoc
new file mode 100644
index 0000000..29afbc2
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/Interaction.adoc
@@ -0,0 +1,22 @@
+= Interaction : _interface_
+
+
+
+Represents an action invocation or property modification, resulting in some state change of the system. It captures not only the target object and arguments passed, but also builds up the call-graph, and captures metrics, eg for profiling.
+The distinction between xref:system:generated:index/Command.adoc[Command] and this object is perhaps subtle: the former represents the intention to invoke an action/edit a property, whereas this represents the actual invocation/edit itself.
+To confuse matters slightly, historically the xref:system:generated:index/Command.adoc[Command] interface defines members (specifically: _Command#getStartedAt()_ , _Command#getCompletedAt()_ , _Command#getResult()_ , _Command#getException()_ ) which logically belong to this class instead; they remain in xref:system:generated:index/Command.adoc[Command] for backward compatibility only (and have been deprecated).
+NOTE: you could also think of this interface as being analogous to the (database) transaction. The name "Transaction" has not been used for the interface not chosen however because there is also the system-level transaction that manages the persistence of the xref:system:generated:index/Command.adoc[Command] object itself.
+
+* `[teal]#*getCurrentExecution*#()` : `Execution<?, ?>`
++
+The current (most recently pushed) _Execution_ .
+
+
+* `[teal]#*getPriorExecution*#()` : `Execution<?, ?>`
++
+The execution that preceded the current one.
+
+
+* `[teal]#*next*#(String sequenceId)` : `int`
++
+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 _Sequence_ enum.
diff --git a/antora/components/system/modules/generated/pages/index/InteractionAdapter.adoc b/antora/components/system/modules/generated/pages/index/InteractionAdapter.adoc
new file mode 100644
index 0000000..6e90c40
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/InteractionAdapter.adoc
@@ -0,0 +1,6 @@
+= InteractionAdapter : _class_
+
+
+
+Provides no-op implementations of each of the methods within xref:system:generated:index/InteractionListener.adoc[InteractionListener] , to simplify the creation of new listeners.
+
diff --git a/antora/components/system/modules/generated/pages/index/InteractionContext.adoc b/antora/components/system/modules/generated/pages/index/InteractionContext.adoc
new file mode 100644
index 0000000..31c43f3
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/InteractionContext.adoc
@@ -0,0 +1,9 @@
+= InteractionContext : _interface_
+
+
+
+Provides the current thread's xref:system:generated:index/Interaction.adoc[Interaction] .
+
+* `[teal]#*currentInteraction*#()` : `Optional<xref:system:generated:index/Interaction.adoc[Interaction]>`
++
+Optionally, the currently active xref:system:generated:index/Interaction.adoc[Interaction] for the calling thread.
diff --git a/antora/components/system/modules/generated/pages/index/InteractionEvent.adoc b/antora/components/system/modules/generated/pages/index/InteractionEvent.adoc
new file mode 100644
index 0000000..18fc985
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/InteractionEvent.adoc
@@ -0,0 +1,84 @@
+= InteractionEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents an interaction with a domain object or a particular feature (property, collection, action) of a domain object.
+Many of the interactions are checks for _VisibilityEvent visibility_ , _UsabilityEvent usability_ and _ValidityEvent validity_ .
+
+* `[teal]#*getSource*#()` : `Object`
++
+The domain object (pojo) against which the interaction occurred.
+
+
+* `[teal]#*getIdentifier*#()` : `Identifier`
++
+The _Identifier_ of the feature of the object being interacted with.
++
+Will be consistent with the subclass of xref:system:generated:index/InteractionEvent.adoc[InteractionEvent] . So for example a xref:system:generated:index/PropertyModifyEvent.adoc[PropertyModifyEvent] will have an _Identifier_ that identifies the property being modified.
+
+
+* `[teal]#*getClassName*#()` : `String`
++
+As per _#getClassName()_ , but naturalized.
+
+
+* `[teal]#*getClassNaturalName*#()` : `String`
++
+Convenience method that returns the _Identifier#getClassNaturalName() natural class name_ of the _#getIdentifier() identifier_ .
+
+
+* `[teal]#*getMemberName*#()` : `String`
++
+Convenience method that returns the _Identifier#getMemberName() member name_ of the _#getIdentifier() identifier_ .
+
+
+* `[teal]#*getMemberNaturalName*#()` : `String`
++
+As per _#getMemberName()_ , but naturalized.
+
+
+* `[teal]#*getMemberParameterNames*#()` : `List<String>`
++
+Convenience method that returns the _Identifier#getClassName() class name_ of the _#getIdentifier() identifier_ .
+
+
+* `[teal]#*getMemberParameterNaturalNames*#()` : `List<String>`
++
+As per _#getMemberParameterName()_ , but naturalized.
+
+
+* `[teal]#*getReason*#()` : `String`
++
+The reason, if any, that this interaction may have been vetoed or otherwise disallowed.
++
+Intended to be _#setExecuteIn(String) set_ as a result of consulting one of the facets.
+
+
+* `[teal]#*getReasonMessage*#()` : `String`
++
+The reason message, if any, that this interaction may have been vetoed or otherwise disallowed.
++
+This message should be overridden by subclasses for containing the Reason, the Identifier and any other relevant context information.
+
+
+* `[teal]#*getAdvisorClass*#()` : `Class<?>`
++
+The class of the (first) advisor, if any, that provided the _#getReason() reason_ that this interaction is _#isVeto() vetoed_ .
+
+
+* `[teal]#*advised*#(String reason, Class<?> advisorClass)` : `void`
++
+Specify the _#getReason() reason_ that this interaction has been vetoed and the _#getAdvisorClass() class of the advisor_ that did the veto.
+
+
+* `[teal]#*isVeto*#()` : `boolean`
++
+Whether this interaction has been vetoed (meaning that _#getReason()_ and _#getAdvisorClass()_ will both be non- `null` and the _#getReason() reason_ non-empty.)
++
+The interpretation of this depends on the subclass:
++
+** for xref:system:generated:index/VisibilityEvent.adoc[VisibilityEvent] , a veto means that the feature (property, collection, action) is hidden
++
+** for xref:system:generated:index/UsabilityEvent.adoc[UsabilityEvent] , a veto means that the feature is disabled
++
+** for xref:system:generated:index/ValidityEvent.adoc[ValidityEvent] , a veto means that the proposed modification (property value, object added/removed, action argument) is invalid
diff --git a/antora/components/system/modules/generated/pages/index/InteractionListener.adoc b/antora/components/system/modules/generated/pages/index/InteractionListener.adoc
new file mode 100644
index 0000000..5d1ee34
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/InteractionListener.adoc
@@ -0,0 +1,102 @@
+= InteractionListener : _interface_
+
+
+
+
+
+* `[teal]#*objectTitleRead*#(xref:system:generated:index/ObjectTitleEvent.adoc[ObjectTitleEvent] ev)` : `void`
++
+The title was read.
+
+
+* `[teal]#*objectPersisted*#(xref:system:generated:index/ObjectValidityEvent.adoc[ObjectValidityEvent] ev)` : `void`
++
+The object was persisted (or an attempt to persist it was made).
+
+
+* `[teal]#*propertyVisible*#(xref:system:generated:index/PropertyVisibilityEvent.adoc[PropertyVisibilityEvent] ev)` : `void`
++
+A check was made to determine if a property was visible.
+
+
+* `[teal]#*propertyUsable*#(xref:system:generated:index/PropertyUsabilityEvent.adoc[PropertyUsabilityEvent] ev)` : `void`
++
+A check was made to determine if a property was usable.
+
+
+* `[teal]#*propertyAccessed*#(xref:system:generated:index/PropertyAccessEvent.adoc[PropertyAccessEvent] ev)` : `void`
++
+A property was read.
++
+Unlike most other events, a xref:system:generated:index/PropertyAccessEvent.adoc[PropertyAccessEvent] will never have been vetoed (that is, _PropertyAccessEvent#isVeto()_ will always be `false` ).
+
+
+* `[teal]#*propertyModified*#(xref:system:generated:index/PropertyModifyEvent.adoc[PropertyModifyEvent] ev)` : `void`
++
+A property was modified (or an attempt to modify it was made)
++
+Use _PropertyModifyEvent#getProposed()_ to determine whether the property was being set or cleared.
+
+
+* `[teal]#*collectionVisible*#(CollectionVisibilityEvent ev)` : `void`
++
+A check was made to determine if a collection was visible.
++
+Will be fired prior to _#collectionUsable(CollectionUsabilityEvent)_ .
+
+
+* `[teal]#*collectionUsable*#(xref:system:generated:index/CollectionUsabilityEvent.adoc[CollectionUsabilityEvent] ev)` : `void`
++
+A check was made to determine if a collection was usable.
++
+Will be fired prior to either _#collectionAccessed(CollectionAccessEvent)_ or _#collectionAddedTo(CollectionAddToEvent)_ or _#collectionRemovedFrom(CollectionRemoveFromEvent)_ .
+
+
+* `[teal]#*collectionAccessed*#(xref:system:generated:index/CollectionAccessEvent.adoc[CollectionAccessEvent] ev)` : `void`
++
+A collection was read.
++
+Unlike most other events, a xref:system:generated:index/CollectionAccessEvent.adoc[CollectionAccessEvent] will never have been vetoed (that is, _CollectionAccessEvent#isVeto()_ will always be `false` ).
+
+
+* `[teal]#*collectionAddedTo*#(xref:system:generated:index/CollectionAddToEvent.adoc[CollectionAddToEvent] ev)` : `void`
++
+An object was added to the collection (or an attempt to add it was made).
+
+
+* `[teal]#*collectionRemovedFrom*#(xref:system:generated:index/CollectionRemoveFromEvent.adoc[CollectionRemoveFromEvent] ev)` : `void`
++
+An object was removed from the collection (or an attempt to remove it was made).
+
+
+* `[teal]#*collectionMethodInvoked*#(xref:system:generated:index/CollectionMethodEvent.adoc[CollectionMethodEvent] interactionEvent)` : `void`
++
+A method of a collection (such as `isEmpty()` or `size()` ) has been invoked.
++
+Unlike the other methods in this interface, the source of these events will be an instance of a Collection (such as `java.util.List` ) rather than the domain object. (The domain object is {@link CollectionMethodEvent#getDomainObject() still available, however).
+
+
+* `[teal]#*actionVisible*#(xref:system:generated:index/ActionVisibilityEvent.adoc[ActionVisibilityEvent] interactionEvent)` : `void`
++
+A check was made to determine if an action was visible.
++
+Will be fired prior to _#actionUsable(ActionUsabilityEvent)_ .
+
+
+* `[teal]#*actionUsable*#(xref:system:generated:index/ActionUsabilityEvent.adoc[ActionUsabilityEvent] ev)` : `void`
++
+A check was made to determine if an action was usable.
++
+Will be fired prior to _#actionArgument(ActionArgumentEvent)_ .
+
+
+* `[teal]#*actionArgument*#(xref:system:generated:index/ActionArgumentEvent.adoc[ActionArgumentEvent] ev)` : `void`
++
+A check was made as to whether an argument proposed for an action was valid.
++
+Will be fired prior to _#actionInvoked(ActionInvocationEvent)_ .
+
+
+* `[teal]#*actionInvoked*#(xref:system:generated:index/ActionInvocationEvent.adoc[ActionInvocationEvent] ev)` : `void`
++
+An action was invoked (or an attempt to invoke it was made).
diff --git a/antora/components/system/modules/generated/pages/index/InvalidException.adoc b/antora/components/system/modules/generated/pages/index/InvalidException.adoc
new file mode 100644
index 0000000..3b9bddc
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/InvalidException.adoc
@@ -0,0 +1,6 @@
+= InvalidException : _class_
+
+
+
+Superclass of exceptions which indicate an attempt to interact with an object or member in a way that is invalid.
+
diff --git a/antora/components/system/modules/generated/pages/index/JaxbService.adoc b/antora/components/system/modules/generated/pages/index/JaxbService.adoc
new file mode 100644
index 0000000..ace1877
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/JaxbService.adoc
@@ -0,0 +1,14 @@
+= JaxbService : _interface_
+
+
+
+
+
+* `[teal]#*fromXml*#<T>(Class<T> domainClass, String xml)` : `T`
++
+As _#fromXml(JAXBContext, String)_ , but downcast to a specific type.
+
+
+* `[teal]#*fromXml*#<T>(Class<T> domainClass, String xml, Map<String, Object> unmarshallerProperties)` : `T`
++
+As _#fromXml(JAXBContext, String, Map)_ , but downcast to a specific type.
diff --git a/antora/components/system/modules/generated/pages/index/LayoutService.adoc b/antora/components/system/modules/generated/pages/index/LayoutService.adoc
new file mode 100644
index 0000000..a777f1a
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/LayoutService.adoc
@@ -0,0 +1,19 @@
+= LayoutService : _interface_
+
+
+
+
+
+* `[teal]#*toXml*#(Class<?> domainClass, Style style)` : `String`
++
+Obtains the serialized XML form of the layout (grid) for the specified domain class.
+
+
+* `[teal]#*toZip*#(Style style)` : `byte[]`
++
+Obtains a zip file of the serialized XML of the layouts (grids) of all domain entities and view models.
+
+
+* `[teal]#*toMenuBarsXml*#(Type type)` : `String`
++
+Obtains the serialized XML form of the menu bars layout ( xref:system:generated:index/MenuBarsService.adoc[MenuBarsService] ).
diff --git a/antora/components/system/modules/generated/pages/index/LayoutServiceMenu.adoc b/antora/components/system/modules/generated/pages/index/LayoutServiceMenu.adoc
new file mode 100644
index 0000000..67979b2
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/LayoutServiceMenu.adoc
@@ -0,0 +1,6 @@
+= LayoutServiceMenu : _class_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/LocaleProvider.adoc b/antora/components/system/modules/generated/pages/index/LocaleProvider.adoc
new file mode 100644
index 0000000..445e454
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/LocaleProvider.adoc
@@ -0,0 +1,6 @@
+= LocaleProvider : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/MenuBarsLoaderService.adoc b/antora/components/system/modules/generated/pages/index/MenuBarsLoaderService.adoc
new file mode 100644
index 0000000..412af6a
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/MenuBarsLoaderService.adoc
@@ -0,0 +1,14 @@
+= MenuBarsLoaderService : _interface_
+
+
+
+
+
+* `[teal]#*supportsReloading*#()` : `boolean`
++
+Whether dynamic reloading of layouts is enabled.
+
+
+* `[teal]#*menuBars*#()` : `BS3MenuBars`
++
+Returns a new instance of a _BS3MenuBars_ , else `null` .
diff --git a/antora/components/system/modules/generated/pages/index/MenuBarsService.adoc b/antora/components/system/modules/generated/pages/index/MenuBarsService.adoc
new file mode 100644
index 0000000..f71e37e
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/MenuBarsService.adoc
@@ -0,0 +1,9 @@
+= MenuBarsService : _interface_
+
+
+
+
+
+* `[teal]#*menuBars*#()` : `MenuBars`
++
+Returns _#menuBars()_ with a type of _Type#DEFAULT_ .
diff --git a/antora/components/system/modules/generated/pages/index/MessageService.adoc b/antora/components/system/modules/generated/pages/index/MessageService.adoc
new file mode 100644
index 0000000..ff117be
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/MessageService.adoc
@@ -0,0 +1,55 @@
+= MessageService : _interface_
+
+
+
+
+
+* `[teal]#*informUser*#(String message)` : `void`
++
+Make the specified message available to the user. Note this will probably be displayed in transitory fashion, so is only suitable for useful but optional information.
+
+
+* `[teal]#*informUser*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, Class<?> contextClass, String contextMethod)` : `String`
++
+Make the specified message available to the user, translated (if possible) to user's locale.
++
+More precisely, the locale is as provided by the configured _org.apache.isis.applib.services.i18n.LocaleProvider_ service. This will most commonly be the locale of the current request (ie the current user's locale).
+
+
+* `[teal]#*informUser*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, String translationContext)` : `String`
++
+Override of _MessageService#informUser(TranslatableString, Class, String)_ , but with last two parameters combined into a context string.
+
+
+* `[teal]#*warnUser*#(String message)` : `void`
++
+Warn the user about a situation with the specified message. The container should guarantee to display this warning to the user, and will typically require acknowledgement.
+
+
+* `[teal]#*warnUser*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, Class<?> contextClass, String contextMethod)` : `String`
++
+Warn the user about a situation with the specified message, translated (if possible) to user's locale.
++
+More precisely, the locale is as provided by the configured _org.apache.isis.applib.services.i18n.LocaleProvider_ service. This will most commonly be the locale of the current request (ie the current user's locale).
+
+
+* `[teal]#*warnUser*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, String translationContext)` : `String`
++
+Override of _MessageService#warnUser(TranslatableString, Class, String)_ , but with last two parameters combined into a context string.
+
+
+* `[teal]#*raiseError*#(String message)` : `void`
++
+Notify the user of an application error with the specified message. Note this will probably be displayed in an alarming fashion, so is only suitable for errors. The user will typically be required to perform additional steps after the error (eg to inform the helpdesk).
+
+
+* `[teal]#*raiseError*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, Class<?> contextClass, String contextMethod)` : `String`
++
+Notify the user of an application error with the specified message, translated (if possible) to user's locale.
++
+More precisely, the locale is as provided by the configured _org.apache.isis.applib.services.i18n.LocaleProvider_ service. This will most commonly be the locale of the current request (ie the current user's locale).
+
+
+* `[teal]#*raiseError*#(xref:system:generated:index/TranslatableString.adoc[TranslatableString] message, String translationContext)` : `String`
++
+Override of _MessageService#raiseError(TranslatableString, Class, String)_ , but with last two parameters combined into a context string.
diff --git a/antora/components/system/modules/generated/pages/index/MetaModelService.adoc b/antora/components/system/modules/generated/pages/index/MetaModelService.adoc
new file mode 100644
index 0000000..7c668b8
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/MetaModelService.adoc
@@ -0,0 +1,24 @@
+= MetaModelService : _interface_
+
+
+
+This service provides a formal API into Isis' metamodel.
+This API is currently extremely limited, but the intention is to extend it gradually as use cases emerge.
+
+* `[teal]#*fromObjectType*#(String objectType)` : `Class<?>`
++
+Provides a reverse lookup of a domain class' object type, as defined by _DomainObject#objectType()_ (or any other mechanism that corresponds to Isis'ObjectSpecIdFacet).
+
+
+* `[teal]#*toObjectType*#(Class<?> domainType)` : `String`
++
+Provides a lookup of a domain class' object type, as defined by _DomainObject#objectType()_ (or any other mechanism that corresponds to Isis'ObjectSpecIdFacet).
+
+
+* `[teal]#*getDomainModel*#()` : `xref:system:generated:index/DomainModel.adoc[DomainModel]`
++
+Returns a list of representations of each of member of each domain class.
++
+Used by xref:system:generated:index/MetaModelServiceMenu.adoc[MetaModelServiceMenu] to return a downloadable CSV.
++
+Note that _MetaModelService#exportMetaModel(Config)_ provides a superset of the functionality provided by this method.
diff --git a/antora/components/system/modules/generated/pages/index/MetaModelServiceMenu.adoc b/antora/components/system/modules/generated/pages/index/MetaModelServiceMenu.adoc
new file mode 100644
index 0000000..188cde7
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/MetaModelServiceMenu.adoc
@@ -0,0 +1,6 @@
+= MetaModelServiceMenu : _class_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/MethodReferences.adoc b/antora/components/system/modules/generated/pages/index/MethodReferences.adoc
new file mode 100644
index 0000000..a38edc5
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/MethodReferences.adoc
@@ -0,0 +1,6 @@
+= MethodReferences : _class_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/MetricsService.adoc b/antora/components/system/modules/generated/pages/index/MetricsService.adoc
new file mode 100644
index 0000000..5802df9
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/MetricsService.adoc
@@ -0,0 +1,22 @@
+= MetricsService : _interface_
+
+
+
+
+
+* `[teal]#*numberEntitiesLoaded*#()` : `int`
++
+The number of entities that have, so far in this request, been loaded from the database.
++
+Corresponds to the number of times thatjavax.jdo.listener.LoadLifecycleListener#postLoad(InstanceLifecycleEvent)(or equivalent) is fired.
++
+Is captured within _MemberExecutionDto#getMetrics()_ (accessible from _InteractionContext#currentInteraction()_ ).
+
+
+* `[teal]#*numberEntitiesDirtied*#()` : `int`
++
+The number of objects that have, so far in this request, been dirtied/will need updating in the database); a good measure of the footprint of the interaction.
++
+Corresponds to the number of times thatjavax.jdo.listener.DirtyLifecycleListener#preDirty(InstanceLifecycleEvent)(or equivalent) callback is fired.
++
+Is captured within _MemberExecutionDto#getMetrics()_ (accessible from _InteractionContext#currentInteraction()_ .
diff --git a/antora/components/system/modules/generated/pages/index/ObjectTitleEvent.adoc b/antora/components/system/modules/generated/pages/index/ObjectTitleEvent.adoc
new file mode 100644
index 0000000..70d321c
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ObjectTitleEvent.adoc
@@ -0,0 +1,7 @@
+= ObjectTitleEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents an access (reading) of an object's title.
+The _#getReason()_ will always be `null` ; access is always allowed.
+
diff --git a/antora/components/system/modules/generated/pages/index/ObjectValidityEvent.adoc b/antora/components/system/modules/generated/pages/index/ObjectValidityEvent.adoc
new file mode 100644
index 0000000..849af98
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ObjectValidityEvent.adoc
@@ -0,0 +1,7 @@
+= ObjectValidityEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents a check as to whether the current values of the properties/collections of an object are valid (for example, prior to saving that object).
+If _#getReason()_ is not `null` then provides the reason why the object is invalid, otherwise ok.
+
diff --git a/antora/components/system/modules/generated/pages/index/ObjectVisibilityEvent.adoc b/antora/components/system/modules/generated/pages/index/ObjectVisibilityEvent.adoc
new file mode 100644
index 0000000..c2eb430
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ObjectVisibilityEvent.adoc
@@ -0,0 +1,7 @@
+= ObjectVisibilityEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents a check as to whether an object is visible or has been hidden.
+If _#getReason()_ is not `null` then provides the reason why the object is invisible; otherwise action is visible.
+
diff --git a/antora/components/system/modules/generated/pages/index/ParseValueEvent.adoc b/antora/components/system/modules/generated/pages/index/ParseValueEvent.adoc
new file mode 100644
index 0000000..b776157
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ParseValueEvent.adoc
@@ -0,0 +1,10 @@
+= ParseValueEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents a check as to whether the proposed values of the value type is valid.
+If _#getReason()_ is not `null` then provides the reason why the proposed value is invalid, otherwise the new value is acceptable.
+
+* `[teal]#*getSource*#()` : `Object`
++
+Will be the source provided in the _#ParseValueEvent(Object, Identifier, String) constructor_ if not null, otherwise will fallback to the proposed value.
diff --git a/antora/components/system/modules/generated/pages/index/PasswordResetEvent.adoc b/antora/components/system/modules/generated/pages/index/PasswordResetEvent.adoc
new file mode 100644
index 0000000..9dacbf0
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/PasswordResetEvent.adoc
@@ -0,0 +1,6 @@
+= PasswordResetEvent : _class_
+
+
+
+An event send to all services interested in user password reset
+
diff --git a/antora/components/system/modules/generated/pages/index/PropertyAccessEvent.adoc b/antora/components/system/modules/generated/pages/index/PropertyAccessEvent.adoc
new file mode 100644
index 0000000..706ada5
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/PropertyAccessEvent.adoc
@@ -0,0 +1,7 @@
+= PropertyAccessEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents an access (reading) of a property.
+Analogous to xref:system:generated:index/PropertyModifyEvent.adoc[PropertyModifyEvent] , however the _#getReason()_ will always be `null` . (If access is not allowed then a xref:system:generated:index/PropertyVisibilityEvent.adoc[PropertyVisibilityEvent] would have been fired).
+
diff --git a/antora/components/system/modules/generated/pages/index/PropertyModifyEvent.adoc b/antora/components/system/modules/generated/pages/index/PropertyModifyEvent.adoc
new file mode 100644
index 0000000..35eb279
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/PropertyModifyEvent.adoc
@@ -0,0 +1,10 @@
+= PropertyModifyEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents a check as to whether a particular value for a property is valid or not.
+If _#getReason()_ is not `null` then provides the reason why the value is invalid; otherwise the value is valid.
+
+* `[teal]#*getProposed*#()` : `Object`
++
+If `null` , then the property was cleared.
diff --git a/antora/components/system/modules/generated/pages/index/PropertyUsabilityEvent.adoc b/antora/components/system/modules/generated/pages/index/PropertyUsabilityEvent.adoc
new file mode 100644
index 0000000..9629204
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/PropertyUsabilityEvent.adoc
@@ -0,0 +1,7 @@
+= PropertyUsabilityEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents a check as to whether a property is usable or has been disabled.
+If _#getReason()_ is not `null` then provides the reason why the property is disabled; otherwise property is enabled.
+
diff --git a/antora/components/system/modules/generated/pages/index/PropertyVisibilityEvent.adoc b/antora/components/system/modules/generated/pages/index/PropertyVisibilityEvent.adoc
new file mode 100644
index 0000000..31cf56e
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/PropertyVisibilityEvent.adoc
@@ -0,0 +1,7 @@
+= PropertyVisibilityEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents a check as to whether a property is visible or has been hidden.
+If _#getReason()_ is not `null` then provides the reason why the property is invisible; otherwise property is visible.
+
diff --git a/antora/components/system/modules/generated/pages/index/ProposedHolderEvent.adoc b/antora/components/system/modules/generated/pages/index/ProposedHolderEvent.adoc
new file mode 100644
index 0000000..6c4ee18
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ProposedHolderEvent.adoc
@@ -0,0 +1,6 @@
+= ProposedHolderEvent : _interface_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ makes it easier to process different events that hold a single proposed argument (such as xref:system:generated:index/CollectionAddToEvent.adoc[CollectionAddToEvent] and xref:system:generated:index/PropertyModifyEvent.adoc[PropertyModifyEvent] ).
+
diff --git a/antora/components/system/modules/generated/pages/index/QueryResultCacheControl.adoc b/antora/components/system/modules/generated/pages/index/QueryResultCacheControl.adoc
new file mode 100644
index 0000000..62f44a0
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/QueryResultCacheControl.adoc
@@ -0,0 +1,6 @@
+= QueryResultCacheControl : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/QueryResultsCache.adoc b/antora/components/system/modules/generated/pages/index/QueryResultsCache.adoc
new file mode 100644
index 0000000..e4ecaf5
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/QueryResultsCache.adoc
@@ -0,0 +1,10 @@
+= QueryResultsCache : _interface_
+
+
+
+This service (API and implementation) provides a mechanism by which idempotent query results can be cached for the duration of an interaction. Most commonly this allows otherwise "naive" - eg that makes a repository call many times within a loop - to be performance tuned. The benefit is that the algorithm of the business logic can remain easy to understand.
+This implementation has no UI and there is only one implementation (this class) in applib, it is annotated with _org.apache.isis.applib.annotation.DomainService_ . This means that it is automatically registered and available for use; no further configuration is required.
+
+* `[teal]#*onTransactionEnded*#()` : `void`
++
+Not API, for framework use only.
diff --git a/antora/components/system/modules/generated/pages/index/RepositoryService.adoc b/antora/components/system/modules/generated/pages/index/RepositoryService.adoc
new file mode 100644
index 0000000..811a26e
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/RepositoryService.adoc
@@ -0,0 +1,160 @@
+= RepositoryService : _interface_
+
+
+
+
+
+* `[teal]#*getEntityState*#(Object object)` : `EntityState`
++
+Returns the EntityState of given _object_ . Returns _EntityState#NOT_PERSISTABLE_ for _object==null_ .
+
+
+* `[teal]#*detachedEntity*#<T>(T entity)` : `T`
++
+Same as _org.apache.isis.applib.services.factory.FactoryService#detachedEntity(Object)_ ; provided as a convenience because instantiating and _#persist(Object) persisting_ are often done together.
+
+
+* `[teal]#*persist*#<T>(T domainObject)` : `T`
++
+Persist the specified object (or do nothing if already persistent).
+
+
+* `[teal]#*persistAndFlush*#<T>(T domainObject)` : `T`
++
+Persist the specified object (or do nothing if already persistent) and flushes changes to the database.
+
+
+* `[teal]#*remove*#(Object domainObject)` : `void`
++
+Deletes the domain object but only if is attached.
+
+
+* `[teal]#*removeAndFlush*#(Object domainObject)` : `void`
++
+Deletes the domain object but only if is persistent, and flushes changes to the database.
+
+
+* `[teal]#*removeAll*#<T>(Class<T> cls)` : `void`
++
+Removes all instances of the domain object.
++
+Intended primarily for testing purposes.
+
+
+* `[teal]#*allInstances*#<T>(Class<T> ofType)` : `List<T>`
++
+As _#allInstances(Class, long, long)_ , but but returning all instances rather than just those * within the specified range..
+
+
+* `[teal]#*allInstances*#<T>(Class<T> ofType, long start, long count)` : `List<T>`
++
+Returns all the instances of the specified type (including subtypes). If the optional range parameters are used, the dataset returned starts from (0 based) index, and consists of only up to count items.
++
+If there are no instances the list will be empty. This method creates a new _List_ object each time it is called so the caller is free to use or modify the returned _List_ , but the changes will not be reflected back to the repository.
++
+This method should only be called where the number of instances is known to be relatively low, unless the optional range parameters (2 longs) are specified. The range parameters are "start" and "count".
+
+
+* `[teal]#*allMatches*#<T>(Class<T> ofType, Predicate<? super T> predicate)` : `List<T>`
++
+As _#allMatches(Class, Predicate, long, long)_ , but returning all instances rather than just those within the specified range.
+
+
+* `[teal]#*allMatches*#<T>(Class<T> ofType, Predicate<? super T> predicate, long start, long count)` : `List<T>`
++
+Returns all the instances of the specified type (including subtypes) that the predicate object accepts. If the optional range parameters are used, the dataset returned starts from (0 based) index, and consists of only up to count items.
++
+If there are no instances the list will be empty. This method creates a new _List_ object each time it is called so the caller is free to use or modify the returned _List_ , but the changes will not be reflected back to the repository.
++
+This method is useful during exploration/prototyping, but - because the filtering is performed client-side - this method is only really suitable for initial development/prototyping, or for classes with very few instances. Use _#allMatches(Query)_ for production code.
+
+
+* `[teal]#*allMatches*#<T>(Query<T> query)` : `List<T>`
++
+Returns all the instances that match the given _Query_ .
++
+If there are no instances the list will be empty. This method creates a new _List_ object each time it is called so the caller is free to use or modify the returned _List_ , but the changes will not be reflected back to the repository.
++
+This method is the recommended way of querying for multiple instances.
+
+
+* `[teal]#*uniqueMatch*#<T>(Class<T> ofType, Predicate<T> predicate)` : `Optional<T>`
++
+Find the only instance of the specified type (including subtypes) that has the specified title.
++
+If no instance is found then _Optional#empty()_ will be return, while if there is more that one instances a run-time exception will be thrown.
++
+This method is useful during exploration/prototyping, but - because the filtering is performed client-side - this method is only really suitable for initial development/prototyping, or for classes with very few instances. Use _#uniqueMatch(Query)_ for production code.
+
+
+* `[teal]#*uniqueMatch*#<T>(Query<T> query)` : `Optional<T>`
++
+Find the only instance that matches the provided query.
++
+If no instance is found then _Optional#empty()_ will be return, while if there is more that one instances a run-time exception will be thrown.
++
+This method is the recommended way of querying for (precisely) one instance. See also _#allMatches(Query)_
+
+
+* `[teal]#*firstMatch*#<T>(Class<T> ofType, Predicate<T> predicate)` : `Optional<T>`
++
+Find the only instance of the specified type (including subtypes) that has the specified title.
++
+If no instance is found then _Optional#empty()_ will be return, while if there is more that one instances then the first will be returned.
++
+This method is useful during exploration/prototyping, but - because the filtering is performed client-side - this method is only really suitable for initial development/prototyping, or for classes with very few instances. Use _#firstMatch(Query)_ for production code.
+
+
+* `[teal]#*firstMatch*#<T>(Query<T> query)` : `Optional<T>`
++
+Find the only instance that matches the provided query, if any..
++
+If no instance is found then _Optional#empty()_ will be return, while if there is more that one instances then the first will be returned.
+
+
+* `[teal]#*refresh*#<T>(T pojo)` : `T`
++
+Reloads the pojo.
+
+
+* `[teal]#*detach*#<T>(T entity)` : `T`
++
+Detach the entity from the current persistence session.
++
+This allows the entity to be read from even after the PersistenceSession that obtained it has been closed.
+
+
+* `[line-through gray]#*detachedEntity*#<T>(Class<T> ofType)` : `T`
++
+[red]#_deprecated:_#
++
+if applicable use _#detachedEntity(Object)_ instead ... "new is the new new", passing in a new-ed up instance is more flexible and also more error prone, eg. it allows the compiler to check validity of the used constructor rather than doing construction reflective at runtime.
++
+Same as _org.apache.isis.applib.services.factory.FactoryService#detachedEntity(Class)_ ; provided as a convenience because instantiating and _#persist(Object) persisting_ are often done together.
+
+
+* `[line-through gray]#*instantiate*#<T>(Class<T> ofType)` : `T`
++
+[red]#_deprecated:_#
++
+if applicable use _#detachedEntity(Object)_ instead
+
+
+* `[line-through gray]#*isPersistent*#(Object domainObject)` : `boolean`
++
+[red]#_deprecated:_#
++
+due to ambiguous semantic, use _#getEntityState(Object)_ instead
++
+Determines if the specified object is persistent (that it is stored permanently outside of the virtual machine in the object store).
++
+This method can also returntrueif the object has been _#isDeleted(Object) deleted_ from the object store.
+
+
+* `[line-through gray]#*isDeleted*#(Object domainObject)` : `boolean`
++
+[red]#_deprecated:_#
++
+due to ambiguous semantic, use _#getEntityState(Object)_ instead
++
+Determines if the specified object has been deleted from the object store.
diff --git a/antora/components/system/modules/generated/pages/index/RepresentsInteractionMemberExecution.adoc b/antora/components/system/modules/generated/pages/index/RepresentsInteractionMemberExecution.adoc
new file mode 100644
index 0000000..13d101f
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/RepresentsInteractionMemberExecution.adoc
@@ -0,0 +1,7 @@
+= RepresentsInteractionMemberExecution : _interface_
+
+
+
+Extends _HasUniqueId_ , where the _HasUniqueId#getUniqueId()_ is interpreted as an interaction (cf _InteractionDto_ ) that has at least one member execution (cf _org.apache.isis.schema.ixn.v1.MemberExecutionDto_ ) and may (by way of xref:system:generated:index/WrapperFactory.adoc[WrapperFactory] ) contain several.
+Examples could include SPI services that persist published events and status messages.
+
diff --git a/antora/components/system/modules/generated/pages/index/RoutingService.adoc b/antora/components/system/modules/generated/pages/index/RoutingService.adoc
new file mode 100644
index 0000000..c67e7b2
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/RoutingService.adoc
@@ -0,0 +1,6 @@
+= RoutingService : _interface_
+
+
+
+Provides the ability to return (and therefore have rendered) an alternative object from an action invocation.
+
diff --git a/antora/components/system/modules/generated/pages/index/Scratchpad.adoc b/antora/components/system/modules/generated/pages/index/Scratchpad.adoc
new file mode 100644
index 0000000..b6ae764
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/Scratchpad.adoc
@@ -0,0 +1,15 @@
+= Scratchpad : _interface_
+
+
+
+This service (API and implementation) provides a mechanism to interchange information between multiple objects invoked in the same interaction. Most commonly this will be as the result of invoking a _org.apache.isis.applib.annotation.Bulk_ action.
+This implementation has only one implementation (this class) in applib, so it is annotated with _org.apache.isis.applib.annotation.DomainService_ . This means that it is automatically registered and available for use; no further configuration is required.
+
+* `[teal]#*get*#(Object key)` : `Object`
++
+Obtain user-data, as set by a previous object being acted upon.
+
+
+* `[teal]#*put*#(Object key, Object value)` : `void`
++
+Set user-data, for the use of a subsequent object being acted upon.
diff --git a/antora/components/system/modules/generated/pages/index/ServiceInjector.adoc b/antora/components/system/modules/generated/pages/index/ServiceInjector.adoc
new file mode 100644
index 0000000..8c2d370
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ServiceInjector.adoc
@@ -0,0 +1,7 @@
+= ServiceInjector : _interface_
+
+
+
+Resolves injection points using the ServiceRegistry.
+Implementation must be thread-safe.
+
diff --git a/antora/components/system/modules/generated/pages/index/ServiceRegistry.adoc b/antora/components/system/modules/generated/pages/index/ServiceRegistry.adoc
new file mode 100644
index 0000000..e3be4a9
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ServiceRegistry.adoc
@@ -0,0 +1,41 @@
+= ServiceRegistry : _interface_
+
+
+
+
+
+* `[teal]#*select*#<T>(Class<T> type, Annotation[] qualifiers)` : `Can<T>`
++
+Obtains a _Can_ container containing any matching instances for the given required type and additional required qualifiers.
+
+
+* `[teal]#*select*#<T>(Class<T> type)` : `Can<T>`
++
+Obtains a _Can_ container containing any matching instances for the given required type.
+
+
+* `[teal]#*streamRegisteredBeansOfType*#(Class<?> requiredType)` : `Stream<_ManagedBeanAdapter>`
++
+Streams all registered bean adapters implementing the requested type.
+
+
+* `[teal]#*streamRegisteredBeans*#()` : `Stream<_ManagedBeanAdapter>`
++
+Returns all bean adapters that have been registered.
+
+
+* `[teal]#*lookupRegisteredBeanById*#(String id)` : `Optional<_ManagedBeanAdapter>`
++
+Returns a registered bean of given _name_ .
+
+
+* `[teal]#*lookupRegisteredBeanByIdElseFail*#(String id)` : `_ManagedBeanAdapter`
++
+Returns a registered bean of given _name_ , or throws when no such bean.
+
+
+* `[teal]#*lookupService*#<T>(Class<T> serviceClass)` : `Optional<T>`
++
+Returns a domain service implementing the requested type.
++
+If this lookup is ambiguous, the service annotated with highest priority is returned. see _Priority_
diff --git a/antora/components/system/modules/generated/pages/index/SessionLoggingService.adoc b/antora/components/system/modules/generated/pages/index/SessionLoggingService.adoc
new file mode 100644
index 0000000..e2a8f27
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/SessionLoggingService.adoc
@@ -0,0 +1,6 @@
+= SessionLoggingService : _interface_
+
+
+
+Similar to the _org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber_ , this defines an API to track the status of the current sessions ("users logged on") on the system.
+
diff --git a/antora/components/system/modules/generated/pages/index/SessionLoggingServiceLogging.adoc b/antora/components/system/modules/generated/pages/index/SessionLoggingServiceLogging.adoc
new file mode 100644
index 0000000..ff1ce03
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/SessionLoggingServiceLogging.adoc
@@ -0,0 +1,6 @@
+= SessionLoggingServiceLogging : _class_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/SudoService.adoc b/antora/components/system/modules/generated/pages/index/SudoService.adoc
new file mode 100644
index 0000000..9896aea
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/SudoService.adoc
@@ -0,0 +1,14 @@
+= SudoService : _interface_
+
+
+
+Intended only for use by fixture scripts and integration tests, allows a block of code to execute while the xref:system:generated:index/UserService.adoc[UserService] 's _UserService#currentUser() getUser()_ method returns the specified user/role as the effective user.
+
+* `[teal]#*call*#<T>(UnaryOperator<xref:system:generated:index/ExecutionContext.adoc[ExecutionContext]> sudoMapper, Callable<T> supplier)` : `T`
++
+Executes the supplied block, with the xref:system:generated:index/UserService.adoc[UserService] returning the specified user.
+
+
+* `[teal]#*run*#(UnaryOperator<xref:system:generated:index/ExecutionContext.adoc[ExecutionContext]> sudoMapper, ThrowingRunnable runnable)` : `void`
++
+Executes the supplied block, with the xref:system:generated:index/UserService.adoc[UserService] returning the specified user.
diff --git a/antora/components/system/modules/generated/pages/index/SwaggerService.adoc b/antora/components/system/modules/generated/pages/index/SwaggerService.adoc
new file mode 100644
index 0000000..f0f133f
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/SwaggerService.adoc
@@ -0,0 +1,6 @@
+= SwaggerService : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/SyncControl.adoc b/antora/components/system/modules/generated/pages/index/SyncControl.adoc
new file mode 100644
index 0000000..a57aa17
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/SyncControl.adoc
@@ -0,0 +1,9 @@
+= SyncControl : _class_
+
+
+
+
+
+* `[teal]#*getExecutionModes*#()` : `ImmutableEnumSet<ExecutionMode>`
++
+Not API.
diff --git a/antora/components/system/modules/generated/pages/index/TableColumnOrderService.adoc b/antora/components/system/modules/generated/pages/index/TableColumnOrderService.adoc
new file mode 100644
index 0000000..e9cea0b
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/TableColumnOrderService.adoc
@@ -0,0 +1,6 @@
+= TableColumnOrderService : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/Ticket.adoc b/antora/components/system/modules/generated/pages/index/Ticket.adoc
new file mode 100644
index 0000000..01c1da8
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/Ticket.adoc
@@ -0,0 +1,44 @@
+= Ticket : _interface_
+
+
+
+Response from the xref:system:generated:index/ErrorReportingService.adoc[ErrorReportingService] , containing information to show to the end-user.
+Implementation notes:
++
+* a class has been used here so that additional fields might be added in the future.
++
+* the class is _Serializable_
+so that it can be stored by the Wicket viewer as a Wicket model.
+* AsciiDocWriter writing of type org.apache.isis.tooling.model4adoc.ast.SimpleBlock not yet implemented
+
+* `[teal]#*getReference*#()` : `String`
++
+A unique identifier that the end-user can use to track any follow-up from this error.
++
+For example, an implementation might automatically log an issue in a bug tracking system such as JIRA, in which case the _#getReference() reference_ would be the JIRA issue number `XXX-1234` .
+
+
+* `[teal]#*getUserMessage*#()` : `String`
++
+Message to display to the user.
++
+Typically this message should be short, one line long.
+
+
+* `[teal]#*getDetails*#()` : `String`
++
+Optional additional details to show to the end-user.
++
+For example, these might include text on how to recover from the error, or workarounds, or just further details on contacting the help desk if the issue is severe and requires immediate attention.
+
+
+* `[teal]#*getStackTracePolicy*#()` : `StackTracePolicy`
++
+Whether the stack trace for the exception should be displayed or be hidden.
++
+The default is to hide it on the basis that the reporting service will have reported the stack trace to the support team, meaning there's no need to expose this info to the end-user.
+
+
+* `[teal]#*getMarkup*#()` : `String`
++
+Returns a Html representation of this ticket.
diff --git a/antora/components/system/modules/generated/pages/index/TitleService.adoc b/antora/components/system/modules/generated/pages/index/TitleService.adoc
new file mode 100644
index 0000000..0974344
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/TitleService.adoc
@@ -0,0 +1,14 @@
+= TitleService : _interface_
+
+
+
+
+
+* `[teal]#*titleOf*#(Object domainObject)` : `String`
++
+Return the title of the object, as rendered in the UI by the Isis viewers.
+
+
+* `[teal]#*iconNameOf*#(Object domainObject)` : `String`
++
+Return the icon name of the object, as rendered in the UI by the Isis viewers.
diff --git a/antora/components/system/modules/generated/pages/index/Transaction.adoc b/antora/components/system/modules/generated/pages/index/Transaction.adoc
new file mode 100644
index 0000000..654be35
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/Transaction.adoc
@@ -0,0 +1,13 @@
+= Transaction : _interface_
+
+
+
+Representation of the current transaction, which conceptually wraps the underlying transaction context's transaction.
+
+* `[teal]#*flush*#()` : `void`
++
+Flush all changes to the object store.
++
+Occasionally useful to ensure that newly persisted domain objects are flushed to the database prior to a subsequent repository query.
++
+Equivalent to _TransactionService#flushTransaction()_ .
diff --git a/antora/components/system/modules/generated/pages/index/TransactionId.adoc b/antora/components/system/modules/generated/pages/index/TransactionId.adoc
new file mode 100644
index 0000000..2792b5d
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/TransactionId.adoc
@@ -0,0 +1,6 @@
+= TransactionId : _class_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/TransactionScopeListener.adoc b/antora/components/system/modules/generated/pages/index/TransactionScopeListener.adoc
new file mode 100644
index 0000000..c8a74a3
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/TransactionScopeListener.adoc
@@ -0,0 +1,9 @@
+= TransactionScopeListener : _interface_
+
+
+
+Domain services that need to be aware of transaction boundaries can implement this interface.
+
+* `[teal]#*onPreCommit*#(PreCommitPhase preCommitPhase)` : `void`
++
+triggered during the pre-commit phase in a transaction
diff --git a/antora/components/system/modules/generated/pages/index/TransactionService.adoc b/antora/components/system/modules/generated/pages/index/TransactionService.adoc
new file mode 100644
index 0000000..b0e8c1e
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/TransactionService.adoc
@@ -0,0 +1,34 @@
+= TransactionService : _interface_
+
+
+
+
+
+* `[teal]#*currentTransactionId*#()` : `xref:system:generated:index/TransactionId.adoc[TransactionId]`
++
+When called within an existing transactional boundary returns the unique identifier to the transaction, _null_ otherwise.
+
+
+* `[teal]#*currentTransactionState*#()` : `TransactionState`
+
+
+* `[teal]#*flushTransaction*#()` : `void`
++
+Flush all changes to the object store.
++
+Occasionally useful to ensure that newly persisted domain objects are flushed to the database prior to a subsequent repository query.
+
+
+* `[teal]#*nextTransaction*#()` : `void`
++
+Commits the current transaction (if there is one), and begins a new one. If there is no current transaction, then is a no-op.
+
+
+* `[teal]#*executeWithinTransaction*#(Runnable task)` : `void`
++
+Runs given _task_ within an existing transactional boundary, or in the absence of such a boundary creates a new one.
+
+
+* `[teal]#*executeWithinTransaction*#<T>(Supplier<T> task)` : `T`
++
+Runs given _task_ within an existing transactional boundary, or in the absence of such a boundary creates a new one.
diff --git a/antora/components/system/modules/generated/pages/index/TranslatableException.adoc b/antora/components/system/modules/generated/pages/index/TranslatableException.adoc
new file mode 100644
index 0000000..4c56d50
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/TranslatableException.adoc
@@ -0,0 +1,17 @@
+= TranslatableException : _interface_
+
+
+
+Exceptions that provide translations should implement this interface.
+The _org.apache.isis.applib.services.exceprecog.ExceptionRecognizer_ will automatically detect and use the translation. In addition, the integration testing support provides a rule (ExceptionRecognizerTranslations) that will exercise any thrown exceptions, ensuring tha the message is captured in thetranslations.pofile so that it can be translated.
+
+* `[teal]#*getTranslatableMessage*#()` : `xref:system:generated:index/TranslatableString.adoc[TranslatableString]`
++
+In the spirit of _Exception#getLocalizedMessage()_ , but using _org.apache.isis.applib.services.i18n.TranslatableString_ instead.
++
+If returnsnull, then _Exception#getMessage()_ will be used as a fallback. This design allows the Isis-provided _org.apache.isis.applib.RecoverableException_ and _org.apache.isis.applib.NonRecoverableException_ to provide constructors that accept a _org.apache.isis.applib.services.i18n.TranslatableString_ , but can be left as null for any existing code.
+
+
+* `[teal]#*getTranslationContext*#()` : `String`
++
+The context to use when translating the _#getTranslatableMessage() translatable message_ , as ultimately passed through to _org.apache.isis.applib.services.i18n.TranslationService#translate(String, String)_ .
diff --git a/antora/components/system/modules/generated/pages/index/TranslatableString.adoc b/antora/components/system/modules/generated/pages/index/TranslatableString.adoc
new file mode 100644
index 0000000..4d50838
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/TranslatableString.adoc
@@ -0,0 +1,43 @@
+= TranslatableString : _class_
+
+
+
+
+
+* `[teal]#*_tr_*#(String pattern, Object... paramArgs)` : `xref:system:generated:index/TranslatableString.adoc[TranslatableString]`
++
+A translatable string with a single pattern for both singular and plural forms.
+
+
+* `[teal]#*_trn_*#(String singularPattern, String pluralPattern, int number, Object... paramArgs)` : `xref:system:generated:index/TranslatableString.adoc[TranslatableString]`
++
+A translatable string with different patterns for singular and plural forms, selected automatically by the number
+
+
+* `[teal]#*getSingularText*#()` : `String`
++
+The text as provided in (either of the _#tr(String, Object...) factory_ _#trn(String, String, int, Object...) method_ s, with placeholders rather than substituted arguments; if _#isPluralForm()_ istruethen used only for the singular form.
+
+
+* `[teal]#*getPluralText*#()` : `String`
++
+The plural text as provided in the _#trn(String, String, int, Object...) factory method_ , with placeholders rather than substituted arguments; but will benullif _#isPluralForm()_ isfalse.
+
+
+* `[teal]#*getArgumentsByParameterName*#()` : `Map<String, Object>`
++
+The arguments; excluded from _#equals(Object)_ comparison.
+
+
+* `[teal]#*translate*#(xref:system:generated:index/TranslationService.adoc[TranslationService] translationService, String context)` : `String`
++
+Translates this string using the provided _org.apache.isis.applib.services.i18n.TranslationService_ , selecting either the single or plural form as per _#getPattern()_ .
+
+
+* `[teal]#*getPattern*#()` : `String`
++
+The text to be translated; depends on whether _#isPluralForm()_ and whether to be translated.
++
+Any placeholders will _not_ have been replaced.
++
+NB: this method is exposed only so that implementations of _org.apache.isis.applib.services.exceprecog.TranslatableException_ can return a non-null _Exception#getMessage() message_ when only a translatable message has been provided.
diff --git a/antora/components/system/modules/generated/pages/index/TranslationService.adoc b/antora/components/system/modules/generated/pages/index/TranslationService.adoc
new file mode 100644
index 0000000..a6c8269
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/TranslationService.adoc
@@ -0,0 +1,27 @@
+= TranslationService : _interface_
+
+
+
+
+
+* `[teal]#*translate*#(String context, String text)` : `String`
++
+Return a translation of the text, in the locale of the "current user".
++
+The mechanism to determine the locale is implementation-specific.
+
+
+* `[teal]#*translate*#(String context, String singularText, String pluralText, int num)` : `String`
++
+Return a translation of either the singular or the plural text, dependent on the `num` parameter, in the locale of the "current user".
++
+The mechanism to determine the locale is implementation-specific.
+
+
+* `[teal]#*getMode*#()` : `Mode`
++
+Whether this implementation is operating in read or in write mode.
++
+If in read mode, then the translations are expected to be present. In such cases, the _#translate(String, String) translate_ _#translate(String, String, String, int) method_ s should be _lazily_ called, if only because there will (most likely) need to be a session in progress (such that the locale of the current user can be determined).
++
+If in write mode, then the implementation is saving translation keys, and will always return the untranslated translation. In such cases, the _#translate(String, String) translate_ _#translate(String, String, String, int) method_ s should be _eagerly_ called such that all pathways are exercised..
diff --git a/antora/components/system/modules/generated/pages/index/TranslationsResolver.adoc b/antora/components/system/modules/generated/pages/index/TranslationsResolver.adoc
new file mode 100644
index 0000000..f786794
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/TranslationsResolver.adoc
@@ -0,0 +1,6 @@
+= TranslationsResolver : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/UrlEncodingService.adoc b/antora/components/system/modules/generated/pages/index/UrlEncodingService.adoc
new file mode 100644
index 0000000..73383ed
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/UrlEncodingService.adoc
@@ -0,0 +1,6 @@
+= UrlEncodingService : _interface_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/UsabilityEvent.adoc b/antora/components/system/modules/generated/pages/index/UsabilityEvent.adoc
new file mode 100644
index 0000000..d80f1a2
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/UsabilityEvent.adoc
@@ -0,0 +1,7 @@
+= UsabilityEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents a check to determine whether a member of an object is usable or has been disabled.
+If _#getReason()_ is `null` , then is usable; otherwise is disabled.
+
diff --git a/antora/components/system/modules/generated/pages/index/UserDataKeys.adoc b/antora/components/system/modules/generated/pages/index/UserDataKeys.adoc
new file mode 100644
index 0000000..8302818
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/UserDataKeys.adoc
@@ -0,0 +1,6 @@
+= UserDataKeys : _class_
+
+
+
+Keys used in _CommandDto#getUserData()_ to marshall the command's results
+
diff --git a/antora/components/system/modules/generated/pages/index/UserDetails.adoc b/antora/components/system/modules/generated/pages/index/UserDetails.adoc
new file mode 100644
index 0000000..2da6af5
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/UserDetails.adoc
@@ -0,0 +1,6 @@
+= UserDetails : _class_
+
+
+
+A model object for the signup page
+
diff --git a/antora/components/system/modules/generated/pages/index/UserProfileService.adoc b/antora/components/system/modules/generated/pages/index/UserProfileService.adoc
new file mode 100644
index 0000000..19b3007
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/UserProfileService.adoc
@@ -0,0 +1,12 @@
+= UserProfileService : _interface_
+
+
+
+Optional API providing details about the user.
+Used by the Wicket viewer in its _org.apache.isis.applib.annotation.DomainServiceLayout.MenuBar#TERTIARY tertiary_ "Me" menu bar.
+
+* `[teal]#*userProfileName*#()` : `String`
++
+Used as the menu name of the _org.apache.isis.applib.annotation.DomainServiceLayout.MenuBar#TERTIARY tertiary_ "Me" menu bar.
++
+If returns `null` , then the current user name is used instead.
diff --git a/antora/components/system/modules/generated/pages/index/UserRegistrationService.adoc b/antora/components/system/modules/generated/pages/index/UserRegistrationService.adoc
new file mode 100644
index 0000000..890779c
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/UserRegistrationService.adoc
@@ -0,0 +1,7 @@
+= UserRegistrationService : _interface_
+
+
+
+Required API to enable users to register an account on the system (aka "sign up").
+User registration also requires that the xref:system:generated:index/EmailNotificationService.adoc[EmailNotificationService] and _org.apache.isis.applib.services.email.EmailService_ to be configured. The framework provides default implementations of both of these services. The notification service requires no further configuration. The email service (EmailServiceDefault) _does_ require a couple of configuration properties to be set (specifying the SMTP mail server/accounts/password).
+
diff --git a/antora/components/system/modules/generated/pages/index/UserService.adoc b/antora/components/system/modules/generated/pages/index/UserService.adoc
index 1dff20b..2d0ed7d 100644
--- a/antora/components/system/modules/generated/pages/index/UserService.adoc
+++ b/antora/components/system/modules/generated/pages/index/UserService.adoc
@@ -3,11 +3,11 @@
 
 
 The xref:system:generated:index/UserService.adoc[UserService] allows the domain object to obtain the identity of the user interacting with said object.
-If _SudoService_ has been used to temporarily override the user and/or roles, then this service will report the overridden values instead.
+If xref:system:generated:index/SudoService.adoc[SudoService] has been used to temporarily override the user and/or roles, then this service will report the overridden values instead.
 
 * `[teal]#*currentUser*#()` : `Optional<xref:system:generated:index/UserMemento.adoc[UserMemento]>`
 +
-Optionally gets the details about the current user, based on whether an _ExecutionContext_ can be found with the current thread's context.
+Optionally gets the details about the current user, based on whether an xref:system:generated:index/ExecutionContext.adoc[ExecutionContext] can be found with the current thread's context.
 
 
 * `[teal]#*getUser*#()` : `xref:system:generated:index/UserMemento.adoc[UserMemento]`
@@ -22,4 +22,9 @@ Gets the details about the current user.
 
 * `[teal]#*currentUserName*#()` : `Optional<String>`
 +
-Optionally gets the the current user's name, based on whether an _ExecutionContext_ can be found with the current thread's context.
+Optionally gets the the current user's name, based on whether an xref:system:generated:index/ExecutionContext.adoc[ExecutionContext] can be found with the current thread's context.
+
+
+* `[teal]#*currentUserNameElseNobody*#()` : `String`
++
+Returns either the current user's name or else _Nobody_ .
diff --git a/antora/components/system/modules/generated/pages/index/ValidityEvent.adoc b/antora/components/system/modules/generated/pages/index/ValidityEvent.adoc
new file mode 100644
index 0000000..35dc522
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/ValidityEvent.adoc
@@ -0,0 +1,18 @@
+= ValidityEvent : _class_
+
+
+
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents a check to determine whether a proposed change is valid.
+Multiple subclasses, including:
++
+* modifying a property
++
+* adding to/removing from a collection
++
+* checking a single argument for an action invocation
++
+* checking all arguments for an action invocation
++
+* checking all properties for an object before saving
+If _#getReason()_ is `null` , then is usable; otherwise is disabled.
+
diff --git a/antora/components/system/modules/generated/pages/index/VisibilityEvent.adoc b/antora/components/system/modules/generated/pages/index/VisibilityEvent.adoc
new file mode 100644
index 0000000..1795fe2
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/VisibilityEvent.adoc
@@ -0,0 +1,7 @@
+= VisibilityEvent : _class_
+
+
+
+ _Supported only by xref:system:generated:index/WrapperFactory.adoc[WrapperFactory] service,_ represents a check to determine whether a member of an object is visible or has been hidden.
+If _#getReason()_ is `null` , then is usable; otherwise is invisible.
+
diff --git a/antora/components/system/modules/generated/pages/index/WrapperFactory.adoc b/antora/components/system/modules/generated/pages/index/WrapperFactory.adoc
new file mode 100644
index 0000000..dcca9ed
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/WrapperFactory.adoc
@@ -0,0 +1,95 @@
+= WrapperFactory : _interface_
+
+
+
+Provides the ability to "wrap" of a domain object such that it can be interacted with while enforcing the hide/disable/validate rules implied by the Apache Isis programming model.
+The wrapper can alternatively also be used to execute the action asynchronously, through an _java.util.concurrent.ExecutorService_ . Any business rules will be invoked synchronously beforehand, however. hand
+The 'wrap' is a runtime-code-generated proxy that wraps the underlying domain object. The wrapper can then be interacted with as follows:
++
+* a `get` method for properties or collections
++
+* a `set` method for properties
++
+* any action
+Calling any of the above methods may result in a (subclass of) _InteractionException_ if the object disallows it. For example, if a property is annotated as hidden then a xref:system:generated:index/HiddenException.adoc[HiddenException] will be thrown. Similarly if an action has a `validate` method and the supplied arguments are invalid then a xref:system:generated:index/InvalidException.adoc[InvalidException] will be thrown.
+In addition, the following methods may also be called:
++
+* the `title` method
++
+* any `defaultXxx` or `choicesXxx` method
+If the object has (see _#isWrapper(Object)_ already been wrapped), then should just return the object back unchanged.
+
+* `[teal]#*wrap*#<T>(T domainObject, xref:system:generated:index/SyncControl.adoc[SyncControl] syncControl)` : `T`
++
+Provides the "wrapper" of a domain object against which to invoke the action.
++
+The provided xref:system:generated:index/SyncControl.adoc[SyncControl] determines whether business rules are checked first, and conversely whether the action is executed. There are therefore three typical cases:
++
+** check rules, execute action
++
+** skip rules, execute action
++
+** check rules, skip action
++
+The last logical option (skip rules, skip action) is valid but doesn't make sense, as it's basically a no-op.
++
++
+Otherwise, will do all the validations (raise exceptions as required etc.), but doesn't modify the model.
+
+
+* `[teal]#*wrap*#<T>(T domainObject)` : `T`
++
+A convenience overload for _#wrap(Object, SyncControl)_ , returning a wrapper to invoke the action synchronously, enforcing business rules. Any exceptions will be propagated, not swallowed.
+
+
+* `[teal]#*wrapMixin*#<T>(Class<T> mixinClass, Object mixedIn, xref:system:generated:index/SyncControl.adoc[SyncControl] syncControl)` : `T`
++
+Provides the wrapper for a _FactoryService#mixin(Class, Object) mixin_ , against which to invoke the action.
++
+The provided xref:system:generated:index/SyncControl.adoc[SyncControl] determines whether business rules are checked first, and conversely whether the action is executed. See _#wrap(Object, SyncControl)_ for more details on this.
+
+
+* `[teal]#*wrapMixin*#<T>(Class<T> mixinClass, Object mixedIn)` : `T`
++
+A convenience overload for _#wrapMixin(Class, Object, SyncControl)_ , returning a wrapper to invoke the action synchronously, enforcing business rules. Any exceptions will be propagated, not swallowed.
+
+
+* `[teal]#*unwrap*#<T>(T possibleWrappedDomainObject)` : `T`
++
+Obtains the underlying domain object, if wrapped.
++
+If the object _#isWrapper(Object) is not wrapped_ , then should just return the object back unchanged.
+
+
+* `[teal]#*isWrapper*#<T>(T possibleWrappedDomainObject)` : `boolean`
++
+Whether the supplied object is a wrapper around a domain object.
+
+
+* `[teal]#*asyncWrap*#<T, R>(T domainObject, xref:system:generated:index/AsyncControl.adoc[AsyncControl]<R> asyncControl)` : `T`
++
+Returns a proxy object for the provided _domainObject_ , through which can execute the action asynchronously.
+
+
+* `[teal]#*asyncWrapMixin*#<T, R>(Class<T> mixinClass, Object mixedIn, xref:system:generated:index/AsyncControl.adoc[AsyncControl]<R> asyncControl)` : `T`
++
+Returns a proxy object for the provided _mixinClass_ , through which can execute the action asynchronously.
+
+
+* `[teal]#*getListeners*#()` : `List<xref:system:generated:index/InteractionListener.adoc[InteractionListener]>`
++
+All xref:system:generated:index/InteractionListener.adoc[InteractionListener] s that have been registered using _#addInteractionListener(InteractionListener)_ .
+
+
+* `[teal]#*addInteractionListener*#(xref:system:generated:index/InteractionListener.adoc[InteractionListener] listener)` : `boolean`
++
+Registers an xref:system:generated:index/InteractionListener.adoc[InteractionListener] , to be notified of interactions on all wrappers.
++
+This is retrospective: the listener will be notified of interactions even on wrappers created before the listener was installed. (From an implementation perspective this is because the wrappers delegate back to the container to fire the events).
+
+
+* `[teal]#*removeInteractionListener*#(xref:system:generated:index/InteractionListener.adoc[InteractionListener] listener)` : `boolean`
++
+Remove an xref:system:generated:index/InteractionListener.adoc[InteractionListener] , to no longer be notified of interactions on wrappers.
++
+This is retrospective: the listener will no longer be notified of any interactions created on any wrappers, not just on those wrappers created subsequently. (From an implementation perspective this is because the wrappers delegate back to the container to fire the events).
diff --git a/antora/components/system/modules/generated/pages/index/WrappingObject.adoc b/antora/components/system/modules/generated/pages/index/WrappingObject.adoc
new file mode 100644
index 0000000..f14315a
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/WrappingObject.adoc
@@ -0,0 +1,29 @@
+= WrappingObject : _interface_
+
+
+
+Implemented by all objects that have been viewed as per _WrapperFactory#wrap(Object)_ .
+
+* `[teal]#*__isis_save*#()` : `void`
++
+Programmatic equivalent of invoking save for a transient object .
++
+NOTE: domain classes may not have a method with this name. The `__isis_` prefix is intended to reduce the risk of a collision.
+
+
+* `[teal]#*__isis_wrapped*#()` : `Object`
++
+Provide access to the underlying, wrapped object.
++
+Used to unwrap objects used as arguments to actions (otherwise, end up creating a `ObjectSpecification` for the Javassist-enhanced class, not the original class).
++
+NOTE: domain classes may not have a method with this name. The `__isis_` prefix is intended to reduce the risk of a collision.
++
+ *NOTE: there is a string-literal reference to this name `DomainObjectInvocationHandler` , so it should not be changed.* .
+
+
+* `[teal]#*__isis_executionModes*#()` : `ImmutableEnumSet<ExecutionMode>`
++
+The _EnumSetexecution modes_ inferred from the xref:system:generated:index/SyncControl.adoc[SyncControl] with which this wrapper was _WrapperFactory#wrap(Object, SyncControl) created_ .
++
+NOTE: domain classes may not have a method with this name. The `__isis_` prefix is intended to reduce the risk of a collision.
diff --git a/antora/components/system/modules/generated/pages/index/XmlService.adoc b/antora/components/system/modules/generated/pages/index/XmlService.adoc
new file mode 100644
index 0000000..e3edc30
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/XmlService.adoc
@@ -0,0 +1,24 @@
+= XmlService : _interface_
+
+
+
+This service provides a number of utility services for interacting with XML _Document_ s
+
+* `[teal]#*asDocument*#(String xmlStr)` : `Document`
++
+Converts xml string into an _Document W3C Document_ .
+
+
+* `[teal]#*asString*#(Document doc)` : `String`
++
+Serializes a _Document W3C Document_ back into a string.
+
+
+* `[teal]#*getChildElement*#(Element el, String tagname)` : `Element`
++
+Convenience method to walk XML document.
+
+
+* `[teal]#*getChildTextValue*#(Element el)` : `String`
++
+Convenience method to obtain value of child text node.
diff --git a/antora/components/system/modules/generated/pages/index/XmlServiceDefault.adoc b/antora/components/system/modules/generated/pages/index/XmlServiceDefault.adoc
new file mode 100644
index 0000000..ecfdd02
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/XmlServiceDefault.adoc
@@ -0,0 +1,6 @@
+= XmlServiceDefault : _class_
+
+
+
+
+
diff --git a/antora/components/system/modules/generated/pages/index/XmlSnapshotServiceDefault.adoc b/antora/components/system/modules/generated/pages/index/XmlSnapshotServiceDefault.adoc
new file mode 100644
index 0000000..004ee09
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/XmlSnapshotServiceDefault.adoc
@@ -0,0 +1,15 @@
+= XmlSnapshotServiceDefault : _class_
+
+
+
+This service allows an XML document to be generated capturing the data of a root entity and specified related entities. This XML can be used for various purposes, such as mail merge/reporting, or adhoc auditing.
+This implementation has no UI and there are no other implementations of the service API, and so it annotated with _org.apache.isis.applib.annotation.DomainService_ . Because this class is implemented in core, this means that it is automatically registered and available for use; no further configuration is required.
+
+* `[teal]#*snapshotFor*#(Object domainObject)` : `Snapshot`
++
+Creates a simple snapshot of the domain object.
+
+
+* `[teal]#*builderFor*#(Object domainObject)` : `Builder`
++
+Creates a builder that allows a custom snapshot - traversing additional associated properties or collections (using _Snapshot.Builder#includePath(String)_ and _Snapshot.Builder#includePathAndAnnotation(String, String)_ ) - to be created.
diff --git a/antora/components/system/modules/generated/pages/system-overview.adoc b/antora/components/system/modules/generated/pages/system-overview.adoc
index be0b737..03c037f 100644
--- a/antora/components/system/modules/generated/pages/system-overview.adoc
+++ b/antora/components/system/modules/generated/pages/system-overview.adoc
@@ -331,7 +331,7 @@ _Dependencies_
 
 _Document Index Entries_
 
-xref:system:generated:index/FactoryService.adoc[FactoryService], xref:system:generated:index/RoleMemento.adoc[RoleMemento], xref:system:generated:index/UserMemento.adoc[UserMemento], xref:system:generated:index/UserService.adoc[UserService], xref:system:generated:index/XmlSnapshotService.Snapshot.Builder.adoc[XmlSnapshotService.Snapshot.Builder], xref:system:generated:index/XmlSnapshotService.Snapshot.adoc[XmlSnapshotService.Snapshot], xref:system:generated:index/XmlSnapshotService.adoc[ [...]
+xref:system:generated:index/AcceptHeaderService.adoc[AcceptHeaderService], xref:system:generated:index/ActionArgumentEvent.adoc[ActionArgumentEvent], xref:system:generated:index/ActionInvocationEvent.adoc[ActionInvocationEvent], xref:system:generated:index/ActionUsabilityEvent.adoc[ActionUsabilityEvent], xref:system:generated:index/ActionVisibilityEvent.adoc[ActionVisibilityEvent], xref:system:generated:index/ApplicationFeatureRepository.adoc[ApplicationFeatureRepository], xref:system:ge [...]
 
 
 
@@ -550,6 +550,10 @@ _Dependencies_
 * org.apache.isis.core:isis-core-runtime:jar:<managed>
 * org.hsqldb:hsqldb:jar:<managed>
 
+_Document Index Entries_
+
+xref:system:generated:index/XmlServiceDefault.adoc[XmlServiceDefault], xref:system:generated:index/XmlSnapshotServiceDefault.adoc[XmlSnapshotServiceDefault]
+
 
 
 |Apache Isis Core - Security
@@ -1360,12 +1364,12 @@ skinparam {
   maxMessageSize 100
 }
 hide stereotype
-skinparam rectangle<<11>> {
+skinparam rectangle<<22>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<22>> {
+skinparam rectangle<<11>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
@@ -1455,12 +1459,12 @@ skinparam rectangle<<20>> {
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<21>> {
+skinparam rectangle<<10>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<10>> {
+skinparam rectangle<<21>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
@@ -3595,12 +3599,12 @@ skinparam {
   maxMessageSize 100
 }
 hide stereotype
-skinparam rectangle<<11>> {
+skinparam rectangle<<22>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<22>> {
+skinparam rectangle<<11>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
@@ -3695,12 +3699,12 @@ skinparam rectangle<<20>> {
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<21>> {
+skinparam rectangle<<10>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295
 }
-skinparam rectangle<<10>> {
+skinparam rectangle<<21>> {
   BackgroundColor #438dd5
   FontColor #fffffe
   BorderColor #2E6295