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 2021/02/02 18:34:48 UTC

[isis] 02/02: ISIS-2516: regen all docs (experimental run)

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

commit 256a041930388d56b01778d917f6d08c88c88ba2
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Feb 2 19:34:33 2021 +0100

    ISIS-2516: regen all docs (experimental run)
---
 .../pages/index/applib/AbstractViewModel.adoc      |    2 -
 .../generated/pages/index/applib/Identifier.adoc   |    2 +-
 .../IsisModuleApplib.adoc}                         |    6 +-
 .../generated/pages/index/applib/ViewModel.adoc    |    2 +-
 .../pages/index/applib/adapters/Parser.adoc        |    2 +-
 .../applib/adapters/ValueSemanticsProvider.adoc    |   14 +-
 .../pages/index/applib/annotation/Action.adoc      |   22 +-
 .../index/applib/annotation/ActionLayout.adoc      |    8 +-
 .../pages/index/applib/annotation/Collection.adoc  |    6 +-
 .../index/applib/annotation/CollectionLayout.adoc  |    2 +-
 .../pages/index/applib/annotation/Defaulted.adoc   |   10 +-
 .../index/applib/annotation/DomainObject.adoc      |   28 +-
 .../applib/annotation/DomainObjectLayout.adoc      |    8 +-
 .../index/applib/annotation/DomainService.adoc     |    2 +-
 .../pages/index/applib/annotation/Nature.adoc      |    4 +-
 .../pages/index/applib/annotation/Parameter.adoc   |    6 +-
 .../index/applib/annotation/ParameterLayout.adoc   |    4 +-
 .../pages/index/applib/annotation/Property.adoc    |   28 +-
 .../index/applib/annotation/PropertyLayout.adoc    |   14 +-
 .../pages/index/applib/annotation/Publishing.adoc  |    8 +-
 .../pages/index/applib/annotation/Title.adoc       |    2 +-
 .../pages/index/applib/annotation/Value.adoc       |   10 +-
 .../pages/index/applib/annotation/Where.adoc       |    2 +-
 .../client/RepresentationTypeSimplifiedV2.adoc     |   74 ++
 .../pages/index/applib/clock/VirtualClock.adoc     |   10 +-
 .../index/applib/domain/DomainObjectList.adoc      |    4 +-
 .../applib/events/domain/AbstractDomainEvent.adoc  |   10 +-
 .../applib/events/domain/ActionDomainEvent.adoc    |    2 +-
 .../ui/{TitleUiEvent.adoc => IconUiEvent.adoc}     |   24 +-
 .../pages/index/applib/events/ui/TitleUiEvent.adoc |    2 +-
 .../applib/exceptions/TranslatableException.adoc   |    6 +-
 .../unrecoverable/DomainModelException.adoc}       |   22 +-
 .../unrecoverable/MetaModelException.adoc}         |   12 +-
 .../unrecoverable/NoAuthenticatorException.adoc}   |   22 +-
 .../unrecoverable/ObjectNotFoundException.adoc}    |   10 +-
 .../unrecoverable/ObjectPersistenceException.adoc} |   12 +-
 .../unrecoverable/PersistFailedException.adoc      |    2 +-
 .../unrecoverable/ReflectiveActionException.adoc}  |   12 +-
 .../unrecoverable/RepositoryException.adoc         |    2 +-
 .../unrecoverable/UnexpectedCallException.adoc}    |    8 +-
 .../unrecoverable/UnknownTypeException.adoc}       |    8 +-
 .../tree/LazyTreeNode.adoc}                        |   22 +-
 .../pages/index/applib/graph/tree/TreeNode.adoc    |    8 +-
 .../pages/index/applib/graph/tree/TreePath.adoc    |    4 +-
 .../jaxb/DataTypeFactory.adoc}                     |    6 +-
 .../JavaSqlXMLGregorianCalendarMarshalling.adoc}   |   12 +-
 .../JavaTimeXMLGregorianCalendarMarshalling.adoc   |   34 +
 .../jaxb/JodaTimeJaxbAdapters.adoc}                |    6 +-
 .../JodaTimeXMLGregorianCalendarMarshalling.adoc}  |   22 +-
 .../jaxb/PrimitiveJaxbAdapters.adoc}               |    6 +-
 .../layout/component/ActionLayoutDataOwner.adoc}   |    8 +-
 .../layout/component/CollectionLayoutData.adoc     |  102 ++
 .../component/CollectionLayoutDataOwner.adoc}      |    6 +-
 .../layout/component/CssClassFaPosition.adoc}      |   10 +-
 .../layout/component/DomainObjectLayoutData.adoc   |   78 ++
 .../component/DomainObjectLayoutDataOwner.adoc}    |    8 +-
 .../index/applib/layout/component/FieldSet.adoc    |   87 ++
 .../layout/component/FieldSetOwner.adoc}           |    6 +-
 .../layout/component/HasNamed.adoc}                |   12 +-
 .../component/MemberRegion.adoc}                   |   24 +-
 .../layout/component/MemberRegionOwner.adoc}       |    6 +-
 .../layout/component/Owned.adoc}                   |    6 +-
 .../layout/component/Owner.adoc}                   |    6 +-
 .../layout/component/PropertyLayoutData.adoc       |  107 ++
 .../layout/component/ServiceActionLayoutData.adoc  |   93 ++
 .../component/ServiceActionLayoutDataOwner.adoc}   |    8 +-
 .../LayoutService.adoc => layout/grid/Grid.adoc}   |   44 +-
 .../grid/GridAbstract.adoc}                        |   44 +-
 .../layout/grid/bootstrap3/BS3ClearFix.adoc}       |    6 +-
 .../layout/grid/bootstrap3/BS3ClearFixHidden.adoc} |   10 +-
 .../grid/bootstrap3/BS3ClearFixVisible.adoc}       |   14 +-
 .../applib/layout/grid/bootstrap3/BS3Col.adoc      |   98 ++
 .../grid/bootstrap3/BS3Element.adoc}               |   28 +-
 .../grid/bootstrap3/BS3ElementAbstract.adoc}       |   18 +-
 .../grid/bootstrap3/BS3Grid.adoc}                  |   32 +-
 .../applib/layout/grid/bootstrap3/BS3Row.adoc      |   52 +
 .../grid/bootstrap3/BS3RowContent.adoc}            |   28 +-
 .../grid/bootstrap3/BS3RowContentOwner.adoc}       |    6 +-
 .../layout/grid/bootstrap3/BS3RowOwner.adoc}       |    6 +-
 .../grid/bootstrap3/BS3Tab.adoc}                   |   30 +-
 .../applib/layout/grid/bootstrap3/BS3TabGroup.adoc |   59 +
 .../layout/grid/bootstrap3/BS3TabGroupOwner.adoc}  |    6 +-
 .../layout/grid/bootstrap3/BS3TabOwner.adoc}       |    6 +-
 .../layout/grid/bootstrap3/Size.adoc}              |   16 +-
 .../grid/bootstrap3/SizeSpan.adoc}                 |   26 +-
 .../layout/grid/bootstrap3/WithinGrid.adoc}        |    6 +-
 .../links/Link.adoc}                               |   18 +-
 .../layout/menubars/HasNamed.adoc}                 |    6 +-
 .../layout/menubars/Menu.adoc}                     |    6 +-
 .../layout/menubars/MenuBar.adoc}                  |    6 +-
 .../menubars/MenuBars.adoc}                        |   22 +-
 .../menubars/MenuBarsAbstract.adoc}                |   12 +-
 .../layout/menubars/MenuSection.adoc}              |    6 +-
 .../menubars/bootstrap3/BS3Menu.adoc}              |   30 +-
 .../menubars/bootstrap3/BS3MenuBar.adoc}           |   22 +-
 .../menubars/bootstrap3/BS3MenuBars.adoc}          |   32 +-
 .../menubars/bootstrap3/BS3MenuSection.adoc}       |   22 +-
 .../MixinConstants.adoc}                           |   12 +-
 .../mixins/dto/Dto.adoc}                           |    6 +-
 .../mixins/dto/Dto_downloadXml.adoc}               |   11 +-
 .../dto/Dto_downloadXsd.adoc}                      |   18 +-
 .../layout/Object_downloadLayoutXml.adoc}          |   15 +-
 .../mixins/layout/Object_openRestApi.adoc}         |   12 +-
 .../mixins/layout/Object_rebuildMetamodel.adoc}    |    9 +-
 .../metamodel/Object_downloadMetamodelXml.adoc}    |   19 +-
 .../mixins/metamodel/Object_objectIdentifier.adoc} |    6 +-
 .../mixins/metamodel/Object_objectType.adoc}       |    6 +-
 .../generated/pages/index/applib/query/Query.adoc  |    4 +-
 .../index/applib/services/DomainChangeRecord.adoc  |    4 +-
 .../RepresentsInteractionMemberExecution.adoc      |    2 +-
 .../index/applib/services/bookmark/Bookmark.adoc   |    4 +-
 .../services/bookmark/BookmarkHolder_lookup.adoc}  |    6 +-
 .../services/bookmark/BookmarkHolder_object.adoc}  |    6 +-
 .../applib/services/bookmark/BookmarkService.adoc  |   18 +-
 .../index/applib/services/command/Command.adoc     |   10 +-
 .../services/command/CommandExecutorService.adoc   |    2 +-
 .../ContentMappingServiceForCommandsDto.adoc       |    2 +-
 .../CommandDtoProcessorForActionAbstract.adoc}     |    8 +-
 .../CommandDtoProcessorForPropertyAbstract.adoc}   |    8 +-
 .../processor/spi/CommandDtoProcessorService.adoc  |    2 +-
 .../services/confview/ConfigurationMenu.adoc}      |    8 +-
 .../confview/ConfigurationViewService.adoc         |    4 +-
 .../index/applib/services/error/ErrorDetails.adoc  |    2 +-
 .../index/applib/services/error/SimpleTicket.adoc  |   47 +
 .../pages/index/applib/services/error/Ticket.adoc  |    2 +-
 .../services/exceprecog/ExceptionRecognizer.adoc   |    2 +-
 .../exceprecog/ExceptionRecognizerAbstract.adoc    |   24 +
 .../exceprecog/ExceptionRecognizerForType.adoc     |    2 +-
 .../exceprecog/ExceptionRecognizerService.adoc     |    4 +-
 .../index/applib/services/grid/GridService.adoc    |    8 +-
 .../services/homepage/HomePageResolverService.adoc |    2 +-
 .../applib/services/i18n/TranslatableString.adoc   |    6 +-
 .../applib/services/iactn/ExecutionContext.adoc    |    4 +-
 .../index/applib/services/iactn/Interaction.adoc   |    6 +-
 .../applib/services/iactn/InteractionContext.adoc  |    6 +-
 .../applib/services/layout/LayoutService.adoc      |    2 +-
 .../applib/services/message/MessageService.adoc    |   12 +-
 .../services/metamodel/MetaModelService.adoc       |    4 +-
 .../services/publishing/spi/CommandSubscriber.adoc |    4 +-
 .../publishing/spi/EntityChangesSubscriber.adoc    |    2 +-
 .../publishing/spi/EntityPropertyChange.adoc       |    2 +-
 .../spi/EntityPropertyChangeSubscriber.adoc        |    2 +-
 .../applib/services/repository/EntityState.adoc    |    2 -
 .../services/repository/RepositoryService.adoc     |   10 +-
 .../index/applib/services/sudo/SudoService.adoc    |   12 +-
 ...TableColumnOrderForCollectionTypeAbstract.adoc} |   22 +-
 ...lEncodingServiceUsingBaseEncodingAbstract.adoc} |    8 +-
 .../index/applib/services/user/RoleMemento.adoc    |    2 +-
 .../index/applib/services/user/UserMemento.adoc    |   12 +-
 .../index/applib/services/user/UserService.adoc    |   14 +-
 .../services/userreg/UserRegistrationService.adoc  |    2 +-
 .../events/EmailEventAbstract.adoc}                |   22 +-
 .../applib/services/wrapper/WrapperFactory.adoc    |   26 +-
 .../applib/services/wrapper/WrappingObject.adoc    |    4 +-
 .../services/wrapper/control/ControlAbstract.adoc  |    2 +-
 .../wrapper/control/ExceptionHandlerAbstract.adoc} |    6 +-
 .../services/wrapper/control/SyncControl.adoc      |    2 +-
 .../{ProposedHolderEvent.adoc => AccessEvent.adoc} |   12 +-
 .../wrapper/events/ActionArgumentEvent.adoc        |    2 +-
 .../wrapper/events/ActionInvocationEvent.adoc      |    4 +-
 .../wrapper/events/ActionVisibilityEvent.adoc      |    2 +-
 .../wrapper/events/CollectionAccessEvent.adoc      |    2 +-
 .../services/wrapper/events/InteractionEvent.adoc  |   12 +-
 .../wrapper/events/PropertyAccessEvent.adoc        |    2 +-
 .../wrapper/events/ProposedHolderEvent.adoc        |    2 +-
 .../services/wrapper/events/VisibilityEvent.adoc   |    2 +-
 .../wrapper/listeners/InteractionAdapter.adoc      |    2 +-
 .../wrapper/listeners/InteractionListener.adoc     |   34 +-
 .../applib/services/xactn/TransactionService.adoc  |    4 +-
 .../services/xactn/TransactionalProcessor.adoc     |   59 +
 .../services/xmlsnapshot/XmlSnapshotService.adoc   |    2 +-
 .../XmlSnapshotService~Snapshot~Builder.adoc       |    2 +-
 .../snapshot/SnapshottableWithInclusions.adoc      |    2 +-
 .../index/applib/spec/AbstractSpecification.adoc   |    2 +-
 .../index/applib/spec/AbstractSpecification2.adoc  |    4 +-
 .../pages/index/applib/spec/Specification2.adoc    |    8 +-
 .../pages/index/applib/spec/SpecificationAnd.adoc  |    4 +-
 .../pages/index/applib/spec/SpecificationNot.adoc  |    4 +-
 .../pages/index/applib/spec/SpecificationOr.adoc   |    4 +-
 .../types/DescriptionType.adoc}                    |    6 +-
 .../MemberIdentifierType.adoc}                     |    8 +-
 .../TargetActionType.adoc}                         |   22 +-
 .../TargetClassType.adoc}                          |    8 +-
 .../pages/index/applib/util/ObjectContracts.adoc   |   64 ++
 .../pages/index/applib/util/ReasonBuffer.adoc      |   40 +
 .../pages/index/applib/util/ReasonBuffer2.adoc     |   69 ++
 .../util/Reasons.adoc}                             |    8 +-
 .../pages/index/applib/util/TitleBuffer.adoc       |  187 ++++
 .../TitleBufferException.adoc}                     |   16 +-
 .../applib/util/schema/InteractionDtoUtils.adoc    |   72 ++
 .../schema/MemberExecutionDtoUtils.adoc}           |   30 +-
 .../generated/pages/index/applib/value/Blob.adoc   |    8 +-
 .../generated/pages/index/applib/value/Clob.adoc   |    8 +-
 .../generated/pages/index/applib/value/Markup.adoc |    2 +-
 .../pages/index/commons/functional/Result.adoc     |    2 +-
 .../commons/resource/ResourceCoordinates.adoc      |    2 +
 .../DataSourceIntrospectionService.adoc}           |    8 +-
 .../transaction/TransactionServiceSpring.adoc      |    2 +-
 .../commandlog/impl/CommandSubscriberForJdo.adoc}  |    9 +-
 .../impl/IsisModuleExtCommandLogImpl.adoc}         |   28 +-
 .../impl/mixins/HasUniqueId_command.adoc}          |   20 +-
 .../mixins/HasUsername_recentCommandsByUser.adoc}  |   15 +-
 .../commandlog/impl/ui/CommandServiceMenu.adoc}    |   34 +-
 .../IsisModuleExtCommandReplayPrimary.adoc}        |    6 +-
 .../primary/config/PrimaryConfig.adoc}             |   11 +-
 .../primary/mixins/Object_openOnSecondary.adoc}    |   18 +-
 .../primary/restapi/CommandRetrievalService.adoc}  |   14 +-
 .../primary/ui/CommandReplayOnPrimaryService.adoc  |   55 +
 .../IsisModuleExtCommandReplaySecondary.adoc}      |   25 +-
 .../commandreplay/secondary/SecondaryStatus.adoc}  |   16 +-
 .../secondary/analyser/CommandReplayAnalyser.adoc} |    8 +-
 .../analyser/CommandReplayAnalyserException.adoc}  |    8 +-
 .../analyser/CommandReplayAnalyserResult.adoc}     |    8 +-
 .../analysis/CommandReplayAnalysisService.adoc}    |   19 +-
 .../secondary/clock/TickingClockService.adoc       |   41 +
 .../secondary/config/SecondaryConfig.adoc}         |   31 +-
 .../executor/CommandExecutorServiceWithTime.adoc   |   28 +
 .../secondary/fetch/CommandFetcher.adoc}           |   29 +-
 .../secondary/job/ReplicateAndReplayJob.adoc}      |   11 +-
 .../secondary/job/SecondaryStatusData.adoc}        |   22 +-
 .../jobcallables/ReplicateAndRunCommands.adoc}     |   33 +-
 .../secondary/mixins/CommandJdo_exclude.adoc}      |   17 +-
 .../secondary/mixins/CommandJdo_replayQueue.adoc}  |   18 +-
 .../secondary/mixins/Object_openOnPrimary.adoc}    |   18 +-
 .../spi/ReplayCommandExecutionController.adoc}     |   22 +-
 .../ui/CommandReplayOnSecondaryService.adoc}       |   16 +-
 .../cors/impl/IsisModuleExtCorsImpl.adoc}          |    6 +-
 .../fullcalendar/applib/CalendarEventable.adoc}    |   22 +-
 .../fullcalendar/applib/Calendarable.adoc}         |   24 +-
 .../applib/IsisModuleExtFullCalendarApplib.adoc}   |    6 +-
 .../spi/CalendarableDereferencingService.adoc}     |   12 +-
 .../fullcalendar/applib/value/CalendarEvent.adoc}  |   39 +-
 .../ui/component/IsisModuleExtFullCalendarUi.adoc} |    6 +-
 .../hsqldbmgr/dom/IsisModuleExtHsqldbMgr.adoc}     |    6 +-
 .../hsqldbmgr/dom/services/HsqlDbManagerMenu.adoc} |   10 +-
 .../applib/IsisModuleExtJaxRsClientApplib.adoc}    |    6 +-
 .../jaxrsclient/applib/client/JaxRsClient.adoc}    |   10 +-
 .../jaxrsclient/applib/client/JaxRsResponse.adoc}  |    8 +-
 .../applib/IsisModuleIncModelApplib.adoc}          |    6 +-
 .../modelannotation/applib/annotation/Model.adoc}  |   24 +-
 .../metamodel/IsisModuleExtModelAnnotation.adoc}   |    6 +-
 .../SupportingMethodValidatorRefinerFactory.adoc}  |   12 +-
 .../services/IncubatorMetaModelPlugin.adoc}        |    6 +-
 .../quartz/IsisModuleExtQuartzImpl.adoc}           |    6 +-
 .../quartz/context/JobExecutionData.adoc}          |   25 +-
 .../spring/AutowiringSpringBeanJobFactory.adoc}    |    6 +-
 .../restclient/ActionParameterListBuilder.adoc     |   28 +
 .../restclient/IsisModuleExtRestClient.adoc}       |    6 +-
 .../extensions/restclient/ResponseDigest.adoc      |   53 +
 .../index/extensions/restclient/RestfulClient.adoc |   95 ++
 .../restclient/RestfulClientConfig.adoc}           |    6 +-
 .../restclient/RestfulClientException.adoc}        |   14 +-
 .../restclient/auth/BasicAuthFilter.adoc}          |   14 +-
 .../restclient/log/ClientConversationFilter.adoc}  |   22 +-
 .../restclient/log/ClientConversationLogger.adoc}  |   10 +-
 .../secman/api/IsisModuleExtSecmanApi.adoc}        |    6 +-
 .../extensions/secman/api/SecmanConfiguration.adoc |   67 ++
 .../secman/api/SecurityRealm.adoc}                 |    6 +-
 .../secman/api/SecurityRealmCharacteristic.adoc}   |    6 +-
 .../secman/api/SecurityRealmService.adoc}          |    6 +-
 .../api/encryption/PasswordEncryptionService.adoc} |    8 +-
 .../encryption/PasswordEncryptionServiceNone.adoc} |    8 +-
 .../secman/api/events/UserCreatedEvent.adoc}       |   43 +-
 .../api/permission/ApplicationPermission.adoc      |   49 +
 .../api/permission/ApplicationPermissionMode.adoc  |   37 +
 .../ApplicationPermissionRepository.adoc           |   30 +
 .../api/permission/ApplicationPermissionRule.adoc} |   35 +-
 .../api/permission/ApplicationPermissionValue.adoc |   34 +
 .../permission/ApplicationPermissionValueSet.adoc} |   28 +-
 .../permission/PermissionsEvaluationService.adoc   |   18 +
 .../PermissionsEvaluationServiceAbstract.adoc}     |    8 +-
 ...ermissionsEvaluationServiceAllowBeatsVeto.adoc} |    8 +-
 ...ermissionsEvaluationServiceVetoBeatsAllow.adoc} |    8 +-
 .../secman/api/role/ApplicationRole.adoc}          |   28 +-
 .../api/role/ApplicationRoleRepository.adoc}       |   35 +-
 .../secman/api/tenancy/ApplicationTenancy.adoc}    |   22 +-
 .../api/tenancy/ApplicationTenancyEvaluator.adoc   |   26 +
 .../api/tenancy/ApplicationTenancyRepository.adoc} |   33 +-
 .../extensions/secman/api/tenancy/HasAtPath.adoc   |   20 +
 .../secman/api/user/AccountType.adoc}              |   14 +-
 .../secman/api/user/ApplicationUser.adoc           |   84 ++
 .../secman/api/user/ApplicationUserRepository.adoc |   51 +
 .../secman/api/user/ApplicationUserStatus.adoc}    |   14 +-
 .../IsisModuleExtSecmanEncryptionJbcrypt.adoc}     |    6 +-
 .../PasswordEncryptionServiceUsingJBcrypt.adoc}    |    8 +-
 .../jdo/IsisModuleExtSecmanPersistenceJdo.adoc}    |    6 +-
 .../jdo/seed/SeedSecurityModuleService.adoc}       |    8 +-
 .../jdo/seed/SeedUsersAndRolesFixtureScript.adoc}  |   10 +-
 .../secman/jdo/seed/scripts/GlobalTenancy.adoc}    |    8 +-
 ...tFixturesFixtureResultsRoleAndPermissions.adoc} |   10 +-
 .../IsisExtSecmanAdminRoleAndPermissions.adoc}     |    6 +-
 .../jdo/seed/scripts/IsisExtSecmanAdminUser.adoc}  |    6 +-
 .../IsisExtSecmanFixtureRoleAndPermissions.adoc}   |    8 +-
 ...sisExtSecmanRegularUserRoleAndPermissions.adoc} |   12 +-
 .../jpa/IsisModuleExtSecmanPersistenceJpa.adoc}    |    6 +-
 .../jpa/seed/SeedSecurityModuleService.adoc}       |    8 +-
 .../jpa/seed/SeedUsersAndRolesFixtureScript.adoc}  |   10 +-
 .../secman/jpa/seed/scripts/GlobalTenancy.adoc}    |    8 +-
 ...tFixturesFixtureResultsRoleAndPermissions.adoc} |   10 +-
 .../IsisExtSecmanAdminRoleAndPermissions.adoc}     |    6 +-
 .../jpa/seed/scripts/IsisExtSecmanAdminUser.adoc}  |    6 +-
 .../IsisExtSecmanFixtureRoleAndPermissions.adoc}   |    8 +-
 ...sisExtSecmanRegularUserRoleAndPermissions.adoc} |   12 +-
 ...yModuleAppUserRegistrationServiceAbstract.adoc} |   22 +-
 .../secman/model/IsisModuleExtSecmanModel.adoc}    |    6 +-
 .../secman/model/app/user/MeService.adoc}          |    8 +-
 .../shiro/IsisModuleExtSecmanRealmShiro.adoc}      |    6 +-
 .../shiro/IsisModuleExtSecmanShiroRealm.adoc}      |   18 +-
 .../services/SecurityRealmServiceUsingShiro.adoc}  |    6 +-
 .../secman/shiro/util/ShiroUtils.adoc}             |   10 +-
 .../realm/impl/IsisLdapContextFactory.adoc}        |   32 +-
 .../shirorealmldap/realm/impl/IsisLdapRealm.adoc   |  147 +++
 .../impl/IsisModuleExtShiroRealmLdapImpl.adoc}     |    6 +-
 .../ui/IsisModuleExtExcelDownloadUi.adoc}          |    6 +-
 .../ui/components/CollectionContentsAsExcel.adoc}  |   22 +-
 .../CollectionContentsAsExcelFactory.adoc}         |   22 +-
 .../pdfjs/applib/annotations/PdfJsViewer.adoc}     |   22 +-
 .../wicket/pdfjs/applib/config/PdfJsConfig.adoc}   |   40 +-
 .../viewer/wicket/pdfjs/applib/config/Scale.adoc}  |   36 +-
 .../pdfjs/applib/spi/PdfJsViewerAdvisor.adoc}      |   22 +-
 .../wicket/pdfjs/ui/IsisModuleExtPdfjsUi.adoc}     |    6 +-
 .../applib/IsisModulePersistenceJdoApplib.adoc}    |    6 +-
 .../jdo/applib/integration/JdoSupportService.adoc  |    2 +-
 .../jdo/datanucleus/IsisModuleJdoDatanucleus.adoc  |   24 +
 .../changetracking/JdoLifecycleListener.adoc       |   56 +
 .../mixins/Persistable_datanucleusIdLong.adoc}     |    8 +-
 .../Persistable_datanucleusVersionLong.adoc}       |    8 +-
 .../Persistable_datanucleusVersionTimestamp.adoc}  |    8 +-
 .../mixins/Persistable_downloadJdoMetadata.adoc}   |   11 +-
 .../applib/IsisBookmarkConverter.adoc}             |    8 +-
 .../applib/IsisLocalResourcePathConverter.adoc}    |   10 +-
 .../applib/IsisMarkupConverter.adoc}               |    8 +-
 .../applib/IsisPasswordConverter.adoc}             |    8 +-
 .../JavaAwtBufferedImageByteArrayConverter.adoc}   |    8 +-
 .../schema/v2/IsisChangesDtoConverter.adoc}        |    8 +-
 .../schema/v2/IsisCommandDtoConverter.adoc}        |    8 +-
 .../schema/v2/IsisInteractionDtoConverter.adoc}    |    8 +-
 .../schema/v2/IsisOidDtoConverter.adoc}            |    8 +-
 .../time/IsoOffsetTimeConverter.adoc}              |    8 +-
 .../time/IsoZonedDateTimeConverter.adoc}           |    8 +-
 .../applib/ByteArrayBlobRdbmsMapping.adoc}         |    8 +-
 .../valuetypes/applib/IsisBlobMapping.adoc}        |   30 +-
 .../valuetypes/applib/IsisClobMapping.adoc}        |   30 +-
 .../JpaEntityInjectionPointResolver.adoc}          |   10 +-
 .../jpa/applib/services/JpaSupportService.adoc     |    2 +-
 .../jpa/eclipselink/IsisModuleJpaEclipselink.adoc} |   24 +-
 .../IsisModuleSchema.adoc}                         |    6 +-
 .../bypass/IsisModuleSecurityBypass.adoc}          |    8 +-
 .../authentication/AuthenticatorBypass.adoc}       |   10 +-
 .../bypass/authorization/AuthorizorBypass.adoc}    |   22 +-
 .../keycloak/IsisModuleSecurityKeycloak.adoc}      |    8 +-
 .../authentication/AuthenticatorKeycloak.adoc}     |   22 +-
 .../authorization/AuthorizorKeycloak.adoc}         |   14 +-
 .../keycloak/webmodule/KeycloakFilter.adoc}        |   12 +-
 .../keycloak/webmodule/WebModuleKeycloak.adoc}     |   10 +-
 .../shiro/IsisModuleSecurityShiro.adoc}            |    8 +-
 .../shiro/authentication/AuthenticatorShiro.adoc}  |   24 +-
 .../shiro/authorization/AuthorizorShiro.adoc       |   33 +
 .../shiro/authorization/IsisPermission.adoc}       |   20 +-
 .../authorization/IsisPermissionResolver.adoc}     |    8 +-
 .../shiro/webmodule/WebModuleShiro.adoc}           |   32 +-
 .../base/applib/Chained.adoc}                      |   24 +-
 .../base/applib/Dflt.adoc}                         |    6 +-
 .../applib/IsisModuleSubdomainsBaseApplib.adoc}    |    6 +-
 .../base/applib/PowerType.adoc}                    |    8 +-
 .../base/applib/Titled.adoc}                       |    6 +-
 .../base/applib/TitledEnum.adoc}                   |    8 +-
 .../base/applib/services/BaseServicesModule.adoc}  |    6 +-
 .../applib/services/calendar/CalendarService.adoc} |   33 +-
 .../base/applib/types/DescriptionType.adoc}        |    6 +-
 .../base/applib/types/FqcnType.adoc}               |    6 +-
 .../base/applib/types/MoneyType.adoc}              |    6 +-
 .../base/applib/types/NameType.adoc}               |    6 +-
 .../base/applib/types/NotesType.adoc}              |    6 +-
 .../base/applib/types/ObjectIdentifierType.adoc}   |    6 +-
 .../base/applib/types/PercentageType.adoc}         |    6 +-
 .../base/applib/types/ProperNameType.adoc}         |    6 +-
 .../base/applib/types/ReferenceType.adoc}          |    6 +-
 .../base/applib/types/TitleType.adoc}              |    6 +-
 .../base/applib/types/UrlTemplateType.adoc}        |    6 +-
 .../base/applib/types/UserNameType.adoc}           |    6 +-
 .../base/applib/types/XxxType.adoc}                |    6 +-
 .../base/applib/utils/ClassUtils.adoc}             |    6 +-
 .../base/applib/utils/JodaPeriodUtils.adoc}        |   12 +-
 .../base/applib/utils/MathUtils.adoc}              |   22 +-
 .../base/applib/utils/MessageUtils.adoc}           |    6 +-
 .../base/applib/utils/StringUtils.adoc}            |   16 +-
 .../base/applib/utils/TitleBuilder.adoc}           |   33 +-
 .../base/applib/valuetypes/AbstractInterval.adoc   |   79 ++
 .../base/applib/valuetypes/LocalDateInterval.adoc  |   45 +
 .../subdomains/base/applib/valuetypes/VT.adoc      |   74 ++
 .../base/applib/with/WithCodeComparable.adoc}      |    6 +-
 .../base/applib/with/WithCodeGetter.adoc}          |    8 +-
 .../base/applib/with/WithCodeUnique.adoc}          |    6 +-
 .../applib/with/WithDescriptionComparable.adoc}    |    6 +-
 .../base/applib/with/WithDescriptionGetter.adoc}   |    8 +-
 .../base/applib/with/WithDescriptionUnique.adoc}   |    6 +-
 .../base/applib/with/WithInterval.adoc}            |   32 +-
 .../base/applib/with/WithIntervalContiguous.adoc   |   42 +
 .../base/applib/with/WithIntervalMutable.adoc}     |   14 +-
 .../base/applib/with/WithNameComparable.adoc}      |    6 +-
 .../base/applib/with/WithNameGetter.adoc}          |    8 +-
 .../base/applib/with/WithNameUnique.adoc}          |    6 +-
 .../base/applib/with/WithReferenceComparable.adoc} |    6 +-
 .../base/applib/with/WithReferenceGetter.adoc}     |    8 +-
 .../base/applib/with/WithReferenceUnique.adoc}     |    6 +-
 .../base/applib/with/WithSequence.adoc}            |    8 +-
 .../base/applib/with/WithStartDate.adoc}           |    8 +-
 .../base/applib/with/WithTitleComparable.adoc}     |    6 +-
 .../base/applib/with/WithTitleGetter.adoc}         |    8 +-
 .../base/applib/with/WithTitleUnique.adoc}         |    6 +-
 .../applib/IsisModuleSubdomainsExcelApplib.adoc}   |    6 +-
 .../excel/applib/dom/AggregationType.adoc}         |    8 +-
 .../excel/applib/dom/ExcelMetaDataEnabled.adoc}    |    8 +-
 .../subdomains/excel/applib/dom/ExcelService.adoc  |   63 ++
 .../excel/applib/dom/HyperLink.adoc}               |    6 +-
 .../excel/applib/dom/PivotColumn.adoc}             |    6 +-
 .../excel/applib/dom/PivotDecoration.adoc}         |    6 +-
 .../excel/applib/dom/PivotRow.adoc}                |    6 +-
 .../excel/applib/dom/PivotValue.adoc}              |    8 +-
 .../excel/applib/dom/RowHandler.adoc}              |    6 +-
 .../excel/applib/dom/WorksheetContent.adoc}        |   10 +-
 .../excel/applib/dom/WorksheetSpec.adoc}           |   32 +-
 .../excel/applib/dom/util/AnnotationList.adoc}     |   12 +-
 .../excel/applib/dom/util/AnnotationTriplet.adoc}  |   14 +-
 .../applib/dom/util/ExcelFileBlobConverter.adoc}   |    8 +-
 .../excel/applib/dom/util/ExcelServiceImpl.adoc    |  109 ++
 .../excel/applib/dom/util/Mode.adoc}               |   21 +-
 .../excel/applib/dom/util/PivotUtils.adoc}         |   22 +-
 .../excel/applib/dom/util/SheetPivoter.adoc        |   40 +
 .../excel/testing/ExcelFixture.adoc}               |   31 +-
 .../excel/testing/ExcelFixture2.adoc}              |   30 +-
 .../excel/testing/ExcelFixtureRowHandler.adoc}     |    8 +-
 .../testing/ExcelFixtureWorkbookHandler.adoc}      |    8 +-
 .../excel/testing/FixtureAwareRowHandler.adoc}     |    8 +-
 .../testing/IsisModuleSubdomainsExcelTesting.adoc} |    6 +-
 .../applib/IsisModuleSubdomainsSpringApplib.adoc}  |    6 +-
 .../spring/applib/service/BeanDescriptor.adoc}     |    8 +-
 .../spring/applib/service/ContextBeans.adoc}       |    6 +-
 .../spring/applib/service/SpringBeansService.adoc} |   10 +-
 .../IsisModuleSubdomainsXDocReportApplib.adoc}     |    6 +-
 .../xdocreport/applib/service/OutputType.adoc}     |    8 +-
 .../applib/service/XDocReportModel.adoc}           |    6 +-
 .../applib/service/XDocReportService.adoc}         |   10 +-
 .../applib/IsisModuleTestingFakeDataApplib.adoc}   |    6 +-
 .../services/AbstractRandomValueGenerator.adoc}    |    8 +-
 .../fakedata/applib/services/Addresses.adoc}       |   42 +-
 .../fakedata/applib/services/BigDecimals.adoc}     |   10 +-
 .../fakedata/applib/services/BigIntegers.adoc}     |    8 +-
 .../fakedata/applib/services/Books.adoc}           |   12 +-
 .../fakedata/applib/services/Booleans.adoc}        |   33 +-
 .../fakedata/applib/services/Bytes.adoc}           |   12 +-
 .../fakedata/applib/services/Chars.adoc}           |   14 +-
 .../fakedata/applib/services/Collections.adoc      |   91 ++
 .../fakedata/applib/services/Comms.adoc}           |   18 +-
 .../fakedata/applib/services/CreditCards.adoc}     |   14 +-
 .../fakedata/applib/services/Doubles.adoc}         |   10 +-
 .../fakedata/applib/services/Enums.adoc}           |    8 +-
 .../fakedata/applib/services/FakeDataService.adoc  |  106 ++
 .../fakedata/applib/services/Floats.adoc}          |    8 +-
 .../fakedata/applib/services/Integers.adoc}        |   12 +-
 .../fakedata/applib/services/IsisBlobs.adoc}       |   12 +-
 .../fakedata/applib/services/IsisClobs.adoc}       |   12 +-
 .../fakedata/applib/services/IsisPasswords.adoc}   |    8 +-
 .../fakedata/applib/services/J8DateTimes.adoc}     |   16 +-
 .../fakedata/applib/services/J8LocalDates.adoc}    |   16 +-
 .../fakedata/applib/services/J8Periods.adoc}       |   22 +-
 .../fakedata/applib/services/JavaSqlDates.adoc}    |    8 +-
 .../applib/services/JavaSqlTimestamps.adoc}        |    8 +-
 .../fakedata/applib/services/JavaUtilDates.adoc}   |    8 +-
 .../fakedata/applib/services/JodaDateTimes.adoc}   |   16 +-
 .../fakedata/applib/services/JodaLocalDates.adoc}  |   16 +-
 .../fakedata/applib/services/JodaPeriods.adoc}     |   22 +-
 .../fakedata/applib/services/Longs.adoc}           |    8 +-
 .../fakedata/applib/services/Lorem.adoc}           |   24 +-
 .../fakedata/applib/services/Names.adoc}           |   20 +-
 .../fakedata/applib/services/Shorts.adoc}          |   12 +-
 .../fakedata/applib/services/Strings.adoc}         |   12 +-
 .../fakedata/applib/services/Urls.adoc}            |    8 +-
 .../fakedata/applib/services/Uuids.adoc}           |    8 +-
 .../ui/IsisModuleTestingH2ConsoleUi.adoc}          |    6 +-
 .../h2console/ui/services/H2ManagerMenu.adoc}      |   10 +-
 .../ui/webmodule/WebModuleH2Console.adoc}          |   22 +-
 .../applib/ExceptionRecognizerTranslate.adoc}      |    6 +-
 .../applib/IsisIntegrationTestAbstract.adoc}       |    8 +-
 .../applib/IsisInteractionHandler.adoc}            |    8 +-
 .../applib/ThrowableMatchers.adoc}                 |   28 +-
 .../applib/swagger/SwaggerExporter.adoc}           |   30 +-
 .../applib/validate/DomainModelValidator.adoc      |   42 +
 .../IsisModuleTestingSpecSupportApplib.adoc}       |    6 +-
 .../integration/ObjectFactoryForIntegration.adoc}  |   12 +-
 .../specsupport/applib/specs/V.adoc}               |    8 +-
 .../IsisModuleTestingUnitTestSupportApplib.adoc}   |    6 +-
 .../applib/bean/AbstractBeanPropertiesTest.adoc}   |    7 +-
 .../bean/FixtureDatumFactoriesForAnyPojo.adoc}     |   10 +-
 .../bean/FixtureDatumFactoriesForApplib.adoc}      |    8 +-
 .../applib/bean/FixtureDatumFactoriesForJoda.adoc} |   12 +-
 .../applib/bean/FixtureDatumFactoriesForTime.adoc} |   22 +-
 .../unittestsupport/applib/bean/PojoTester.adoc}   |   22 +-
 .../core/AbstractApplyToAllContractTest.adoc}      |   22 +-
 ...rectionalRelationshipContractTestAbstract.adoc} |    6 +-
 .../applib/core/bidir/Instantiator.adoc}           |    8 +-
 .../applib/core/bidir/InstantiatorSimple.adoc}     |   10 +-
 .../applib/core/bidir/Instantiators.adoc}          |    6 +-
 .../ComparableContractTest_compareTo.adoc}         |    8 +-
 .../core/comparable/ComparableContractTester.adoc} |   20 +-
 .../unittestsupport/applib/core/files/Files.adoc   |   32 +
 .../applib/core/jaxb/JaxbMatchers.adoc}            |   28 +-
 .../applib/core/jmocking/Imposterisers.adoc}       |    8 +-
 .../core/jmocking/InjectIntoJMockAction.adoc}      |   18 +-
 .../applib/core/jmocking/IsisActions.adoc}         |   12 +-
 .../applib/core/jmocking/JMockActions.adoc}        |    8 +-
 .../applib/core/jmocking/JUnitRuleMockery2.adoc    |   75 ++
 .../applib/core/jmocking/PostponedAction.adoc}     |    8 +-
 .../core/soap/SoapEndpointPublishingRule.adoc}     |   30 +-
 .../applib/core/soap/SoapEndpointSpec.adoc}        |   28 +-
 .../SortedSetsContractTestAbstract.adoc}           |    6 +-
 .../applib/core/streams/NullPrintStream.adoc}      |   22 +-
 .../applib/core/utils/CollectUtils.adoc}           |    6 +-
 .../applib/core/utils/IndentPrinter.adoc           |   86 ++
 .../applib/core/utils/ReflectUtils.adoc}           |   22 +-
 .../applib/core/utils/StringUtils.adoc}            |    8 +-
 .../core/value/ValueTypeContractTestAbstract.adoc} |   22 +-
 .../applib/dom/assertions/Asserting.adoc}          |    6 +-
 .../applib/dom/matchers/IsisMatchers.adoc          |   46 +
 .../dom/privatecons/PrivateConstructorTester.adoc} |    8 +-
 .../applib/dom/reflect/ReflectUtils.adoc}          |    8 +-
 .../applib/dom/repo/FinderInteraction.adoc}        |   22 +-
 .../applib/IsisModuleValAsciidocApplib.adoc}       |    6 +-
 .../asciidoc/applib/jaxb/AsciiDocJaxbAdapter.adoc} |    8 +-
 .../asciidoc/applib/value/AsciiDoc.adoc}           |   24 +-
 .../metamodel/IsisModuleValAsciidocMetaModel.adoc} |    6 +-
 .../IsisModuleValAsciidocPersistenceJdoDn5.adoc}   |    6 +-
 .../jdo/dn5/converters/IsisAsciiDocConverter.adoc} |    8 +-
 .../ui/wkt/IsisModuleValAsciidocUiWkt.adoc}        |    6 +-
 .../applib/IsisModuleValMarkdownApplib.adoc}       |    6 +-
 .../markdown/applib/jaxb/MarkdownJaxbAdapter.adoc} |    8 +-
 .../markdown/applib/value/Converter.adoc}          |   41 +-
 .../metamodel/IsisModuleValMarkdownMetaModel.adoc} |    6 +-
 .../IsisModuleValMarkdownPersistenceJdoDn5.adoc}   |    6 +-
 .../jdo/dn5/converters/IsisMarkdownConverter.adoc} |    8 +-
 .../ui/wkt/IsisModuleValMarkdownUiWkt.adoc}        |    6 +-
 .../sse/applib/IsisModuleValSseApplib.adoc}        |    6 +-
 .../sse/applib/annotations/ServerSentEvents.adoc}  |    6 +-
 .../sse/applib/annotations/SseSource.adoc}         |   12 +-
 .../sse/applib/service/SseChannel.adoc}            |   18 +-
 .../sse/applib/service/SseService.adoc}            |   10 +-
 .../sse/ui/wkt/IsisModuleValSseUiWkt.adoc}         |    6 +-
 .../sse/ui/wkt/services/SseServiceDefault.adoc}    |   10 +-
 .../wkt/webmodule/WebModuleServerSentEvents.adoc}  |   10 +-
 .../IsisModuleViewerRestfulObjectsApplib.adoc}     |    6 +-
 .../restfulobjects/applib/JsonRepresentation.adoc  |  481 ++++++++
 .../restfulobjects/applib/LinkRepresentation.adoc} |   44 +-
 .../restfulobjects/applib/Rel.adoc}                |   98 +-
 .../restfulobjects/applib/RelDefinition.adoc}      |   30 +-
 .../restfulobjects/applib/RepresentationType.adoc  |  118 ++
 .../restfulobjects/applib/RestfulHttpMethod.adoc}  |   12 +-
 .../restfulobjects/applib/RestfulMediaType.adoc    |   76 ++
 .../restfulobjects/applib/RestfulRequest.adoc}     |   10 +-
 .../restfulobjects/applib/RestfulResponse.adoc}    |   28 +-
 .../applib/boot/BootstrapResource.adoc}            |    6 +-
 .../AbstractObjectMemberRepresentation.adoc}       |   16 +-
 .../domainobjects/ActionResultRepresentation.adoc} |   10 +-
 .../DomainObjectMemberRepresentation.adoc          |   42 +
 .../domainobjects/DomainObjectRepresentation.adoc  |   64 ++
 .../applib/domainobjects/DomainObjectResource.adoc |   56 +
 .../domainobjects/DomainRepresentation.adoc}       |   22 +-
 .../domainobjects/DomainServiceResource.adoc       |   50 +
 .../applib/domainobjects/ListRepresentation.adoc}  |   10 +-
 .../domainobjects/ObjectActionRepresentation.adoc} |    8 +-
 .../ObjectCollectionRepresentation.adoc}           |    8 +-
 .../ObjectPropertyRepresentation.adoc}             |    6 +-
 .../domainobjects/ScalarValueRepresentation.adoc}  |    8 +-
 .../AbstractTypeMemberRepresentation.adoc}         |    6 +-
 .../ActionDescriptionRepresentation.adoc}          |    8 +-
 .../ActionParameterDescriptionRepresentation.adoc} |    6 +-
 .../CollectionDescriptionRepresentation.adoc}      |    6 +-
 .../domaintypes/DomainTypeRepresentation.adoc}     |    6 +-
 .../applib/domaintypes/DomainTypeResource.adoc}    |   24 +-
 .../PropertyDescriptionRepresentation.adoc}        |    6 +-
 .../TypeActionResultRepresentation.adoc}           |    6 +-
 .../domaintypes/TypeListRepresentation.adoc}       |    6 +-
 .../applib/dtos/ScalarValueDtoV2.adoc}             |   12 +-
 .../applib/errors/ErrorRepresentation.adoc}        |    6 +-
 .../applib/health/HealthRepresentation.adoc}       |    8 +-
 .../applib/health/HealthResource.adoc}             |   12 +-
 .../applib/homepage/HomePageRepresentation.adoc}   |   14 +-
 .../applib/homepage/HomePageResource.adoc}         |   18 +-
 .../applib/menubars/MenuBarsResource.adoc}         |   31 +-
 .../applib/user/UserRepresentation.adoc}           |   18 +-
 .../restfulobjects/applib/user/UserResource.adoc}  |   22 +-
 .../restfulobjects/applib/util/JsonMapper.adoc}    |   28 +-
 .../restfulobjects/applib/util/JsonNodeUtils.adoc} |   40 +-
 .../restfulobjects/applib/util/MediaTypes.adoc}    |   28 +-
 .../restfulobjects/applib/util/Parser.adoc}        |   42 +-
 .../restfulobjects/applib/util/PathNode.adoc}      |   24 +-
 .../applib/util/UrlEncodingUtils.adoc}             |   22 +-
 .../applib/version/VersionRepresentation.adoc}     |   10 +-
 .../applib/version/VersionResource.adoc}           |   12 +-
 ...sModuleViewerRestfulObjectsJaxrsResteasy4.adoc} |    6 +-
 .../conneg/RestfulObjectsJaxbWriterForXml.adoc}    |    6 +-
 .../webmodule/WebModuleJaxrsResteasy4.adoc}        |   22 +-
 .../IsisModuleRestfulObjectsRendering.adoc}        |    6 +-
 .../rendering/service/RepresentationService.adoc}  |   24 +-
 .../RepresentationServiceContentNegotiator.adoc    |   32 +
 .../acceptheader/AcceptHeaderServiceForRest.adoc}  |    6 +-
 .../service/conneg/ContentNegotiationService.adoc} |   22 +-
 .../conneg/ContentNegotiationServiceAbstract.adoc} |   20 +-
 ...entNegotiationServiceForRestfulObjectsV1_0.adoc |   44 +
 .../ContentNegotiationServiceOrgApacheIsisV1.adoc} |   22 +-
 .../ContentNegotiationServiceOrgApacheIsisV2.adoc  |   59 +
 .../ContentNegotiationServiceXRoDomainType.adoc    |   33 +
 .../service/swagger/SwaggerServiceMenu.adoc}       |   24 +-
 .../IsisModuleViewerRestfulObjectsViewer.adoc}     |    6 +-
 .../wicket/model/IsisModuleViewerWicketModel.adoc} |    6 +-
 .../wicket/ui/IsisModuleViewerWicketUi.adoc}       |    6 +-
 .../viewer/IsisModuleViewerWicketViewer.adoc}      |    6 +-
 .../modules/generated/pages/system-overview.adoc   | 1147 +++++++++++++-------
 618 files changed, 8508 insertions(+), 3607 deletions(-)

diff --git a/antora/components/system/modules/generated/pages/index/applib/AbstractViewModel.adoc b/antora/components/system/modules/generated/pages/index/applib/AbstractViewModel.adoc
index 7747117..7c6675c 100644
--- a/antora/components/system/modules/generated/pages/index/applib/AbstractViewModel.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/AbstractViewModel.adoc
@@ -5,8 +5,6 @@ Convenience super class for view models that wish to interact with the container
 
 Subclassing is NOT mandatory; the methods in this superclass can be pushed down into domain objects and another superclass used if required.
 
-As an alternative, consider simply annotating the view model class with _org.apache.isis.applib.annotation.ViewModel_ .
-
 .Java Sources
 [source,java]
 ----
diff --git a/antora/components/system/modules/generated/pages/index/applib/Identifier.adoc b/antora/components/system/modules/generated/pages/index/applib/Identifier.adoc
index 010914d..26e5f73 100644
--- a/antora/components/system/modules/generated/pages/index/applib/Identifier.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/Identifier.adoc
@@ -94,7 +94,7 @@ Convenience method.
 --
 REVIEW: why not just compare the _#toString()_ representations?
 --
-<.> `[teal]#*_fromIdentityString_*#(String asString)` : `xref:system:generated:index/applib/Identifier.adoc[Identifier]`
+<.> `[teal]#*_fromIdentityString_*#(String asString)` : `Identifier`
 +
 --
 Factory method.
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/IsisModuleApplib.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/IsisModuleApplib.adoc
index 78f204d..2b5fef2 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/IsisModuleApplib.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= IsisModuleApplib : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class IsisModuleApplib {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/ViewModel.adoc b/antora/components/system/modules/generated/pages/index/applib/ViewModel.adoc
index b58c457..7ce0f91 100644
--- a/antora/components/system/modules/generated/pages/index/applib/ViewModel.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/ViewModel.adoc
@@ -3,7 +3,7 @@
 
 Indicates that an object belongs to the UI/application layer, and is intended to be used as a view model.
 
-Objects that are part of the domain object layer should instead implement xref:system:generated:index/applib/RecreatableDomainObject.adoc[RecreatableDomainObject] .
+Objects that are part of the domain object layer should instead implement _RecreatableDomainObject_ .
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/adapters/Parser.adoc b/antora/components/system/modules/generated/pages/index/applib/adapters/Parser.adoc
index 5e41fcf..8066aa9 100644
--- a/antora/components/system/modules/generated/pages/index/applib/adapters/Parser.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/adapters/Parser.adoc
@@ -9,7 +9,7 @@ Specifically, this interface embodies three related capabilities:
 * to provide a string representation of the object, for use as its title.
 * to indicate the typical length of such a string representation.
 
-For custom-written (as opposed to third-party) value types, the ability for the xref:system:generated:index/applib/adapters/Parser.adoc[Parser] to provide a title responsibilities overlap with other conventions for domain objects. Specifically, normally we write a `title()` method to return a title. In such cases a typical implementation of xref:system:generated:index/applib/adapters/Parser.adoc[Parser] would just delegate to the value type itself to obtain the title (ie invoking the `ti [...]
+For custom-written (as opposed to third-party) value types, the ability for the _Parser_ to provide a title responsibilities overlap with other conventions for domain objects. Specifically, normally we write a `title()` method to return a title. In such cases a typical implementation of _Parser_ would just delegate to the value type itself to obtain the title (ie invoking the `title()` method directly rather than having the framework do this).
 
 Similarly, the ability to return a typical length also overlaps with the _TypicalLength_ annotation; which is why _TypicalLength_ cannot be applied to types, only to properties and parameters.
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/adapters/ValueSemanticsProvider.adoc b/antora/components/system/modules/generated/pages/index/applib/adapters/ValueSemanticsProvider.adoc
index 04af079..929d536 100644
--- a/antora/components/system/modules/generated/pages/index/applib/adapters/ValueSemanticsProvider.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/adapters/ValueSemanticsProvider.adoc
@@ -3,7 +3,7 @@
 
 Provides a mechanism for providing a set of value semantics.
 
-This interface is used by xref:system:generated:index/applib/annotation/Value.adoc[Value] to allow these semantics to be provided through a single point. Alternatively, xref:system:generated:index/applib/annotation/Value.adoc[Value] supports this information being provided via the configuration files.
+This interface is used by _Value_ to allow these semantics to be provided through a single point. Alternatively, _Value_ supports this information being provided via the configuration files.
 
 Whatever the class that implements this interface, it must also expose either a `public` no-arg constructor, or (for implementations that also are `Facet` s) a `public` constructor that accepts a `FacetHolder` , and `IsisConfiguration` and a `ValueSemanticsProviderContext` . This constructor is then used by the framework to instantiate the object reflectively.
 
@@ -20,20 +20,20 @@ interface ValueSemanticsProvider {
 }
 ----
 
-<.> `[teal]#*getParser*#()` : `xref:system:generated:index/applib/adapters/Parser.adoc[Parser]<T>`
+<.> `[teal]#*getParser*#()` : `Parser<T>`
 +
 --
-The xref:system:generated:index/applib/adapters/Parser.adoc[Parser] , if any.
+The _Parser_ , if any.
 --
-<.> `[teal]#*getEncoderDecoder*#()` : `xref:system:generated:index/applib/adapters/EncoderDecoder.adoc[EncoderDecoder]<T>`
+<.> `[teal]#*getEncoderDecoder*#()` : `EncoderDecoder<T>`
 +
 --
-The xref:system:generated:index/applib/adapters/EncoderDecoder.adoc[EncoderDecoder] , if any.
+The _EncoderDecoder_ , if any.
 --
-<.> `[teal]#*getDefaultsProvider*#()` : `xref:system:generated:index/applib/adapters/DefaultsProvider.adoc[DefaultsProvider]<T>`
+<.> `[teal]#*getDefaultsProvider*#()` : `DefaultsProvider<T>`
 +
 --
-The xref:system:generated:index/applib/adapters/DefaultsProvider.adoc[DefaultsProvider] , if any.
+The _DefaultsProvider_ , if any.
 
 If not `null` , implies that the value has (or may have) a default.
 --
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/Action.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Action.adoc
index 5e30591..34d731d 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/Action.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Action.adoc
@@ -55,19 +55,19 @@ For example@Action(associateWith="items", associateWithSequence="2.1")
 <.> `[teal]#*_commandDtoProcessor_*#` : `Class<? extends CommandDtoProcessor>`
 +
 --
-The xref:system:generated:index/applib/services/commanddto/processor/CommandDtoProcessor.adoc[CommandDtoProcessor] to process this command's DTO.
+The _CommandDtoProcessor_ to process this command's DTO.
 
-The processor itself is used by xref:system:generated:index/applib/services/commanddto/conmap/ContentMappingServiceForCommandDto.adoc[ContentMappingServiceForCommandDto] and xref:system:generated:index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc[ContentMappingServiceForCommandsDto] to dynamically transform the DTOs.
+The processor itself is used by _ContentMappingServiceForCommandDto_ and _ContentMappingServiceForCommandsDto_ to dynamically transform the DTOs.
 --
-<.> `[teal]#*_commandPublishing_*#` : `xref:system:generated:index/applib/annotation/Publishing.adoc[Publishing]`
+<.> `[teal]#*_commandPublishing_*#` : `Publishing`
 +
 --
-Whether action invocations, captured as xref:system:generated:index/applib/services/command/Command.adoc[Command] s, should be published to xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber] s.
+Whether action invocations, captured as _Command_ s, should be published to _CommandSubscriber_ s.
 --
 <.> `[teal]#*_domainEvent_*#` : `Class<? extends ActionDomainEvent<?>>`
 +
 --
-Indicates that an invocation of the action should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) _org.apache.isis.applib.events.domain.ActionDomainEvent_ .
+Indicates that an invocation of the action should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) xref:system:generated:index/applib/events/domain/ActionDomainEvent.adoc[ActionDomainEvent] .
 
 For example:
 
@@ -84,12 +84,12 @@ public class SomeObject{
 
 This subclass must provide a no-arg constructor; the fields are set reflectively.
 --
-<.> `[teal]#*_executionPublishing_*#` : `xref:system:generated:index/applib/annotation/Publishing.adoc[Publishing]`
+<.> `[teal]#*_executionPublishing_*#` : `Publishing`
 +
 --
-Whether _Interaction.Execution_ s (triggered by action invocations), should be published to xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber] s.
+Whether _Interaction.Execution_ s (triggered by action invocations), should be published to _ExecutionSubscriber_ s.
 --
-<.> `[teal]#*_hidden_*#` : `xref:system:generated:index/applib/annotation/Where.adoc[Where]`
+<.> `[teal]#*_hidden_*#` : `Where`
 +
 --
 Indicates where (in the UI) the action is not visible to the user.
@@ -98,14 +98,14 @@ It is also possible to suppress an action's visibility using _ActionLayout#hidde
 
 For _DomainService domain service_ actions, the action's visibility is dependent upon its _DomainService#nature() nature_ and for contributed actions on how it is _ActionLayout#contributed()_ .
 --
-<.> `[teal]#*_restrictTo_*#` : `xref:system:generated:index/applib/annotation/RestrictTo.adoc[RestrictTo]`
+<.> `[teal]#*_restrictTo_*#` : `RestrictTo`
 +
 --
 Whether the action is restricted to prototyping.
 
 By default there are no restrictions, with the action being available in all environments.
 --
-<.> `[teal]#*_semantics_*#` : `xref:system:generated:index/applib/annotation/SemanticsOf.adoc[SemanticsOf]`
+<.> `[teal]#*_semantics_*#` : `SemanticsOf`
 +
 --
 The action semantics, either _SemanticsOf#SAFE_AND_REQUEST_CACHEABLE cached_ , _SemanticsOf#SAFE safe_ (query-only), _SemanticsOf#IDEMPOTENT idempotent_ or _SemanticsOf#NON_IDEMPOTENT non-idempotent_ .
@@ -118,7 +118,7 @@ The type-of the elements returned by the action.
 <.> `[teal]#*_fileAccept_*#` : `String`
 +
 --
-For downloading xref:system:generated:index/applib/value/Blob.adoc[Blob] or xref:system:generated:index/applib/value/Clob.adoc[Clob] , optionally restrict the files accepted (eg `.xslx` ).
+For downloading _Blob_ or _Clob_ , optionally restrict the files accepted (eg `.xslx` ).
 
 The value should be of the form "file_extension|audio/*|video/*|image/*|media_type".
 --
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/ActionLayout.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/ActionLayout.adoc
index 7fe77b5..430605e 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/ActionLayout.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/ActionLayout.adoc
@@ -30,7 +30,7 @@ Layout hints for actions.
 }
 ----
 
-<.> `[teal]#*_bookmarking_*#` : `xref:system:generated:index/applib/annotation/BookmarkPolicy.adoc[BookmarkPolicy]`
+<.> `[teal]#*_bookmarking_*#` : `BookmarkPolicy`
 +
 --
 Whether (and how) this action can be bookmarked in the UI.
@@ -59,7 +59,7 @@ Indicates the position of theFont Awesomeicon. The icon could be rendered on the
 --
 Description of this action, eg to be rendered in a tooltip.
 --
-<.> `[teal]#*_hidden_*#` : `xref:system:generated:index/applib/annotation/Where.adoc[Where]`
+<.> `[teal]#*_hidden_*#` : `Where`
 +
 --
 Indicates where in the UI the action should _not_ not be visible.
@@ -76,12 +76,12 @@ For actions that are associated with a property, indicates the positioning of th
 
 Ignored if the action has not been associated with a property.
 --
-<.> `[teal]#*_promptStyle_*#` : `xref:system:generated:index/applib/annotation/PromptStyle.adoc[PromptStyle]`
+<.> `[teal]#*_promptStyle_*#` : `PromptStyle`
 +
 --
 How this parameters for this action are prompted, either _PromptStyle#DIALOG dialog_ or _PromptStyle#INLINE inline_ .
 --
-<.> `[teal]#*_redirectPolicy_*#` : `xref:system:generated:index/applib/annotation/Redirect.adoc[Redirect]`
+<.> `[teal]#*_redirectPolicy_*#` : `Redirect`
 +
 --
 If the action returns its target, then determines whether to update the page or instead to redirect (forcing a re-rendering of a new page).
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/Collection.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Collection.adoc
index eb8fbca..0ce2a01 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/Collection.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Collection.adoc
@@ -21,7 +21,7 @@ Domain semantics for domain object collection.
 <.> `[teal]#*_domainEvent_*#` : `Class<? extends CollectionDomainEvent<?,?>>`
 +
 --
-Indicates that changes to the collection that should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) _org.apache.isis.applib.events.domain.CollectionDomainEvent_ .
+Indicates that changes to the collection that should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) xref:system:generated:index/applib/events/domain/CollectionDomainEvent.adoc[CollectionDomainEvent] .
 
 For example:
 
@@ -37,14 +37,14 @@ public class Order {
 
 This subclass must provide a no-arg constructor; the fields are set reflectively.
 --
-<.> `[teal]#*_editing_*#` : `xref:system:generated:index/applib/annotation/Editing.adoc[Editing]`
+<.> `[teal]#*_editing_*#` : `Editing`
 +
 --
 Whether the properties of this domain object can be edited, or collections of this object be added to/removed from.
 
 Note that non-editable objects can nevertheless have actions invoked upon them.
 --
-<.> `[teal]#*_hidden_*#` : `xref:system:generated:index/applib/annotation/Where.adoc[Where]`
+<.> `[teal]#*_hidden_*#` : `Where`
 +
 --
 Indicates when the collection is not visible to the user.
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/CollectionLayout.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/CollectionLayout.adoc
index 1d4f098..95aa552 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/CollectionLayout.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/CollectionLayout.adoc
@@ -44,7 +44,7 @@ The only view available within the core framework is "table". However, other vie
 --
 Description of this collection, eg to be rendered in a tooltip.
 --
-<.> `[teal]#*_hidden_*#` : `xref:system:generated:index/applib/annotation/Where.adoc[Where]`
+<.> `[teal]#*_hidden_*#` : `Where`
 +
 --
 Indicates where in the UI the collection should _not_ not be visible.
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/Defaulted.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Defaulted.adoc
index 0905995..74dbda9 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/Defaulted.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Defaulted.adoc
@@ -1,9 +1,11 @@
 = Defaulted : _annotation_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Indicates that the class should have a default, by providing a link to a xref:system:generated:index/applib/adapters/DefaultsProvider.adoc[DefaultsProvider] , or some externally-configured mechanism.
+Indicates that the class should have a default, by providing a link to a _DefaultsProvider_ , or some externally-configured mechanism.
 
-This possibly seems a little tortuous. The more obvious means to provide a default would seem to be a simple `@DefaultsTo(new SomeObject())` . However, Java only allows primitives, strings and class literals to be used in annotations. We therefore need delegate to an external implementation. (This more complex design is also more flexible of course; the implementation of xref:system:generated:index/applib/adapters/DefaultsProvider.adoc[DefaultsProvider] could adjust the default it provid [...]
+This possibly seems a little tortuous. The more obvious means to provide a default would seem to be a simple `@DefaultsTo(new SomeObject())` . However, Java only allows primitives, strings and class literals to be used in annotations. We therefore need delegate to an external implementation. (This more complex design is also more flexible of course; the implementation of _DefaultsProvider_ could adjust the default it provides according to circumstance, for example).
+
+Note: This annotation is only incompletely recognized by the framework, and may be deprecated in the future.
 
 .Java Sources
 [source,java]
@@ -19,7 +21,7 @@ This possibly seems a little tortuous. The more obvious means to provide a defau
 <.> `[teal]#*_defaultsProviderName_*#` : `String`
 +
 --
-The fully qualified name of a class that implements the xref:system:generated:index/applib/adapters/DefaultsProvider.adoc[DefaultsProvider] interface.
+The fully qualified name of a class that implements the _DefaultsProvider_ interface.
 
 This is optional because some implementations may pick up the defaults provider via a configuration file, or via the equivalent _#defaultsProviderClass()_ .
 
@@ -30,6 +32,6 @@ Implementation note: the default value provided here is simply an empty string b
 --
 As per _#defaultsProviderName()_ , but specifying a class literal rather than a fully qualified class name.
 
-Implementation note: the default value provided here is simply the xref:system:generated:index/applib/annotation/Defaulted.adoc[Defaulted] 's own class, because `null` is not a valid default.
+Implementation note: the default value provided here is simply the _Defaulted_ 's own class, because `null` is not a valid default.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/DomainObject.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/DomainObject.adoc
index 30d4d8f..4c0c66a 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/DomainObject.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/DomainObject.adoc
@@ -62,7 +62,7 @@ The method (despite its name, not necessarily an action) to use in order to perf
 
 The method is required to accept a single string parameter, and must return a list of the domain type.
 --
-<.> `[teal]#*_bounding_*#` : `xref:system:generated:index/applib/annotation/Bounding.adoc[Bounding]`
+<.> `[teal]#*_bounding_*#` : `Bounding`
 +
 --
 Indicates that the class has a bounded, or finite, set of instances.
@@ -71,7 +71,7 @@ Takes precedence over auto-complete.
 
 Note: this replaces bounded=true|false prior to v2.x
 --
-<.> `[teal]#*_editing_*#` : `xref:system:generated:index/applib/annotation/Editing.adoc[Editing]`
+<.> `[teal]#*_editing_*#` : `Editing`
 +
 --
 Whether the properties of this domain object can be edited, or collections of this object be added to/removed from.
@@ -83,7 +83,7 @@ Note that non-editable objects can nevertheless have actions invoked upon them.
 --
 If _#editing()_ is set to _Editing#DISABLED_ , then the reason to provide to the user as to why the object's properties cannot be edited/collections modified.
 --
-<.> `[teal]#*_entityChangePublishing_*#` : `xref:system:generated:index/applib/annotation/Publishing.adoc[Publishing]`
+<.> `[teal]#*_entityChangePublishing_*#` : `Publishing`
 +
 --
 Whether entity changes should be published to _org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber_ s and whether entity changes, captured as _org.apache.isis.applib.services.publishing.spi.EntityChanges_ , should be dispatched to _org.apache.isis.applib.services.publishing.spi.EntityChangesSubscriber_ s.
@@ -95,7 +95,7 @@ Equivalent to _Mixin#method()_ .
 
 Applicable only if _#nature()_ is _Nature#MIXIN_ .
 --
-<.> `[teal]#*_nature_*#` : `xref:system:generated:index/applib/annotation/Nature.adoc[Nature]`
+<.> `[teal]#*_nature_*#` : `Nature`
 +
 --
 The nature of this domain object.
@@ -110,56 +110,56 @@ This value, if specified, is used in the serialized form of the object's OID. An
 <.> `[teal]#*_createdLifecycleEvent_*#` : `Class<? extends ObjectCreatedEvent<?>>`
 +
 --
-Indicates that the loading of the domain object should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) _org.apache.isis.applib.events.lifecycle.ObjectCreatedEvent_ .
+Indicates that the loading of the domain object should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) xref:system:generated:index/applib/events/lifecycle/ObjectCreatedEvent.adoc[ObjectCreatedEvent] .
 
 This subclass must provide a no-arg constructor; the fields are set reflectively.
 --
 <.> `[teal]#*_persistingLifecycleEvent_*#` : `Class<? extends ObjectPersistingEvent<?>>`
 +
 --
-Indicates that the loading of the domain object should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) _org.apache.isis.applib.events.lifecycle.ObjectPersistingEvent_ .
+Indicates that the loading of the domain object should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) xref:system:generated:index/applib/events/lifecycle/ObjectPersistingEvent.adoc[ObjectPersistingEvent] .
 
 This subclass must provide a no-arg constructor; the fields are set reflectively.
 --
 <.> `[teal]#*_persistedLifecycleEvent_*#` : `Class<? extends ObjectPersistedEvent<?>>`
 +
 --
-Indicates that the loading of the domain object should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) _org.apache.isis.applib.events.lifecycle.ObjectPersistedEvent_ .
+Indicates that the loading of the domain object should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) xref:system:generated:index/applib/events/lifecycle/ObjectPersistedEvent.adoc[ObjectPersistedEvent] .
 
 This subclass must provide a no-arg constructor; the fields are set reflectively.
 --
 <.> `[teal]#*_loadedLifecycleEvent_*#` : `Class<? extends ObjectLoadedEvent<?>>`
 +
 --
-Indicates that the loading of the domain object should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) _org.apache.isis.applib.events.lifecycle.ObjectLoadedEvent_ .
+Indicates that the loading of the domain object should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) xref:system:generated:index/applib/events/lifecycle/ObjectLoadedEvent.adoc[ObjectLoadedEvent] .
 
 This subclass must provide a no-arg constructor; the fields are set reflectively.
 --
 <.> `[teal]#*_updatingLifecycleEvent_*#` : `Class<? extends ObjectUpdatingEvent<?>>`
 +
 --
-Indicates that the loading of the domain object should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) _org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent_ .
+Indicates that the loading of the domain object should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) xref:system:generated:index/applib/events/lifecycle/ObjectUpdatingEvent.adoc[ObjectUpdatingEvent] .
 
 This subclass must provide a no-arg constructor; the fields are set reflectively.
 --
 <.> `[teal]#*_updatedLifecycleEvent_*#` : `Class<? extends ObjectUpdatedEvent<?>>`
 +
 --
-Indicates that the loading of the domain object should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) _org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent_ .
+Indicates that the loading of the domain object should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) xref:system:generated:index/applib/events/lifecycle/ObjectUpdatedEvent.adoc[ObjectUpdatedEvent] .
 
 This subclass must provide a no-arg constructor; the fields are set reflectively.
 --
 <.> `[teal]#*_removingLifecycleEvent_*#` : `Class<? extends ObjectRemovingEvent<?>>`
 +
 --
-Indicates that the loading of the domain object should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) _org.apache.isis.applib.events.lifecycle.ObjectRemovingEvent_ .
+Indicates that the loading of the domain object should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) xref:system:generated:index/applib/events/lifecycle/ObjectRemovingEvent.adoc[ObjectRemovingEvent] .
 
 This subclass must provide a no-arg constructor; the fields are set reflectively.
 --
 <.> `[teal]#*_actionDomainEvent_*#` : `Class<? extends ActionDomainEvent<?>>`
 +
 --
-Indicates that an invocation of _any_ action of the domain object (that do not themselves specify their own `@Action(domainEvent=...)` should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using the specified custom (subclass of) xref:system:generated:index/applib/events/domain/ActionDomainEvent.adoc[ActionDomainEvent] .
+Indicates that an invocation of _any_ action of the domain object (that do not themselves specify their own `@Action(domainEvent=...)` should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using the specified custom (subclass of) _ActionDomainEvent_ .
 
 For example:
 
@@ -181,7 +181,7 @@ This subclass must provide a no-arg constructor; the fields are set reflectively
 <.> `[teal]#*_propertyDomainEvent_*#` : `Class<? extends PropertyDomainEvent<?,?>>`
 +
 --
-Indicates that changes to _any_ property of the domain object (that do not themselves specify their own `@Property(domainEvent=...)` should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using the specified custom (subclass of) xref:system:generated:index/applib/events/domain/PropertyDomainEvent.adoc[PropertyDomainEvent] .
+Indicates that changes to _any_ property of the domain object (that do not themselves specify their own `@Property(domainEvent=...)` should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using the specified custom (subclass of) _PropertyDomainEvent_ .
 
 For example:
 
@@ -199,7 +199,7 @@ This subclass must provide a no-arg constructor; the fields are set reflectively
 <.> `[teal]#*_collectionDomainEvent_*#` : `Class<? extends CollectionDomainEvent<?,?>>`
 +
 --
-Indicates that changes to _any_ collection of the domain object (that do not themselves specify their own `@Collection(domainEvent=...)` should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) xref:system:generated:index/applib/events/domain/CollectionDomainEvent.adoc[CollectionDomainEvent] .
+Indicates that changes to _any_ collection of the domain object (that do not themselves specify their own `@Collection(domainEvent=...)` should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) _CollectionDomainEvent_ .
 
 For example:
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/DomainObjectLayout.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/DomainObjectLayout.adoc
index 9f306e8..38b5492 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/DomainObjectLayout.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/DomainObjectLayout.adoc
@@ -34,7 +34,7 @@ Layout hints for domain objects.
 }
 ----
 
-<.> `[teal]#*_bookmarking_*#` : `xref:system:generated:index/applib/annotation/BookmarkPolicy.adoc[BookmarkPolicy]`
+<.> `[teal]#*_bookmarking_*#` : `BookmarkPolicy`
 +
 --
 Whether (and how) this domain object can be bookmarked in the UI.
@@ -83,7 +83,7 @@ The plural name of the class.
 <.> `[teal]#*_cssClassUiEvent_*#` : `Class<? extends CssClassUiEvent<?>>`
 +
 --
-Which subclass of xref:system:generated:index/applib/events/ui/CssClassUiEvent.adoc[CssClassUiEvent] should be used to obtain a CSS class.
+Which subclass of _CssClassUiEvent_ should be used to obtain a CSS class.
 
 This subclass must provide a no-arg constructor; the fields are set reflectively.
 --
@@ -97,14 +97,14 @@ This subclass must provide a no-arg constructor; the fields are set reflectively
 <.> `[teal]#*_layoutUiEvent_*#` : `Class<? extends LayoutUiEvent<?>>`
 +
 --
-Which subclass of xref:system:generated:index/applib/events/ui/LayoutUiEvent.adoc[LayoutUiEvent] should be used to obtain a layout.
+Which subclass of _LayoutUiEvent_ should be used to obtain a layout.
 
 This subclass must provide a no-arg constructor; the fields are set reflectively.
 --
 <.> `[teal]#*_titleUiEvent_*#` : `Class<? extends TitleUiEvent<?>>`
 +
 --
-Which subclass of xref:system:generated:index/applib/events/ui/TitleUiEvent.adoc[TitleUiEvent] should be used to obtain a title.
+Which subclass of _TitleUiEvent_ should be used to obtain a title.
 
 This subclass must provide a no-arg constructor; the fields are set reflectively.
 --
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/DomainService.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/DomainService.adoc
index 2c37316..25e4792 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/DomainService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/DomainService.adoc
@@ -16,7 +16,7 @@ Also indicates whether the domain service acts as a repository for an entity, an
 }
 ----
 
-<.> `[teal]#*_nature_*#` : `xref:system:generated:index/applib/annotation/NatureOfService.adoc[NatureOfService]`
+<.> `[teal]#*_nature_*#` : `NatureOfService`
 +
 --
 The nature of this service, eg for menus, contributed actions, repository.
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/Nature.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Nature.adoc
index 1f323b4..9109747 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/Nature.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Nature.adoc
@@ -27,7 +27,7 @@ enum Nature {
 <.> `[teal]#*_NOT_SPECIFIED_*#`
 +
 --
-The default; allows the programmer to combine `@DomainObject` annotation with the xref:system:generated:index/applib/ViewModel.adoc[ViewModel] annotation, or the _XmlRootElement_ annotation, or by implementing the _org.apache.isis.applib.ViewModel_ interface.
+The default; allows the programmer to combine `@DomainObject` annotation with the _ViewModel_ annotation, or the _XmlRootElement_ annotation, or by implementing the xref:system:generated:index/applib/ViewModel.adoc[ViewModel] interface.
 --
 <.> `[teal]#*_ENTITY_*#`
 +
@@ -43,7 +43,7 @@ Currently implies no additional semantics other than documentation.
 --
 An object that is conceptually part of the application layer, and which surfaces behavior and/or state that is aggregate of one or more domain entity.
 
-The identity of a view model is determined solely by the state of object's properties (that have not been set to be ignored using _org.apache.isis.applib.annotation.Property#notPersisted()_ ). Using this nature should be considered exactly equivalent to annotating with xref:system:generated:index/applib/ViewModel.adoc[ViewModel] .
+The identity of a view model is determined solely by the state of object's properties (that have not been set to be ignored using _org.apache.isis.applib.annotation.Property#notPersisted()_ ). Using this nature should be considered exactly equivalent to annotating with _ViewModel_ .
 
 Note that collections are ignored; if their state is required to fully identify the view model, define the view model using the JAXB _XmlRootElement_ annotation instead (where the object's state is serialized to an arbitrarily deep graph of data, with references to persistent entities transparently resolved to<oid-dto>elements).
 --
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/Parameter.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Parameter.adoc
index fe98ee4..ce6b331 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/Parameter.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Parameter.adoc
@@ -27,7 +27,7 @@ Domain semantics for domain object collection.
 <.> `[teal]#*_fileAccept_*#` : `String`
 +
 --
-For uploading xref:system:generated:index/applib/value/Blob.adoc[Blob] or xref:system:generated:index/applib/value/Clob.adoc[Clob] , optionally restrict the files accepted (eg `.xslx` ).
+For uploading _Blob_ or _Clob_ , optionally restrict the files accepted (eg `.xslx` ).
 
 The value should be of the form "file_extension|audio/*|video/*|image/*|media_type".
 --
@@ -41,11 +41,11 @@ The default value (-1) indicates that no maxLength has been specified.
 <.> `[teal]#*_mustSatisfy_*#` : `Class<? extends Specification>[]`
 +
 --
-The _org.apache.isis.applib.spec.Specification_ (s) to be satisfied by this parameter.
+The xref:system:generated:index/applib/spec/Specification.adoc[Specification] (s) to be satisfied by this parameter.
 
 If more than one is provided, then all must be satisfied (in effect "AND"ed together).
 --
-<.> `[teal]#*_optionality_*#` : `xref:system:generated:index/applib/annotation/Optionality.adoc[Optionality]`
+<.> `[teal]#*_optionality_*#` : `Optionality`
 +
 --
 Whether this parameter is optional or is mandatory (ie required).
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/ParameterLayout.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/ParameterLayout.adoc
index 00c62b6..5be72f9 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/ParameterLayout.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/ParameterLayout.adoc
@@ -36,7 +36,7 @@ Indicates the css class that a parameter should have.
 --
 Description of this property, eg to be rendered in a tooltip.
 --
-<.> `[teal]#*_labelPosition_*#` : `xref:system:generated:index/applib/annotation/LabelPosition.adoc[LabelPosition]`
+<.> `[teal]#*_labelPosition_*#` : `LabelPosition`
 +
 --
 In forms, positioning of the label (left, top or none) relative to the parameter value.
@@ -58,7 +58,7 @@ A flag indicating whether the value of _#named()_ should be HTML escaped or not.
 --
 For string parameters (and properties), whether to render as a text area over multiple lines.
 --
-<.> `[teal]#*_renderDay_*#` : `xref:system:generated:index/applib/annotation/RenderDay.adoc[RenderDay]`
+<.> `[teal]#*_renderDay_*#` : `RenderDay`
 +
 --
 For date parameters (and properties) only, instructs the viewer that the date should be rendered as one day prior to the actually stored date.
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/Property.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Property.adoc
index b665998..6665d1b 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/Property.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Property.adoc
@@ -45,19 +45,19 @@ Domain semantics for domain object property.
 <.> `[teal]#*_commandDtoProcessor_*#` : `Class<? extends CommandDtoProcessor>`
 +
 --
-The xref:system:generated:index/applib/services/commanddto/processor/CommandDtoProcessor.adoc[CommandDtoProcessor] to process this command's DTO.
+The _CommandDtoProcessor_ to process this command's DTO.
 
-The processor itself is used by xref:system:generated:index/applib/services/commanddto/conmap/ContentMappingServiceForCommandDto.adoc[ContentMappingServiceForCommandDto] and xref:system:generated:index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc[ContentMappingServiceForCommandsDto] to dynamically transform the DTOs.
+The processor itself is used by _ContentMappingServiceForCommandDto_ and _ContentMappingServiceForCommandsDto_ to dynamically transform the DTOs.
 --
-<.> `[teal]#*_commandPublishing_*#` : `xref:system:generated:index/applib/annotation/Publishing.adoc[Publishing]`
+<.> `[teal]#*_commandPublishing_*#` : `Publishing`
 +
 --
-Whether property edits, captured as xref:system:generated:index/applib/services/command/Command.adoc[Command] s, should be published to xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber] s.
+Whether property edits, captured as _Command_ s, should be published to _CommandSubscriber_ s.
 --
 <.> `[teal]#*_domainEvent_*#` : `Class<? extends PropertyDomainEvent<?,?>>`
 +
 --
-Indicates that changes to the property that should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) _org.apache.isis.applib.events.domain.PropertyDomainEvent_ .
+Indicates that changes to the property that should be posted to the _org.apache.isis.applib.services.eventbus.EventBusService event bus_ using a custom (subclass of) xref:system:generated:index/applib/events/domain/PropertyDomainEvent.adoc[PropertyDomainEvent] .
 
 For example:
 
@@ -71,7 +71,7 @@ public LocalDate getStartDate() { ...}
 
 This subclass must provide a no-arg constructor; the fields are set reflectively.
 --
-<.> `[teal]#*_editing_*#` : `xref:system:generated:index/applib/annotation/Editing.adoc[Editing]`
+<.> `[teal]#*_editing_*#` : `Editing`
 +
 --
 Whether the properties of this domain object can be edited, or collections of this object be added to/removed from.
@@ -83,19 +83,19 @@ Note that non-editable objects can nevertheless have actions invoked upon them.
 --
 If _#editing()_ is set to _Editing#DISABLED_ , then the reason to provide to the user as to why this property cannot be edited.
 --
-<.> `[teal]#*_executionPublishing_*#` : `xref:system:generated:index/applib/annotation/Publishing.adoc[Publishing]`
+<.> `[teal]#*_executionPublishing_*#` : `Publishing`
 +
 --
-Whether _Interaction.Execution_ s (triggered property edits), should be dispatched to xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber] s.
+Whether _Interaction.Execution_ s (triggered property edits), should be dispatched to _ExecutionSubscriber_ s.
 --
 <.> `[teal]#*_fileAccept_*#` : `String`
 +
 --
-For uploading xref:system:generated:index/applib/value/Blob.adoc[Blob] or xref:system:generated:index/applib/value/Clob.adoc[Clob] , optionally restrict the files accepted (eg `.xslx` ).
+For uploading _Blob_ or _Clob_ , optionally restrict the files accepted (eg `.xslx` ).
 
 The value should be of the form "file_extension|audio/*|video/*|image/*|media_type".
 --
-<.> `[teal]#*_hidden_*#` : `xref:system:generated:index/applib/annotation/Where.adoc[Where]`
+<.> `[teal]#*_hidden_*#` : `Where`
 +
 --
 Indicates where the property is not visible to the user.
@@ -107,7 +107,7 @@ The maximum entry length of a field.
 
 The default value (-1) indicates that no maxLength has been specified.
 --
-<.> `[teal]#*_snapshot_*#` : `xref:system:generated:index/applib/annotation/Snapshot.adoc[Snapshot]`
+<.> `[teal]#*_snapshot_*#` : `Snapshot`
 +
 --
 Indicates whether the property should be included or excluded from mementos.
@@ -117,18 +117,18 @@ To ensure that the property is actually not persisted in the objectstore, also a
 <.> `[teal]#*_mustSatisfy_*#` : `Class<? extends Specification>[]`
 +
 --
-The _org.apache.isis.applib.spec.Specification_ (s) to be satisfied by this property.
+The xref:system:generated:index/applib/spec/Specification.adoc[Specification] (s) to be satisfied by this property.
 
 If more than one is provided, then all must be satisfied (in effect "AND"ed together).
 --
-<.> `[teal]#*_optionality_*#` : `xref:system:generated:index/applib/annotation/Optionality.adoc[Optionality]`
+<.> `[teal]#*_optionality_*#` : `Optionality`
 +
 --
 Whether this property is optional or is mandatory (ie required).
 
 For properties the default value, _org.apache.isis.applib.annotation.Optionality#DEFAULT_ , usually means that the property is required unless it has been overridden byjavax.jdo.annotations.Columnwith itsjavax.jdo.annotations.Column#allowsNull()attribute set to true.
 --
-<.> `[teal]#*_projecting_*#` : `xref:system:generated:index/applib/annotation/Projecting.adoc[Projecting]`
+<.> `[teal]#*_projecting_*#` : `Projecting`
 +
 --
 If set to _Projecting#PROJECTED projected_ , then indicates that the owner of this property is a view model which is a projection of some other entity, and that the property holds a reference to that "underlying".
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/PropertyLayout.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/PropertyLayout.adoc
index efca208..59f0d41 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/PropertyLayout.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/PropertyLayout.adoc
@@ -44,12 +44,12 @@ Indicates the css class that a property should have.
 --
 Description of this property, eg to be rendered in a tooltip.
 --
-<.> `[teal]#*_hidden_*#` : `xref:system:generated:index/applib/annotation/Where.adoc[Where]`
+<.> `[teal]#*_hidden_*#` : `Where`
 +
 --
 Indicates where in the UI the property should _not_ not be visible.
 --
-<.> `[teal]#*_labelPosition_*#` : `xref:system:generated:index/applib/annotation/LabelPosition.adoc[LabelPosition]`
+<.> `[teal]#*_labelPosition_*#` : `LabelPosition`
 +
 --
 In forms, positioning of the label (left, top or none) relative to the property value.
@@ -71,19 +71,19 @@ Name of this property (overriding the name derived from its name in code).
 --
 A flag indicating whether the value of _#named()_ should be HTML escaped or not.
 --
-<.> `[teal]#*_navigable_*#` : `xref:system:generated:index/applib/annotation/Navigable.adoc[Navigable]`
+<.> `[teal]#*_navigable_*#` : `Navigable`
 +
 --
 Whether this property should be used to construct the navigable chain of breadcrumbs in the UI.
 
 Only one property can be annotated as such per domain class.
 --
-<.> `[teal]#*_promptStyle_*#` : `xref:system:generated:index/applib/annotation/PromptStyle.adoc[PromptStyle]`
+<.> `[teal]#*_promptStyle_*#` : `PromptStyle`
 +
 --
 How the properties of this domain object are be edited, either _PromptStyle#DIALOG dialog_ or _PromptStyle#INLINE inline_ .
 --
-<.> `[teal]#*_renderDay_*#` : `xref:system:generated:index/applib/annotation/RenderDay.adoc[RenderDay]`
+<.> `[teal]#*_renderDay_*#` : `RenderDay`
 +
 --
 For date properties (and parameters) only, instructs the viewer that the date should be rendered as one day prior to the actually stored date.
@@ -102,7 +102,7 @@ public LocalDate getEndDate() { ... }
 
 Here, the interval of the [1-may-2013,1-jun-2013) would be rendered as the dates 1-may-2013 for the start date but using 31-may-2013 (the day before) for the end date. What is stored In the domain object, itself, however, the value stored is 1-jun-2013.
 --
-<.> `[teal]#*_repainting_*#` : `xref:system:generated:index/applib/annotation/Repainting.adoc[Repainting]`
+<.> `[teal]#*_repainting_*#` : `Repainting`
 +
 --
 Indicates that the value held by the property never changes over time, even when other properties of the object do change.
@@ -111,7 +111,7 @@ Setting this attribute to `RepaintPolicy.NO_REPAINT` is used as a hint to the vi
 
 Note that for this to work, the viewer will also ensure that none of the property's parent component (such as a tab group panel) are re-rendered.
 
-Design note: we considered implementing this an "immutable" flag on the xref:system:generated:index/applib/annotation/Property.adoc[Property] annotation (because this flag is typically appropriate for immutable/unchanging properties of a domain object). However, we decided not to do that, on the basis that it might be interpreted as having a deeper impact within the framework than simply a hint for rendering.
+Design note: we considered implementing this an "immutable" flag on the _Property_ annotation (because this flag is typically appropriate for immutable/unchanging properties of a domain object). However, we decided not to do that, on the basis that it might be interpreted as having a deeper impact within the framework than simply a hint for rendering.
 --
 <.> `[teal]#*_typicalLength_*#` : `int`
 +
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/Publishing.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Publishing.adoc
index 4c1a189..706f12e 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/Publishing.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Publishing.adoc
@@ -3,16 +3,16 @@
 
 The available policies as to whether data should be published to corresponding subscribers. The framework supports several kinds of data that are available for publishing:
 
-* *xref:system:generated:index/applib/services/publishing/spi/EntityChanges.adoc[EntityChanges] ... subscribed to via xref:system:generated:index/applib/services/publishing/spi/EntityChangesSubscriber.adoc[EntityChangesSubscriber]*
+* *_EntityChanges_ ... subscribed to via _EntityChangesSubscriber_*
 
  *
-* *xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChange.adoc[EntityPropertyChange] ... subscribed to via xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber]*
+* *_EntityPropertyChange_ ... subscribed to via _EntityPropertyChangeSubscriber_*
 
  *
-* *xref:system:generated:index/applib/services/command/Command.adoc[Command] ... subscribed to via xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber]*
+* *_Command_ ... subscribed to via _CommandSubscriber_*
 
  *
-* *_Interaction.Execution_ ... subscribed to via xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber]*
+* *_Interaction.Execution_ ... subscribed to via _ExecutionSubscriber_*
 
  ** * * * 
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/Title.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Title.adoc
index 64b286a..a722eda 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/Title.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Title.adoc
@@ -21,7 +21,7 @@ A title annotation used to annotate methods used to construct the title of a dom
 <.> `[teal]#*_sequence_*#` : `String`
 +
 --
-The order (in Dewey decimal notation) that the property annotated with xref:system:generated:index/applib/annotation/Title.adoc[Title] appears with respect to other properties also annotated with xref:system:generated:index/applib/annotation/Title.adoc[Title] .
+The order (in Dewey decimal notation) that the property annotated with _Title_ appears with respect to other properties also annotated with _Title_ .
 --
 <.> `[teal]#*_prepend_*#` : `String`
 +
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/Value.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Value.adoc
index dd4f605..49e494d 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/Value.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Value.adoc
@@ -8,10 +8,10 @@ By "value semantics" all we actually mean that the class is aggregated (or embed
 * it may be parseable
 * it may be encodeable
 * it may be immutable, and by default is presumed that it is
-* it may follow the equal-by-content contract (as per xref:system:generated:index/applib/annotation/EqualByContent.adoc[EqualByContent] ), and by default is presumed that it does.
+* it may follow the equal-by-content contract (as per _EqualByContent_ ), and by default is presumed that it does.
 +
 --
-Note also that though a value is conceptually not shared, if it is also immutable then it is in fact safe to share objects (as in the flyweight pattern). In addition, the xref:system:generated:index/applib/annotation/EqualByContent.adoc[EqualByContent] semantic means that we needn't care whether value types are being shared or not.
+Note also that though a value is conceptually not shared, if it is also immutable then it is in fact safe to share objects (as in the flyweight pattern). In addition, the _EqualByContent_ semantic means that we needn't care whether value types are being shared or not.
 --
 
 .Java Sources
@@ -28,11 +28,11 @@ Note also that though a value is conceptually not shared, if it is also immutabl
 <.> `[teal]#*_semanticsProviderName_*#` : `String`
 +
 --
-The fully qualified name of a class that implements the xref:system:generated:index/applib/adapters/ValueSemanticsProvider.adoc[ValueSemanticsProvider] interface.
+The fully qualified name of a class that implements the _ValueSemanticsProvider_ interface.
 
 This is optional because some implementations may pick up encodeability via a configuration file, or via the equivalent _#semanticsProviderClass()_ .
 
-It is possible for value classes to act as their own semantics providers, and may in particular implement the xref:system:generated:index/applib/adapters/EncoderDecoder.adoc[EncoderDecoder] interface. The framework requires that the nominated class provides a `public` no-arg constructor on the class, and will instantiates an instance of the class to interact with it. In the case of encoding, the framework uses the result of discards the instantiated object. What that means in particular  [...]
+It is possible for value classes to act as their own semantics providers, and may in particular implement the _EncoderDecoder_ interface. The framework requires that the nominated class provides a `public` no-arg constructor on the class, and will instantiates an instance of the class to interact with it. In the case of encoding, the framework uses the result of discards the instantiated object. What that means in particular is that a self-encoding class shouldn't encode its own state, i [...]
 
 Implementation note: the default value provided here is simply an empty string because `null` is not a valid default.
 --
@@ -41,6 +41,6 @@ Implementation note: the default value provided here is simply an empty string b
 --
 As per _#semanticsProviderName()_ , but specifying a class literal rather than a fully qualified class name.
 
-Implementation note: the default value provided here is simply the xref:system:generated:index/applib/annotation/Value.adoc[Value] 's own class, because `null` is not a valid default.
+Implementation note: the default value provided here is simply the _Value_ 's own class, because `null` is not a valid default.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/Where.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/Where.adoc
index 56240cf..d7f5d5a 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/Where.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/Where.adoc
@@ -112,7 +112,7 @@ For example, if a property is annotated with `@Title` , then normally this shoul
 --
 Acts as the default no-op value for _PropertyLayout#hidden()_ , _CollectionLayout#hidden()_ and _ActionLayout#hidden()_ .
 --
-<.> `[teal]#*includes*#(xref:system:generated:index/applib/annotation/Where.adoc[Where] context)` : `boolean`
+<.> `[teal]#*includes*#(Where context)` : `boolean`
 +
 --
 Whether this `Where` is a superset of the context `Where` provided.
diff --git a/antora/components/system/modules/generated/pages/index/applib/client/RepresentationTypeSimplifiedV2.adoc b/antora/components/system/modules/generated/pages/index/applib/client/RepresentationTypeSimplifiedV2.adoc
new file mode 100644
index 0000000..dc19908
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/client/RepresentationTypeSimplifiedV2.adoc
@@ -0,0 +1,74 @@
+= RepresentationTypeSimplifiedV2 : _enum_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+.Java Sources
+[source,java]
+----
+enum RepresentationTypeSimplifiedV2 {
+
+  OBJECT // <.>
+
+  OBJECT_COLLECTION // <.>
+
+  LIST // <.>
+
+  VALUE // <.>
+
+  VALUES // <.>
+
+  VOID // <.>
+
+  @Getter
+final String typeLiteral;
+
+  boolean isObject()
+
+  boolean isObjectCollection()
+
+  boolean isList()
+
+  boolean isValue()
+
+  boolean isValues()
+
+  boolean isVoid()
+
+  String getContentTypeHeaderValue(final String profileName)
+
+  Optional<RepresentationTypeSimplifiedV2> parse(final String typeLiteral)
+
+  Optional<RepresentationTypeSimplifiedV2> parseContentTypeHeaderString(final String contentTypeHeaderString)
+}
+----
+
+<.> `[teal]#*_OBJECT_*#`
++
+--
+The media type used as content-Type header when a domain object is rendered.
+--
+<.> `[teal]#*_OBJECT_COLLECTION_*#`
++
+--
+The media type used as content-Type header when a parented collection is rendered.
+--
+<.> `[teal]#*_LIST_*#`
++
+--
+The media type used as content-Type header when a standalone collection is rendered.
+--
+<.> `[teal]#*_VALUE_*#`
++
+--
+The media type used as content-Type header when a single (nullable) value is rendered.
+--
+<.> `[teal]#*_VALUES_*#`
++
+--
+The media type used as content-Type header when a list of values is rendered.
+--
+<.> `[teal]#*_VOID_*#`
++
+--
+The media type used as content-Type header when a void action result is rendered.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/clock/VirtualClock.adoc b/antora/components/system/modules/generated/pages/index/applib/clock/VirtualClock.adoc
index 1bc57a2..785ee7d 100644
--- a/antora/components/system/modules/generated/pages/index/applib/clock/VirtualClock.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/clock/VirtualClock.adoc
@@ -1,7 +1,7 @@
 = VirtualClock : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Works in connection with _InteractionFactory_ , such that it allows an xref:system:generated:index/applib/services/iactn/Interaction.adoc[Interaction] to run with its own simulated (or actual) time.
+Works in connection with _InteractionFactory_ , such that it allows an _Interaction_ to run with its own simulated (or actual) time.
 
 Relates to _VirtualContext_
 
@@ -45,22 +45,22 @@ interface VirtualClock {
 --
 Returns the (virtual) time as an _Instant_ .
 --
-<.> `[teal]#*_system_*#()` : `xref:system:generated:index/applib/clock/VirtualClock.adoc[VirtualClock]`
+<.> `[teal]#*_system_*#()` : `VirtualClock`
 +
 --
 Returns a the system's default ticking clock.
 --
-<.> `[teal]#*_nowAt_*#(Instant virtualNow)` : `xref:system:generated:index/applib/clock/VirtualClock.adoc[VirtualClock]`
+<.> `[teal]#*_nowAt_*#(Instant virtualNow)` : `VirtualClock`
 +
 --
 Returns a ticking clock set to virtual time _Instant_ _virtualNow_
 --
-<.> `[teal]#*_frozenAt_*#(Instant frozenAt)` : `xref:system:generated:index/applib/clock/VirtualClock.adoc[VirtualClock]`
+<.> `[teal]#*_frozenAt_*#(Instant frozenAt)` : `VirtualClock`
 +
 --
 Always returns the time _Instant_ as given by _frozenAt_
 --
-<.> `[teal]#*_frozenTestClock_*#()` : `xref:system:generated:index/applib/clock/VirtualClock.adoc[VirtualClock]`
+<.> `[teal]#*_frozenTestClock_*#()` : `VirtualClock`
 +
 --
 Always returns the time _Instant_ 2003/8/17 21:30:25 (UTC)
diff --git a/antora/components/system/modules/generated/pages/index/applib/domain/DomainObjectList.adoc b/antora/components/system/modules/generated/pages/index/applib/domain/DomainObjectList.adoc
index 7d8acc2..a089d66 100644
--- a/antora/components/system/modules/generated/pages/index/applib/domain/DomainObjectList.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/domain/DomainObjectList.adoc
@@ -1,11 +1,11 @@
 = DomainObjectList : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-The initial idea of xref:system:generated:index/applib/domain/DomainObjectList.adoc[DomainObjectList] was to simplify restful clients.
+The initial idea of _DomainObjectList_ was to simplify restful clients.
 
 In the original Restful Objects specification, invoking an action that returned a list meant that the RO client needed to handle this collection, which didn't have any identity. That made for special case logic in the client.
 
-Instead, if the RO client invokes the action but uses the _Accept Header_ to request an object, then the RO viewer would automatically wrap the returned list in this xref:system:generated:index/applib/domain/DomainObjectList.adoc[DomainObjectList] view model.
+Instead, if the RO client invokes the action but uses the _Accept Header_ to request an object, then the RO viewer would automatically wrap the returned list in this _DomainObjectList_ view model.
 
 Thus, the RO client then only ever needs to know how to render an object, in all cases.
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/events/domain/AbstractDomainEvent.adoc b/antora/components/system/modules/generated/pages/index/applib/events/domain/AbstractDomainEvent.adoc
index 4d8f4e1..2a01e63 100644
--- a/antora/components/system/modules/generated/pages/index/applib/events/domain/AbstractDomainEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/events/domain/AbstractDomainEvent.adoc
@@ -49,7 +49,7 @@ class AbstractDomainEvent {
 --
 If used then the framework will set state via (non-API) setters.
 
-Because the xref:system:generated:index/applib/events/EventObjectBase.adoc[EventObjectBase] superclass prohibits a null source, a dummy value is temporarily used.
+Because the _EventObjectBase_ superclass prohibits a null source, a dummy value is temporarily used.
 --
 <.> `[teal]#*setMixedIn*#(Object mixedIn)` : `void`
 +
@@ -66,16 +66,16 @@ The subject of the event, which will be either the _#getSource() source_ for a r
 --
 Not API, set by the framework.
 --
-<.> `[teal]#*setIdentifier*#(xref:system:generated:index/applib/Identifier.adoc[Identifier] identifier)` : `void`
+<.> `[teal]#*setIdentifier*#(Identifier identifier)` : `void`
 +
 --
 Not API, set by the framework if the no-arg constructor is used.
 --
 <.> `[teal]#*hide*#()` : `void`
 <.> `[teal]#*disable*#(String reason)` : `void`
-<.> `[teal]#*disable*#(xref:system:generated:index/applib/services/i18n/TranslatableString.adoc[TranslatableString] reason)` : `void`
+<.> `[teal]#*disable*#(TranslatableString reason)` : `void`
 <.> `[teal]#*invalidate*#(String reason)` : `void`
-<.> `[teal]#*invalidate*#(xref:system:generated:index/applib/services/i18n/TranslatableString.adoc[TranslatableString] reason)` : `void`
+<.> `[teal]#*invalidate*#(TranslatableString reason)` : `void`
 <.> `[teal]#*veto*#(String reason, Object... args)` : `void`
 +
 --
@@ -83,7 +83,7 @@ Use instead of _#hide()_ , _#disable(String)_ and _#invalidate(String)_ ; just d
 
 If hiding, just pass `null` for the parameter.
 --
-<.> `[teal]#*veto*#(xref:system:generated:index/applib/services/i18n/TranslatableString.adoc[TranslatableString] translatableReason)` : `void`
+<.> `[teal]#*veto*#(TranslatableString translatableReason)` : `void`
 +
 --
 Use instead of _#hide()_ , _#disable(org.apache.isis.applib.services.i18n.TranslatableString)_ and _#invalidate(org.apache.isis.applib.services.i18n.TranslatableString)_ ; just delegates to appropriate vetoing method based upon the _#getEventPhase() phase_ .
diff --git a/antora/components/system/modules/generated/pages/index/applib/events/domain/ActionDomainEvent.adoc b/antora/components/system/modules/generated/pages/index/applib/events/domain/ActionDomainEvent.adoc
index 195b1f9..9d17cd9 100644
--- a/antora/components/system/modules/generated/pages/index/applib/events/domain/ActionDomainEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/events/domain/ActionDomainEvent.adoc
@@ -34,7 +34,7 @@ Recommended because it reduces the amount of boilerplate in the domain object cl
 --
 Set by the framework. Event subscribers can replace the value with some other value if they wish, though only in the _Phase#EXECUTED_ phase.
 --
-<.> `[teal]#*setSemantics*#(xref:system:generated:index/applib/annotation/SemanticsOf.adoc[SemanticsOf] semantics)` : `void`
+<.> `[teal]#*setSemantics*#(SemanticsOf semantics)` : `void`
 +
 --
 Not API - set by the framework.
diff --git a/antora/components/system/modules/generated/pages/index/applib/events/ui/TitleUiEvent.adoc b/antora/components/system/modules/generated/pages/index/applib/events/ui/IconUiEvent.adoc
similarity index 61%
copy from antora/components/system/modules/generated/pages/index/applib/events/ui/TitleUiEvent.adoc
copy to antora/components/system/modules/generated/pages/index/applib/events/ui/IconUiEvent.adoc
index d01c31e..a5e7d2c 100644
--- a/antora/components/system/modules/generated/pages/index/applib/events/ui/TitleUiEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/events/ui/IconUiEvent.adoc
@@ -1,38 +1,38 @@
-= TitleUiEvent : _class_
+= IconUiEvent : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Emitted for subscribers to obtain a cssClass hint (equivalent to the `title()` supporting method).
+Emitted for subscribers to obtain a cssClass hint (equivalent to the `iconName()` supporting method).
 
 .Java Sources
 [source,java]
 ----
-class TitleUiEvent {
+class IconUiEvent {
 
-  TitleUiEvent() // <.>
+  IconUiEvent() // <.>
 
-  TitleUiEvent(final S source)
+  IconUiEvent(final S source)
 
-  void setTitle(final String title) // <.>
+  String getIconName() // <.>
 
-  void setTranslatableTitle(final TranslatableString translatableTitle) // <.>
+  void setIconName(final String iconName) // <.>
 }
 ----
 
-<.> `[teal]#*TitleUiEvent*#()`
+<.> `[teal]#*IconUiEvent*#()`
 +
 --
 If used then the framework will set state via (non-API) setters.
 
 Because the _EventObject_ superclass prohibits a null source, a dummy value is temporarily used.
 --
-<.> `[teal]#*setTitle*#(String title)` : `void`
+<.> `[teal]#*getIconName*#()` : `String`
 +
 --
-For subscribers to call to provide a (non-translated) title for this object.
+The icon name as provided by a subscriber using _#setIconName(String)_ .
 --
-<.> `[teal]#*setTranslatableTitle*#(xref:system:generated:index/applib/services/i18n/TranslatableString.adoc[TranslatableString] translatableTitle)` : `void`
+<.> `[teal]#*setIconName*#(String iconName)` : `void`
 +
 --
-For subscribers to call to provide a translatable (i18n) title for this object.
+For subscribers to call to provide an icon name for this object.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/events/ui/TitleUiEvent.adoc b/antora/components/system/modules/generated/pages/index/applib/events/ui/TitleUiEvent.adoc
index d01c31e..baffed0 100644
--- a/antora/components/system/modules/generated/pages/index/applib/events/ui/TitleUiEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/events/ui/TitleUiEvent.adoc
@@ -30,7 +30,7 @@ Because the _EventObject_ superclass prohibits a null source, a dummy value is t
 --
 For subscribers to call to provide a (non-translated) title for this object.
 --
-<.> `[teal]#*setTranslatableTitle*#(xref:system:generated:index/applib/services/i18n/TranslatableString.adoc[TranslatableString] translatableTitle)` : `void`
+<.> `[teal]#*setTranslatableTitle*#(TranslatableString translatableTitle)` : `void`
 +
 --
 For subscribers to call to provide a translatable (i18n) title for this object.
diff --git a/antora/components/system/modules/generated/pages/index/applib/exceptions/TranslatableException.adoc b/antora/components/system/modules/generated/pages/index/applib/exceptions/TranslatableException.adoc
index 82d5bd1..d071dbd 100644
--- a/antora/components/system/modules/generated/pages/index/applib/exceptions/TranslatableException.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/exceptions/TranslatableException.adoc
@@ -16,12 +16,12 @@ interface TranslatableException {
 }
 ----
 
-<.> `[teal]#*getTranslatableMessage*#()` : `xref:system:generated:index/applib/services/i18n/TranslatableString.adoc[TranslatableString]`
+<.> `[teal]#*getTranslatableMessage*#()` : `TranslatableString`
 +
 --
-In the spirit of _Exception#getLocalizedMessage()_ , but using _org.apache.isis.applib.services.i18n.TranslatableString_ instead.
+In the spirit of _Exception#getLocalizedMessage()_ , but using xref:system:generated:index/applib/services/i18n/TranslatableString.adoc[TranslatableString] instead.
 
-If returnsnull, then _Exception#getMessage()_ will be used as a fallback. This design allows the Isis-provided _org.apache.isis.applib.exceptions.RecoverableException_ and _org.apache.isis.applib.exceptions.UnrecoverableException_ to provide constructors that accept a _org.apache.isis.applib.services.i18n.TranslatableString_ , but can be left as null for any existing code.
+If returnsnull, then _Exception#getMessage()_ will be used as a fallback. This design allows the Isis-provided _org.apache.isis.applib.exceptions.RecoverableException_ and _org.apache.isis.applib.exceptions.UnrecoverableException_ to provide constructors that accept a xref:system:generated:index/applib/services/i18n/TranslatableString.adoc[TranslatableString] , but can be left as null for any existing code.
 --
 <.> `[teal]#*getTranslationContext*#()` : `String`
 +
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/DomainModelException.adoc
similarity index 72%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/DomainModelException.adoc
index dcdaf9a..96e065b 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/DomainModelException.adoc
@@ -1,28 +1,18 @@
-= EntityState : _enum_
+= DomainModelException : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
+Thrown when a problem is found with the domain model, and Isis cannot proceed.
 
 .Java Sources
 [source,java]
 ----
-enum EntityState {
+class DomainModelException {
 
-  NOT_PERSISTABLE
+  DomainModelException(final String message)
 
-  PERSISTABLE_ATTACHED
+  DomainModelException(final Throwable cause)
 
-  PERSISTABLE_DETACHED
-
-  PERSISTABLE_DESTROYED
-
-  boolean isPersistable()
-
-  boolean isAttached()
-
-  boolean isDetached()
-
-  boolean isDestroyed()
+  DomainModelException(final String message, final Throwable cause)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/MetaModelException.adoc
similarity index 79%
copy from antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/MetaModelException.adoc
index e87ee7c..ed63d06 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/MetaModelException.adoc
@@ -1,14 +1,16 @@
-= HomePageResolverService : _interface_
+= MetaModelException : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Returns a view model annotated with xref:system:generated:index/applib/annotation/HomePage.adoc[HomePage] .
-
 .Java Sources
 [source,java]
 ----
-interface HomePageResolverService {
+class MetaModelException {
+
+  MetaModelException(final String message)
+
+  MetaModelException(final Throwable cause)
 
-  Object getHomePage()
+  MetaModelException(final String message, final Throwable cause)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/NoAuthenticatorException.adoc
similarity index 70%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/NoAuthenticatorException.adoc
index dcdaf9a..d9df14e 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/NoAuthenticatorException.adoc
@@ -1,28 +1,18 @@
-= EntityState : _enum_
+= NoAuthenticatorException : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
+Indicates that there is no Authenticator available to authenticate a user based on this request.
 
 .Java Sources
 [source,java]
 ----
-enum EntityState {
+class NoAuthenticatorException {
 
-  NOT_PERSISTABLE
+  NoAuthenticatorException(final String msg)
 
-  PERSISTABLE_ATTACHED
+  NoAuthenticatorException(final String msg, final Throwable cause)
 
-  PERSISTABLE_DETACHED
-
-  PERSISTABLE_DESTROYED
-
-  boolean isPersistable()
-
-  boolean isAttached()
-
-  boolean isDetached()
-
-  boolean isDestroyed()
+  NoAuthenticatorException(final Throwable cause)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/ObjectNotFoundException.adoc
similarity index 73%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/ObjectNotFoundException.adoc
index 98310a4..2370806 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/ObjectNotFoundException.adoc
@@ -1,14 +1,16 @@
-= EntityPropertyChange : _class_
+= ObjectNotFoundException : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
+Indicates that the persistence context was unable to get an instantiate for the specified object identifier.
 
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class ObjectNotFoundException {
 
-  String toString()
+  ObjectNotFoundException(final String oid)
+
+  ObjectNotFoundException(final String oid, final Throwable cause)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/ObjectPersistenceException.adoc
similarity index 76%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/ObjectPersistenceException.adoc
index 98310a4..a1440ad 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/ObjectPersistenceException.adoc
@@ -1,14 +1,16 @@
-= EntityPropertyChange : _class_
+= ObjectPersistenceException : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class ObjectPersistenceException {
+
+  ObjectPersistenceException(final String message)
+
+  ObjectPersistenceException(final String message, final Throwable cause)
 
-  String toString()
+  ObjectPersistenceException(final Throwable cause)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/PersistFailedException.adoc b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/PersistFailedException.adoc
index 72684d1..5b0476d 100644
--- a/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/PersistFailedException.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/PersistFailedException.adoc
@@ -3,7 +3,7 @@
 
 Indicates that the persistence of an object failed.
 
-This exception is intended to represent an unexpected and non-recoverable condition (eg a unique/primary key/ foreign key constaint has been violated), and so is a subclass of xref:system:generated:index/applib/exceptions/UnrecoverableException.adoc[UnrecoverableException] . Throwing this exception will therefore result in (some sort of) error page being displayed to the user.
+This exception is intended to represent an unexpected and non-recoverable condition (eg a unique/primary key/ foreign key constaint has been violated), and so is a subclass of _UnrecoverableException_ . Throwing this exception will therefore result in (some sort of) error page being displayed to the user.
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/ReflectiveActionException.adoc
similarity index 77%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/ReflectiveActionException.adoc
index 98310a4..ff7f3b4 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/ReflectiveActionException.adoc
@@ -1,14 +1,16 @@
-= EntityPropertyChange : _class_
+= ReflectiveActionException : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class ReflectiveActionException {
+
+  ReflectiveActionException(final String msg)
+
+  ReflectiveActionException(final Throwable cause)
 
-  String toString()
+  ReflectiveActionException(final String msg, final Throwable cause)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/RepositoryException.adoc b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/RepositoryException.adoc
index c7d396d..62afab3 100644
--- a/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/RepositoryException.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/RepositoryException.adoc
@@ -3,7 +3,7 @@
 
 Indicates that a repository method has failed.
 
-This exception is intended to represent an unexpected and non-recoverable condition (eg a syntax error in some JDOQL query syntax or similar), and so is a subclass of xref:system:generated:index/applib/exceptions/UnrecoverableException.adoc[UnrecoverableException] . Throwing this exception will therefore result in (some sort of) error page being displayed to the user.
+This exception is intended to represent an unexpected and non-recoverable condition (eg a syntax error in some JDOQL query syntax or similar), and so is a subclass of _UnrecoverableException_ . Throwing this exception will therefore result in (some sort of) error page being displayed to the user.
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/UnexpectedCallException.adoc
similarity index 78%
copy from antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/UnexpectedCallException.adoc
index e87ee7c..710b0b1 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/UnexpectedCallException.adoc
@@ -1,14 +1,14 @@
-= HomePageResolverService : _interface_
+= UnexpectedCallException : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Returns a view model annotated with xref:system:generated:index/applib/annotation/HomePage.adoc[HomePage] .
+Indicates that a call was made to a method (normally an overridden one) that was not expected, and hence not coded for.
 
 .Java Sources
 [source,java]
 ----
-interface HomePageResolverService {
+class UnexpectedCallException {
 
-  Object getHomePage()
+  UnexpectedCallException()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/UnknownTypeException.adoc
similarity index 84%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/UnknownTypeException.adoc
index 78f204d..4d74df1 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/exceptions/unrecoverable/UnknownTypeException.adoc
@@ -1,12 +1,14 @@
-= ResourceCoordinates : _class_
+= UnknownTypeException : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class UnknownTypeException {
 
-  int compareTo(final ResourceCoordinates other)
+  UnknownTypeException(final String message)
+
+  UnknownTypeException(final Object object)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/applib/graph/tree/LazyTreeNode.adoc
similarity index 68%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/applib/graph/tree/LazyTreeNode.adoc
index dcdaf9a..d88f4ac 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/graph/tree/LazyTreeNode.adoc
@@ -1,28 +1,26 @@
-= EntityState : _enum_
+= LazyTreeNode : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
-
 .Java Sources
 [source,java]
 ----
-enum EntityState {
+class LazyTreeNode {
 
-  NOT_PERSISTABLE
+  TreeNode<T> of(T value, Class<? extends TreeAdapter<T>> treeAdapterClass, TreeState sharedState)
 
-  PERSISTABLE_ATTACHED
+  T getValue()
 
-  PERSISTABLE_DETACHED
+  TreeNode<T> getParentIfAny()
 
-  PERSISTABLE_DESTROYED
+  int getChildCount()
 
-  boolean isPersistable()
+  Stream<TreeNode<T>> streamChildren()
 
-  boolean isAttached()
+  Class<? extends TreeAdapter<T>> getTreeAdapterClass()
 
-  boolean isDetached()
+  TreePath getPositionAsPath()
 
-  boolean isDestroyed()
+  TreeState getTreeState()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/graph/tree/TreeNode.adoc b/antora/components/system/modules/generated/pages/index/applib/graph/tree/TreeNode.adoc
index d2bddc7..0201ca5 100644
--- a/antora/components/system/modules/generated/pages/index/applib/graph/tree/TreeNode.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/graph/tree/TreeNode.adoc
@@ -54,18 +54,18 @@ interface TreeNode {
 }
 ----
 
-<.> `[teal]#*getTreeState*#()` : `xref:system:generated:index/applib/graph/tree/TreeState.adoc[TreeState]`
-<.> `[teal]#*expand*#(xref:system:generated:index/applib/graph/tree/TreePath.adoc[TreePath]... treePaths)` : `void`
+<.> `[teal]#*getTreeState*#()` : `TreeState`
+<.> `[teal]#*expand*#(TreePath... treePaths)` : `void`
 +
 --
 Adds _treePaths_ to the set of expanded nodes, as held by this tree's shared state object.
 --
-<.> `[teal]#*collapse*#(xref:system:generated:index/applib/graph/tree/TreePath.adoc[TreePath]... treePaths)` : `void`
+<.> `[teal]#*collapse*#(TreePath... treePaths)` : `void`
 +
 --
 Removes _treePaths_ from the set of expanded nodes, as held by this tree's shared state object.
 --
-<.> `[teal]#*_lazy_*#<T>(T node, Class<? extends TreeAdapter<T>> treeAdapterClass)` : `xref:system:generated:index/applib/graph/tree/TreeNode.adoc[TreeNode]<T>`
+<.> `[teal]#*_lazy_*#<T>(T node, Class<? extends TreeAdapter<T>> treeAdapterClass)` : `TreeNode<T>`
 +
 --
 Convenient shortcut.
diff --git a/antora/components/system/modules/generated/pages/index/applib/graph/tree/TreePath.adoc b/antora/components/system/modules/generated/pages/index/applib/graph/tree/TreePath.adoc
index bcc3163..902e35d 100644
--- a/antora/components/system/modules/generated/pages/index/applib/graph/tree/TreePath.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/graph/tree/TreePath.adoc
@@ -24,6 +24,6 @@ interface TreePath {
 }
 ----
 
-<.> `[teal]#*append*#(int indexWithinSiblings)` : `xref:system:generated:index/applib/graph/tree/TreePath.adoc[TreePath]`
-<.> `[teal]#*getParentIfAny*#()` : `xref:system:generated:index/applib/graph/tree/TreePath.adoc[TreePath]`
+<.> `[teal]#*append*#(int indexWithinSiblings)` : `TreePath`
+<.> `[teal]#*getParentIfAny*#()` : `TreePath`
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/jaxb/DataTypeFactory.adoc
similarity index 84%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/jaxb/DataTypeFactory.adoc
index 78f204d..397b841 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/jaxb/DataTypeFactory.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= DataTypeFactory : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class DataTypeFactory {
 
-  int compareTo(final ResourceCoordinates other)
+  XMLGregorianCalendar withTypeFactoryDo(Function<DatatypeFactory, XMLGregorianCalendar> factory)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/applib/jaxb/JavaSqlXMLGregorianCalendarMarshalling.adoc
similarity index 74%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/applib/jaxb/JavaSqlXMLGregorianCalendarMarshalling.adoc
index 98310a4..d72a8d4 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/jaxb/JavaSqlXMLGregorianCalendarMarshalling.adoc
@@ -1,14 +1,16 @@
-= EntityPropertyChange : _class_
+= JavaSqlXMLGregorianCalendarMarshalling : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class JavaSqlXMLGregorianCalendarMarshalling {
+
+  static DatatypeFactory datatypeFactory;
+
+  Timestamp toTimestamp(final XMLGregorianCalendar calendar)
 
-  String toString()
+  XMLGregorianCalendar toXMLGregorianCalendar(final Timestamp timestamp)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/jaxb/JavaTimeXMLGregorianCalendarMarshalling.adoc b/antora/components/system/modules/generated/pages/index/applib/jaxb/JavaTimeXMLGregorianCalendarMarshalling.adoc
new file mode 100644
index 0000000..9bd8487
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/jaxb/JavaTimeXMLGregorianCalendarMarshalling.adoc
@@ -0,0 +1,34 @@
+= JavaTimeXMLGregorianCalendarMarshalling : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+.Java Sources
+[source,java]
+----
+class JavaTimeXMLGregorianCalendarMarshalling {
+
+  LocalDate toLocalDate(XMLGregorianCalendar cal)
+
+  LocalTime toLocalTime(XMLGregorianCalendar cal)
+
+  LocalDateTime toLocalDateTime(XMLGregorianCalendar cal)
+
+  OffsetDateTime toOffsetDateTime(XMLGregorianCalendar cal)
+
+  OffsetTime toOffsetTime(XMLGregorianCalendar cal)
+
+  ZonedDateTime toZonedDateTime(XMLGregorianCalendar cal)
+
+  XMLGregorianCalendar toXMLGregorianCalendar2(LocalDate localDate)
+
+  XMLGregorianCalendar toXMLGregorianCalendar2(LocalTime localTime)
+
+  XMLGregorianCalendar toXMLGregorianCalendar2(LocalDateTime localDateTime)
+
+  XMLGregorianCalendar toXMLGregorianCalendar2(OffsetTime offsetTime)
+
+  XMLGregorianCalendar toXMLGregorianCalendar2(OffsetDateTime offsetDateTime)
+
+  XMLGregorianCalendar toXMLGregorianCalendar2(ZonedDateTime zonedDateTime)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/jaxb/JodaTimeJaxbAdapters.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/jaxb/JodaTimeJaxbAdapters.adoc
index 78f204d..e4214a2 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/jaxb/JodaTimeJaxbAdapters.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= JodaTimeJaxbAdapters : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class JodaTimeJaxbAdapters {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/applib/jaxb/JodaTimeXMLGregorianCalendarMarshalling.adoc
similarity index 56%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/applib/jaxb/JodaTimeXMLGregorianCalendarMarshalling.adoc
index dcdaf9a..5b57426 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/jaxb/JodaTimeXMLGregorianCalendarMarshalling.adoc
@@ -1,28 +1,26 @@
-= EntityState : _enum_
+= JodaTimeXMLGregorianCalendarMarshalling : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
-
 .Java Sources
 [source,java]
 ----
-enum EntityState {
+class JodaTimeXMLGregorianCalendarMarshalling {
 
-  NOT_PERSISTABLE
+  DateTime toDateTime(final XMLGregorianCalendar xgc)
 
-  PERSISTABLE_ATTACHED
+  LocalDate toLocalDate(final XMLGregorianCalendar xgc)
 
-  PERSISTABLE_DETACHED
+  LocalDateTime toLocalDateTime(final XMLGregorianCalendar xgc)
 
-  PERSISTABLE_DESTROYED
+  LocalTime toLocalTime(final XMLGregorianCalendar xgc)
 
-  boolean isPersistable()
+  XMLGregorianCalendar toXMLGregorianCalendar(DateTime dateTime)
 
-  boolean isAttached()
+  XMLGregorianCalendar toXMLGregorianCalendar(final LocalDateTime localDateTime)
 
-  boolean isDetached()
+  XMLGregorianCalendar toXMLGregorianCalendar(final LocalDate localDate)
 
-  boolean isDestroyed()
+  XMLGregorianCalendar toXMLGregorianCalendar(final LocalTime localTime)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/jaxb/PrimitiveJaxbAdapters.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/jaxb/PrimitiveJaxbAdapters.adoc
index 78f204d..6f1f079 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/jaxb/PrimitiveJaxbAdapters.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= PrimitiveJaxbAdapters : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class PrimitiveJaxbAdapters {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/ActionLayoutDataOwner.adoc
similarity index 83%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/component/ActionLayoutDataOwner.adoc
index 78f204d..26db570 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/ActionLayoutDataOwner.adoc
@@ -1,12 +1,14 @@
-= ResourceCoordinates : _class_
+= ActionLayoutDataOwner : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface ActionLayoutDataOwner {
 
-  int compareTo(final ResourceCoordinates other)
+  List<ActionLayoutData> getActions()
+
+  void setActions(List<ActionLayoutData> actions)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/layout/component/CollectionLayoutData.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/CollectionLayoutData.adoc
new file mode 100644
index 0000000..21f04bc
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/CollectionLayoutData.adoc
@@ -0,0 +1,102 @@
+= CollectionLayoutData : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Describes the layout of a single collection, broadly corresponds to the _org.apache.isis.applib.annotation.CollectionLayout_ annotation.
+
+Note that _org.apache.isis.applib.annotation.CollectionLayout#render()_ is omitted because _#defaultView_ is its replacement.
+
+.Java Sources
+[source,java]
+----
+class CollectionLayoutData {
+
+  CollectionLayoutData()
+
+  CollectionLayoutData(final String id)
+
+  String getId() // <.>
+
+  void setId(String id)
+
+  String getCssClass()
+
+  void setCssClass(String cssClass)
+
+  String getDescribedAs()
+
+  void setDescribedAs(String describedAs)
+
+  String getDefaultView() // <.>
+
+  void setDefaultView(String defaultView)
+
+  Where getHidden()
+
+  void setHidden(Where hidden)
+
+  String getNamed()
+
+  void setNamed(String named)
+
+  Boolean getNamedEscaped()
+
+  void setNamedEscaped(Boolean namedEscaped)
+
+  Integer getPaged()
+
+  void setPaged(Integer paged)
+
+  String getSortedBy()
+
+  void setSortedBy(String sortedBy)
+
+  List<ActionLayoutData> getActions()
+
+  void setActions(List<ActionLayoutData> actionLayoutDatas)
+
+  CollectionLayoutDataOwner getOwner() // <.>
+
+  void setOwner(final CollectionLayoutDataOwner owner)
+
+  String getMetadataError() // <.>
+
+  void setMetadataError(final String metadataError)
+
+  Link getLink() // <.>
+
+  void setLink(final Link link)
+
+  String toString()
+}
+----
+
+<.> `[teal]#*getId*#()` : `String`
++
+--
+Collection identifier, being the getter method without "get" prefix, first letter lower cased.
+--
+<.> `[teal]#*getDefaultView*#()` : `String`
++
+--
+Typicallytableorhidden, but could be any other named view that is configured and appropriate, eggmap3orfullcalendar2.
+--
+<.> `[teal]#*getOwner*#()` : `CollectionLayoutDataOwner`
++
+--
+Owner.
+
+Set programmatically by framework after reading in from XML.
+--
+<.> `[teal]#*getMetadataError*#()` : `String`
++
+--
+For diagnostics; populated by the framework if and only if a metadata error.
+--
+<.> `[teal]#*getLink*#()` : `Link`
++
+--
+The link to access this resource from the REST API (Restful Objects viewer).
+
+Populated by the framework automatically.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/CollectionLayoutDataOwner.adoc
similarity index 86%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/component/CollectionLayoutDataOwner.adoc
index 78f204d..4a48090 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/CollectionLayoutDataOwner.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= CollectionLayoutDataOwner : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface CollectionLayoutDataOwner {
 
-  int compareTo(final ResourceCoordinates other)
+  List<CollectionLayoutData> getCollections()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/CssClassFaPosition.adoc
similarity index 85%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/component/CssClassFaPosition.adoc
index 78f204d..a6be340 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/CssClassFaPosition.adoc
@@ -1,12 +1,16 @@
-= ResourceCoordinates : _class_
+= CssClassFaPosition : _enum_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+enum CssClassFaPosition {
 
-  int compareTo(final ResourceCoordinates other)
+  LEFT
+
+  RIGHT
+
+  boolean isLeftOrUnspecified(final CssClassFaPosition posistion)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/layout/component/DomainObjectLayoutData.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/DomainObjectLayoutData.adoc
new file mode 100644
index 0000000..5a383fc
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/DomainObjectLayoutData.adoc
@@ -0,0 +1,78 @@
+= DomainObjectLayoutData : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Describes the layout of the title and icon of a domain object, broadly corresponding to _org.apache.isis.applib.annotation.DomainObjectLayout_ .
+
+.Java Sources
+[source,java]
+----
+class DomainObjectLayoutData {
+
+  DomainObjectLayoutData()
+
+  BookmarkPolicy getBookmarking()
+
+  void setBookmarking(BookmarkPolicy bookmarking)
+
+  String getCssClass()
+
+  void setCssClass(String cssClass)
+
+  String getCssClassFa()
+
+  void setCssClassFa(String cssClassFa)
+
+  CssClassFaPosition getCssClassFaPosition()
+
+  void setCssClassFaPosition(CssClassFaPosition cssClassFaPosition)
+
+  String getDescribedAs()
+
+  void setDescribedAs(String describedAs)
+
+  String getNamed()
+
+  void setNamed(String named)
+
+  Boolean getNamedEscaped()
+
+  void setNamedEscaped(Boolean namedEscaped)
+
+  String getPlural()
+
+  void setPlural(String plural)
+
+  String getMetadataError() // <.>
+
+  void setMetadataError(final String metadataError)
+
+  DomainObjectLayoutDataOwner getOwner() // <.>
+
+  void setOwner(final DomainObjectLayoutDataOwner owner)
+
+  Link getLink() // <.>
+
+  void setLink(final Link link)
+}
+----
+
+<.> `[teal]#*getMetadataError*#()` : `String`
++
+--
+For diagnostics; populated by the framework if and only if a metadata error.
+--
+<.> `[teal]#*getOwner*#()` : `DomainObjectLayoutDataOwner`
++
+--
+Owner.
+
+Set programmatically by framework after reading in from XML.
+--
+<.> `[teal]#*getLink*#()` : `Link`
++
+--
+The link to access this resource from the REST API (Restful Objects viewer).
+
+Populated by the framework automatically.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/DomainObjectLayoutDataOwner.adoc
similarity index 80%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/component/DomainObjectLayoutDataOwner.adoc
index 78f204d..8100efc 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/DomainObjectLayoutDataOwner.adoc
@@ -1,12 +1,14 @@
-= ResourceCoordinates : _class_
+= DomainObjectLayoutDataOwner : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface DomainObjectLayoutDataOwner {
 
-  int compareTo(final ResourceCoordinates other)
+  DomainObjectLayoutData getDomainObject()
+
+  void setDomainObject(DomainObjectLayoutData domainObjectLayoutData)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/layout/component/FieldSet.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/FieldSet.adoc
new file mode 100644
index 0000000..3d05204
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/FieldSet.adoc
@@ -0,0 +1,87 @@
+= FieldSet : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+A _MemberRegion region_ of the page containing a set of related _PropertyLayoutData properties_ and associated _ActionLayoutData actions_ .
+
+.Java Sources
+[source,java]
+----
+class FieldSet {
+
+  FieldSet()
+
+  FieldSet(final String name)
+
+  String getId() // <.>
+
+  void setId(final String id)
+
+  Boolean isUnreferencedActions() // <.>
+
+  void setUnreferencedActions(final Boolean unreferencedActions)
+
+  Boolean isUnreferencedProperties() // <.>
+
+  void setUnreferencedProperties(final Boolean unreferencedProperties)
+
+  String getName() // <.>
+
+  void setName(String name)
+
+  List<ActionLayoutData> getActions()
+
+  void setActions(List<ActionLayoutData> actionLayoutDatas)
+
+  List<PropertyLayoutData> getProperties()
+
+  void setProperties(List<PropertyLayoutData> properties)
+
+  FieldSetOwner getOwner() // <.>
+
+  void setOwner(final FieldSetOwner owner)
+
+  String getMetadataError() // <.>
+
+  void setMetadataError(final String metadataError)
+
+  String toString()
+}
+----
+
+<.> `[teal]#*getId*#()` : `String`
++
+--
+As per <div id="...">...</div> : must be unique across entire page.
+--
+<.> `[teal]#*isUnreferencedActions*#()` : `Boolean`
++
+--
+Whether this fieldset should be used to hold any unreferenced actions (contributed or "native").
+
+Any layout must have precisely one fieldset or _BS3Col col_ that has this attribute set.
+--
+<.> `[teal]#*isUnreferencedProperties*#()` : `Boolean`
++
+--
+Whether this fieldset should be used to hold any unreferenced properties (contributed or "native").
+
+Any grid layout must have precisely one fieldset that has this attribute set.
+--
+<.> `[teal]#*getName*#()` : `String`
++
+--
+Corresponds to the _MemberOrder#name()_ (when applied to properties).
+--
+<.> `[teal]#*getOwner*#()` : `FieldSetOwner`
++
+--
+Owner.
+
+Set programmatically by framework after reading in from XML.
+--
+<.> `[teal]#*getMetadataError*#()` : `String`
++
+--
+For diagnostics; populated by the framework if and only if a metadata error.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/FieldSetOwner.adoc
similarity index 88%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/component/FieldSetOwner.adoc
index 78f204d..d831081 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/FieldSetOwner.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= FieldSetOwner : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface FieldSetOwner {
 
-  int compareTo(final ResourceCoordinates other)
+  List<FieldSet> getFieldSets()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/HasNamed.adoc
similarity index 82%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/component/HasNamed.adoc
index 78f204d..6cdadfe 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/HasNamed.adoc
@@ -1,12 +1,18 @@
-= ResourceCoordinates : _class_
+= HasNamed : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface HasNamed {
 
-  int compareTo(final ResourceCoordinates other)
+  String getNamed()
+
+  void setNamed(String named)
+
+  Boolean getNamedEscaped()
+
+  void setNamedEscaped(Boolean namedEscaped)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/MemberRegion.adoc
similarity index 73%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/component/MemberRegion.adoc
index dcdaf9a..75579ea 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/MemberRegion.adoc
@@ -1,28 +1,14 @@
-= EntityState : _enum_
+= MemberRegion : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
+Represents an area on the page containing one or several related members.
+
+Implementations include aFieldSet(containing a number of properties and their actions), and aCollectionLayoutData(containing a single collection and associated actions)
 
 .Java Sources
 [source,java]
 ----
-enum EntityState {
-
-  NOT_PERSISTABLE
-
-  PERSISTABLE_ATTACHED
-
-  PERSISTABLE_DETACHED
-
-  PERSISTABLE_DESTROYED
-
-  boolean isPersistable()
-
-  boolean isAttached()
-
-  boolean isDetached()
-
-  boolean isDestroyed()
+interface MemberRegion {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/MemberRegionOwner.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/component/MemberRegionOwner.adoc
index 78f204d..5b67df8 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/MemberRegionOwner.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= MemberRegionOwner : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+interface MemberRegionOwner {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/Owned.adoc
similarity index 88%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/component/Owned.adoc
index 78f204d..e876c60 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/Owned.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= Owned : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface Owned {
 
-  int compareTo(final ResourceCoordinates other)
+  T getOwner()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/Owner.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/component/Owner.adoc
index 78f204d..57ac280 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/Owner.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= Owner : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+interface Owner {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/layout/component/PropertyLayoutData.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/PropertyLayoutData.adoc
new file mode 100644
index 0000000..df5a01c
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/PropertyLayoutData.adoc
@@ -0,0 +1,107 @@
+= PropertyLayoutData : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Describes the layout of a single property, broadly corresponds to the _org.apache.isis.applib.annotation.PropertyLayout_ annotation.
+
+.Java Sources
+[source,java]
+----
+class PropertyLayoutData {
+
+  PropertyLayoutData()
+
+  PropertyLayoutData(final String id)
+
+  String getId() // <.>
+
+  void setId(String id)
+
+  String getCssClass()
+
+  void setCssClass(String cssClass)
+
+  String getDescribedAs()
+
+  void setDescribedAs(String describedAs)
+
+  Where getHidden()
+
+  void setHidden(Where hidden)
+
+  LabelPosition getLabelPosition()
+
+  void setLabelPosition(LabelPosition labelPosition)
+
+  Integer getMultiLine()
+
+  void setMultiLine(Integer multiLine)
+
+  String getNamed()
+
+  void setNamed(String named)
+
+  Boolean getNamedEscaped()
+
+  void setNamedEscaped(Boolean namedEscaped)
+
+  PromptStyle getPromptStyle()
+
+  void setPromptStyle(PromptStyle promptStyle)
+
+  RenderDay getRenderDay()
+
+  void setRenderDay(final RenderDay renderDay)
+
+  Integer getTypicalLength()
+
+  void setTypicalLength(Integer typicalLength)
+
+  Repainting getRepainting()
+
+  void setRepainting(final Repainting repainting)
+
+  List<ActionLayoutData> getActions()
+
+  void setActions(List<ActionLayoutData> actionLayoutDatas)
+
+  FieldSet getOwner() // <.>
+
+  void setOwner(final FieldSet owner)
+
+  String getMetadataError() // <.>
+
+  void setMetadataError(final String metadataError)
+
+  Link getLink() // <.>
+
+  void setLink(final Link link)
+
+  String toString()
+}
+----
+
+<.> `[teal]#*getId*#()` : `String`
++
+--
+Property identifier, being the getter method without "get" or "is" prefix, first letter lower cased.
+--
+<.> `[teal]#*getOwner*#()` : `FieldSet`
++
+--
+Owner.
+
+Set programmatically by framework after reading in from XML.
+--
+<.> `[teal]#*getMetadataError*#()` : `String`
++
+--
+For diagnostics; populated by the framework if and only if a metadata error.
+--
+<.> `[teal]#*getLink*#()` : `Link`
++
+--
+The link to access this resource from the REST API (Restful Objects viewer).
+
+Populated by the framework automatically.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/layout/component/ServiceActionLayoutData.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/ServiceActionLayoutData.adoc
new file mode 100644
index 0000000..7a62dda
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/ServiceActionLayoutData.adoc
@@ -0,0 +1,93 @@
+= ServiceActionLayoutData : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Describes the layout of a single action, broadly corresponding to _org.apache.isis.applib.annotation.ActionLayout_ .
+
+Note that _org.apache.isis.applib.annotation.ActionLayout#contributed()_ is omitted because this only applies to domain services.
+
+.Java Sources
+[source,java]
+----
+class ServiceActionLayoutData {
+
+  ServiceActionLayoutData()
+
+  ServiceActionLayoutData(final String objectType, final String id)
+
+  String getObjectType()
+
+  void setObjectType(final String objectType)
+
+  String getId() // <.>
+
+  void setId(String id)
+
+  BookmarkPolicy getBookmarking()
+
+  void setBookmarking(BookmarkPolicy bookmarking)
+
+  String getCssClass()
+
+  void setCssClass(String cssClass)
+
+  String getCssClassFa()
+
+  void setCssClassFa(String cssClassFa)
+
+  String getDescribedAs()
+
+  void setDescribedAs(String describedAs)
+
+  String getNamed()
+
+  void setNamed(String named)
+
+  Boolean getNamedEscaped()
+
+  void setNamedEscaped(Boolean namedEscaped)
+
+  ServiceActionLayoutDataOwner getOwner() // <.>
+
+  void setOwner(final ServiceActionLayoutDataOwner owner)
+
+  String getMetadataError() // <.>
+
+  void setMetadataError(final String metadataError)
+
+  Link getLink() // <.>
+
+  void setLink(final Link link)
+
+  String getObjectTypeAndId()
+
+  String toString()
+}
+----
+
+<.> `[teal]#*getId*#()` : `String`
++
+--
+Method name.
+
+Overloaded methods are not supported.
+--
+<.> `[teal]#*getOwner*#()` : `ServiceActionLayoutDataOwner`
++
+--
+Owner.
+
+Set programmatically by framework after reading in from XML.
+--
+<.> `[teal]#*getMetadataError*#()` : `String`
++
+--
+For diagnostics; populated by the framework if and only if a metadata error.
+--
+<.> `[teal]#*getLink*#()` : `Link`
++
+--
+The link to access this resource from the REST API (Restful Objects viewer).
+
+Populated by the framework automatically.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/component/ServiceActionLayoutDataOwner.adoc
similarity index 79%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/component/ServiceActionLayoutDataOwner.adoc
index 78f204d..7861793 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/component/ServiceActionLayoutDataOwner.adoc
@@ -1,12 +1,14 @@
-= ResourceCoordinates : _class_
+= ServiceActionLayoutDataOwner : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface ServiceActionLayoutDataOwner {
 
-  int compareTo(final ResourceCoordinates other)
+  List<ServiceActionLayoutData> getServiceActions()
+
+  void setServiceActions(List<ServiceActionLayoutData> actions)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/layout/LayoutService.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/Grid.adoc
similarity index 54%
copy from antora/components/system/modules/generated/pages/index/applib/services/layout/LayoutService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/Grid.adoc
index 1517344..d07ce7b 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/layout/LayoutService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/Grid.adoc
@@ -1,32 +1,34 @@
-= LayoutService : _interface_
+= Grid : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+All top-level page layout classes should implement this interface.
+
+It is used by the _LayoutService_ as a common based type for any layouts read in from XML.
+
 .Java Sources
 [source,java]
 ----
-interface LayoutService {
+interface Grid {
+
+  Class<?> getDomainClass()
+
+  void setDomainClass(final Class<?> domainClass)
+
+  String getTnsAndSchemaLocation()
 
-  String toXml(Class<?> domainClass, Style style) // <.>
+  void setTnsAndSchemaLocation(final String tnsAndSchemaLocation)
 
-  byte[] toZip(final Style style) // <.>
+  boolean isNormalized()
 
-  String toMenuBarsXml(final MenuBarsService.Type type) // <.>
+  void setNormalized(final boolean normalized)
+
+  LinkedHashMap<String, PropertyLayoutData> getAllPropertiesById()
+
+  LinkedHashMap<String, CollectionLayoutData> getAllCollectionsById()
+
+  LinkedHashMap<String, ActionLayoutData> getAllActionsById()
+
+  void visit(final Grid.Visitor visitor)
 }
 ----
 
-<.> `[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/applib/services/menu/MenuBarsService.adoc[MenuBarsService] ).
---
-
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/layout/LayoutService.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/GridAbstract.adoc
similarity index 54%
copy from antora/components/system/modules/generated/pages/index/applib/services/layout/LayoutService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/GridAbstract.adoc
index 1517344..ce0a569 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/layout/LayoutService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/GridAbstract.adoc
@@ -1,32 +1,34 @@
-= LayoutService : _interface_
+= GridAbstract : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+All top-level page layout classes should implement this interface.
+
+It is used by the _LayoutService_ as a common based type for any layouts read in from XML.
+
 .Java Sources
 [source,java]
 ----
-interface LayoutService {
+class GridAbstract {
+
+  Class<?> getDomainClass()
+
+  void setDomainClass(final Class<?> domainClass)
+
+  String getTnsAndSchemaLocation()
 
-  String toXml(Class<?> domainClass, Style style) // <.>
+  void setTnsAndSchemaLocation(final String tnsAndSchemaLocation)
 
-  byte[] toZip(final Style style) // <.>
+  boolean isNormalized()
 
-  String toMenuBarsXml(final MenuBarsService.Type type) // <.>
+  void setNormalized(final boolean normalized)
+
+  LinkedHashMap<String, PropertyLayoutData> getAllPropertiesById()
+
+  LinkedHashMap<String, CollectionLayoutData> getAllCollectionsById()
+
+  LinkedHashMap<String, ActionLayoutData> getAllActionsById()
+
+  LinkedHashMap<String, FieldSet> getAllFieldSetsByName()
 }
 ----
 
-<.> `[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/applib/services/menu/MenuBarsService.adoc[MenuBarsService] ).
---
-
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3ClearFix.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3ClearFix.adoc
index 78f204d..4f54214 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3ClearFix.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= BS3ClearFix : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class BS3ClearFix {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3ClearFixHidden.adoc
similarity index 81%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3ClearFixHidden.adoc
index 78f204d..025aefe 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3ClearFixHidden.adoc
@@ -1,12 +1,16 @@
-= ResourceCoordinates : _class_
+= BS3ClearFixHidden : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+One of theResponsive utility classes.
+
+It is rendered as a (eg) <div class="clearfix hidden-xs ...">
+
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class BS3ClearFixHidden {
 
-  int compareTo(final ResourceCoordinates other)
+  String toCssClass()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3ClearFixVisible.adoc
similarity index 74%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3ClearFixVisible.adoc
index 98310a4..ae99ae6 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3ClearFixVisible.adoc
@@ -1,14 +1,20 @@
-= EntityPropertyChange : _class_
+= BS3ClearFixVisible : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
+One of theResponsive utility classes.
+
+It is rendered as a (eg) <div class="clearfix visible-xs-block ...">
 
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class BS3ClearFixVisible {
+
+  CssDisplay getCssDisplay()
+
+  void setCssDisplay(final CssDisplay cssDisplay)
 
-  String toString()
+  String toCssClass()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3Col.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3Col.adoc
new file mode 100644
index 0000000..879272e
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3Col.adoc
@@ -0,0 +1,98 @@
+= BS3Col : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+A column within a row which, depending on its _#getSpan()_ , could be as narrow as 1/12th of the page's width, all the way up to spanning the entire page.
+
+Pretty much other content can be contained within a column, though most commonly it will be _FieldSet fieldset_ s (a group of properties) or _CollectionLayoutData collection_ s. However, columns can also be used to contain further _BS3Row row_ s (creating a nested grid of rows/cols/rows/cols) and _BS3TabGroup tabgroup_ s.
+
+It is rendered as a (eg) <div class="col-md-4 ...">
+
+.Java Sources
+[source,java]
+----
+class BS3Col {
+
+  String getId() // <.>
+
+  void setId(final String id)
+
+  int getSpan()
+
+  void setSpan(final int span)
+
+  Boolean isUnreferencedActions() // <.>
+
+  void setUnreferencedActions(final Boolean unreferencedActions)
+
+  Boolean isUnreferencedCollections() // <.>
+
+  void setUnreferencedCollections(final Boolean unreferencedCollections)
+
+  DomainObjectLayoutData getDomainObject() // <.>
+
+  void setDomainObject(final DomainObjectLayoutData domainObjectLayoutData)
+
+  List<SizeSpan> getSizeSpans()
+
+  void setSizeSpans(final List<SizeSpan> sizeSpans)
+
+  List<ActionLayoutData> getActions()
+
+  void setActions(final List<ActionLayoutData> actions)
+
+  List<BS3Row> getRows()
+
+  void setRows(final List<BS3Row> rows)
+
+  List<BS3TabGroup> getTabGroups()
+
+  void setTabGroups(final List<BS3TabGroup> tabGroups)
+
+  List<FieldSet> getFieldSets()
+
+  void setFieldSets(final List<FieldSet> fieldSets)
+
+  List<CollectionLayoutData> getCollections()
+
+  void setCollections(final List<CollectionLayoutData> collections)
+
+  String getMetadataError() // <.>
+
+  void setMetadataError(final String metadataError)
+
+  String toCssClass()
+
+  String toString()
+}
+----
+
+<.> `[teal]#*getId*#()` : `String`
++
+--
+As per <div id="...">...</div> : must be unique across entire page.
+--
+<.> `[teal]#*isUnreferencedActions*#()` : `Boolean`
++
+--
+Whether this column should be used to hold any unreferenced actions (contributed or "native").
+
+Any layout must have precisely one column or _FieldSet_ that has this attribute set.
+--
+<.> `[teal]#*isUnreferencedCollections*#()` : `Boolean`
++
+--
+Whether this column should be used to hold any unreferenced collections (contributed or "native").
+
+Any layout must have precisely one column or _BS3TabGroup tabgroup_ that has this attribute set.
+--
+<.> `[teal]#*getDomainObject*#()` : `DomainObjectLayoutData`
++
+--
+Whether to show the object's icon and title.
+--
+<.> `[teal]#*getMetadataError*#()` : `String`
++
+--
+For diagnostics; populated by the framework if and only if a metadata error.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3Element.adoc
similarity index 71%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3Element.adoc
index dcdaf9a..b585b68 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3Element.adoc
@@ -1,28 +1,20 @@
-= EntityState : _enum_
+= BS3Element : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
-
 .Java Sources
 [source,java]
 ----
-enum EntityState {
-
-  NOT_PERSISTABLE
-
-  PERSISTABLE_ATTACHED
-
-  PERSISTABLE_DETACHED
+interface BS3Element {
 
-  PERSISTABLE_DESTROYED
+  String getCssClass() // <.>
 
-  boolean isPersistable()
-
-  boolean isAttached()
-
-  boolean isDetached()
-
-  boolean isDestroyed()
+  void setCssClass(final String cssClass)
 }
 ----
 
+<.> `[teal]#*getCssClass*#()` : `String`
++
+--
+Any additional CSS classes to render on the page element corresponding to this object, eg as per theBootstrap mixinsor just for custom styling.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/SyncControl.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3ElementAbstract.adoc
similarity index 66%
copy from antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/SyncControl.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3ElementAbstract.adoc
index 5201c81..ca5302a 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/SyncControl.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3ElementAbstract.adoc
@@ -1,24 +1,22 @@
-= SyncControl : _class_
+= BS3ElementAbstract : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Superclass for all layout classes, factoring out the common _#getCssClass()_ attribute.
+
 .Java Sources
 [source,java]
 ----
-class SyncControl {
-
-  SyncControl control()
-
-  SyncControl withExecute()
+class BS3ElementAbstract {
 
-  SyncControl withNoExecute()
+  String getCssClass() // <.>
 
-  ImmutableEnumSet<ExecutionMode> getExecutionModes() // <.>
+  void setCssClass(final String cssClass)
 }
 ----
 
-<.> `[teal]#*getExecutionModes*#()` : `ImmutableEnumSet<xref:system:generated:index/applib/services/wrapper/control/ExecutionMode.adoc[ExecutionMode]>`
+<.> `[teal]#*getCssClass*#()` : `String`
 +
 --
-Not API.
+Any additional CSS classes to render on the page element corresponding to this object, eg as per theBootstrap mixinsor just for custom styling.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3Grid.adoc
similarity index 52%
copy from antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3Grid.adoc
index bfc7391..30188f3 100644
--- a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3Grid.adoc
@@ -1,36 +1,40 @@
-= Markup : _class_
+= BS3Grid : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable value type holding pre-rendered HTML.
+This is the top-level for rendering the domain object's properties, collections and actions. It simply consists of a number of rows.
+
+The element is rendered as a <div class="...">
 
 .Java Sources
 [source,java]
 ----
-class Markup {
+class BS3Grid {
+
+  String getCssClass()
 
-  Markup()
+  void setCssClass(final String cssClass)
 
-  Markup(String html)
+  List<BS3Row> getRows()
 
-  String asHtml()
+  void setRows(final List<BS3Row> rows)
 
-  boolean isEqualTo(final Markup other)
+  List<String> getMetadataErrors() // <.>
 
-  String title()
+  void setMetadataErrors(final List<String> metadataErrors)
 
-  boolean equals(final Object obj)
+  void visit(final Grid.Visitor visitor)
 
-  int hashCode()
+  LinkedHashMap<String, BS3Tab> getAllTabsByName()
 
-  String toString()
+  LinkedHashMap<String, HasCssId> getAllCssId()
 
-  Markup valueOfHtml(String html) // <.>
+  BS3Grid getGrid()
 }
 ----
 
-<.> `[teal]#*_valueOfHtml_*#(String html)` : `xref:system:generated:index/applib/value/Markup.adoc[Markup]`
+<.> `[teal]#*getMetadataErrors*#()` : `List<String>`
 +
 --
-syntactic sugar
+For diagnostics; populated by the framework if and only if a metadata error.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3Row.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3Row.adoc
new file mode 100644
index 0000000..8a34a90
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3Row.adoc
@@ -0,0 +1,52 @@
+= BS3Row : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Contains a row of content, either on the top-level _BS3Grid page_ or at any other lower-level element that can contain rows, eg _BS3Tab tabs_ .
+
+It is rendered as a <div class="row ...">
+
+.Java Sources
+[source,java]
+----
+class BS3Row {
+
+  String getId() // <.>
+
+  void setId(final String id)
+
+  List<BS3RowContent> getCols()
+
+  void setCols(final List<BS3RowContent> cols)
+
+  String getMetadataError() // <.>
+
+  void setMetadataError(final String metadataError)
+
+  BS3RowOwner getOwner() // <.>
+
+  void setOwner(final BS3RowOwner owner)
+
+  BS3Grid getGrid()
+
+  String toString()
+}
+----
+
+<.> `[teal]#*getId*#()` : `String`
++
+--
+As per <div id="...">...</div> : must be unique across entire page.
+--
+<.> `[teal]#*getMetadataError*#()` : `String`
++
+--
+For diagnostics; populated by the framework if and only if a metadata error.
+--
+<.> `[teal]#*getOwner*#()` : `BS3RowOwner`
++
+--
+Owner.
+
+Set programmatically by framework after reading in from XML.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/user/RoleMemento.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3RowContent.adoc
similarity index 59%
copy from antora/components/system/modules/generated/pages/index/applib/services/user/RoleMemento.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3RowContent.adoc
index cb4274c..a3f587a 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/user/RoleMemento.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3RowContent.adoc
@@ -1,29 +1,37 @@
-= RoleMemento : _class_
+= BS3RowContent : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable serializable value held by xref:system:generated:index/applib/services/user/UserMemento.adoc[UserMemento] .
+Common superclass for any content of a row.
+
+Most commonly the content of a row is _BS3Col col_ umns, but it may be either of the _BS3ClearFix clearfix_ classes.
 
 .Java Sources
 [source,java]
 ----
-class RoleMemento {
+class BS3RowContent {
+
+  Size getSize() // <.>
 
-  RoleMemento(final String name) // <.>
+  void setSize(final Size size)
 
-  RoleMemento(final String name, final String description) // <.>
+  BS3RowContentOwner getOwner() // <.>
 
-  String title()
+  void setOwner(final BS3RowContentOwner owner)
+
+  BS3Grid getGrid()
 }
 ----
 
-<.> `[teal]#*RoleMemento*#(String name)`
+<.> `[teal]#*getSize*#()` : `Size`
 +
 --
-Creates a new role with the specified name. Description is left blank.
+Default if not specified is _Size#MD_ .
 --
-<.> `[teal]#*RoleMemento*#(String name, String description)`
+<.> `[teal]#*getOwner*#()` : `BS3RowContentOwner`
 +
 --
-Creates a new role with the specified name and description.
+Owner.
+
+Set programmatically by framework after reading in from XML.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3RowContentOwner.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3RowContentOwner.adoc
index 78f204d..6f27e5d 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3RowContentOwner.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= BS3RowContentOwner : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+interface BS3RowContentOwner {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3RowOwner.adoc
similarity index 88%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3RowOwner.adoc
index 78f204d..d4ccdb0 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3RowOwner.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= BS3RowOwner : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface BS3RowOwner {
 
-  int compareTo(final ResourceCoordinates other)
+  List<BS3Row> getRows()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3Tab.adoc
similarity index 64%
copy from antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3Tab.adoc
index bfc7391..f1973af 100644
--- a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3Tab.adoc
@@ -1,36 +1,38 @@
-= Markup : _class_
+= BS3Tab : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable value type holding pre-rendered HTML.
+Represents a tab within a _BS3TabGroup tab group_ .
+
+They simply contain one or more _BS3Row row_ s.
 
 .Java Sources
 [source,java]
 ----
-class Markup {
+class BS3Tab {
 
-  Markup()
+  String getName()
 
-  Markup(String html)
+  void setName(final String name)
 
-  String asHtml()
+  List<BS3Row> getRows()
 
-  boolean isEqualTo(final Markup other)
+  void setRows(final List<BS3Row> rows)
 
-  String title()
+  BS3TabOwner getOwner() // <.>
 
-  boolean equals(final Object obj)
+  void setOwner(final BS3TabOwner owner)
 
-  int hashCode()
+  BS3Grid getGrid()
 
   String toString()
-
-  Markup valueOfHtml(String html) // <.>
 }
 ----
 
-<.> `[teal]#*_valueOfHtml_*#(String html)` : `xref:system:generated:index/applib/value/Markup.adoc[Markup]`
+<.> `[teal]#*getOwner*#()` : `BS3TabOwner`
 +
 --
-syntactic sugar
+Owner.
+
+Set programmatically by framework after reading in from XML.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3TabGroup.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3TabGroup.adoc
new file mode 100644
index 0000000..60d05d66
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3TabGroup.adoc
@@ -0,0 +1,59 @@
+= BS3TabGroup : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Represents a tab group containing one or more _BS3Tab tab_ s.
+
+.Java Sources
+[source,java]
+----
+class BS3TabGroup {
+
+  Boolean isUnreferencedCollections() // <.>
+
+  void setUnreferencedCollections(final Boolean unreferencedCollections)
+
+  Boolean isCollapseIfOne() // <.>
+
+  void setCollapseIfOne(final Boolean collapseIfOne)
+
+  List<BS3Tab> getTabs()
+
+  void setTabs(final List<BS3Tab> tabs)
+
+  BS3TabGroupOwner getOwner() // <.>
+
+  void setOwner(final BS3TabGroupOwner owner)
+
+  String getMetadataError() // <.>
+
+  void setMetadataError(final String metadataError)
+
+  BS3Grid getGrid()
+}
+----
+
+<.> `[teal]#*isUnreferencedCollections*#()` : `Boolean`
++
+--
+Whether this tab group should be used to hold any unreferenced collections (contributed or "native").
+
+Any layout must have precisely one tab group or _BS3Col col_ that has this attribute set.
+--
+<.> `[teal]#*isCollapseIfOne*#()` : `Boolean`
++
+--
+If there is a single tab in the tabgroup, then whether to collapse and render without the outer tab.
+--
+<.> `[teal]#*getOwner*#()` : `BS3TabGroupOwner`
++
+--
+Owner.
+
+Set programmatically by framework after reading in from XML.
+--
+<.> `[teal]#*getMetadataError*#()` : `String`
++
+--
+For diagnostics; populated by the framework if and only if a metadata error.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3TabGroupOwner.adoc
similarity index 88%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3TabGroupOwner.adoc
index 78f204d..7289758 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3TabGroupOwner.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= BS3TabGroupOwner : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface BS3TabGroupOwner {
 
-  int compareTo(final ResourceCoordinates other)
+  List<BS3TabGroup> getTabGroups()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3TabOwner.adoc
similarity index 88%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3TabOwner.adoc
index 78f204d..0dc816c 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/BS3TabOwner.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= BS3TabOwner : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface BS3TabOwner {
 
-  int compareTo(final ResourceCoordinates other)
+  List<BS3Tab> getTabs()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/Size.adoc
similarity index 84%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/Size.adoc
index 78f204d..6370e12 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/Size.adoc
@@ -1,12 +1,22 @@
-= ResourceCoordinates : _class_
+= Size : _enum_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+As pergrid options, also used inresponsive utilityclasses.
+
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+enum Size {
+
+  XS
+
+  SM
+
+  MD
+
+  LG
 
-  int compareTo(final ResourceCoordinates other)
+  String toCssClassFragment()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/SizeSpan.adoc
similarity index 67%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/SizeSpan.adoc
index dcdaf9a..bf6195ae 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/SizeSpan.adoc
@@ -1,28 +1,30 @@
-= EntityState : _enum_
+= SizeSpan : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
-
 .Java Sources
 [source,java]
 ----
-enum EntityState {
+class SizeSpan {
+
+  SizeSpan with(final Size size, final int span)
+
+  SizeSpan offset(final Size size, final int span)
 
-  NOT_PERSISTABLE
+  Size getSize()
 
-  PERSISTABLE_ATTACHED
+  void setSize(final Size size)
 
-  PERSISTABLE_DETACHED
+  int getSpan()
 
-  PERSISTABLE_DESTROYED
+  void setSpan(final int span)
 
-  boolean isPersistable()
+  Boolean isOffset()
 
-  boolean isAttached()
+  void setOffset(final Boolean offset)
 
-  boolean isDetached()
+  String toCssClassFragment()
 
-  boolean isDestroyed()
+  StringBuilder appendCssClassFragment(final StringBuilder buf)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/WithinGrid.adoc
similarity index 88%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/WithinGrid.adoc
index 78f204d..d54c6f5 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/grid/bootstrap3/WithinGrid.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= WithinGrid : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface WithinGrid {
 
-  int compareTo(final ResourceCoordinates other)
+  BS3Grid getGrid()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/links/Link.adoc
similarity index 79%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/links/Link.adoc
index 98310a4..2c1780f 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/links/Link.adoc
@@ -1,12 +1,22 @@
-= EntityPropertyChange : _class_
+= Link : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class Link {
+
+  Link()
+
+  Link(final String rel, final String method, final String href, final String type)
+
+  String getRel()
+
+  String getMethod()
+
+  String getHref()
+
+  String getType()
 
   String toString()
 }
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/HasNamed.adoc
similarity index 88%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/menubars/HasNamed.adoc
index 78f204d..9ddc7d8 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/HasNamed.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= HasNamed : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface HasNamed {
 
-  int compareTo(final ResourceCoordinates other)
+  String getNamed()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/Menu.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/menubars/Menu.adoc
index 78f204d..abcfce2 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/Menu.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= Menu : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+interface Menu {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/MenuBar.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/menubars/MenuBar.adoc
index 78f204d..4093673 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/MenuBar.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= MenuBar : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+interface MenuBar {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/MenuBars.adoc
similarity index 71%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/menubars/MenuBars.adoc
index dcdaf9a..0fa49ef 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/MenuBars.adoc
@@ -1,28 +1,20 @@
-= EntityState : _enum_
+= MenuBars : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
-
 .Java Sources
 [source,java]
 ----
-enum EntityState {
-
-  NOT_PERSISTABLE
-
-  PERSISTABLE_ATTACHED
-
-  PERSISTABLE_DETACHED
+interface MenuBars {
 
-  PERSISTABLE_DESTROYED
+  String getTnsAndSchemaLocation()
 
-  boolean isPersistable()
+  void setTnsAndSchemaLocation(final String tnsAndSchemaLocation)
 
-  boolean isAttached()
+  MenuBar menuBarFor(DomainServiceLayout.MenuBar menuBar)
 
-  boolean isDetached()
+  void visit(Visitor visitor)
 
-  boolean isDestroyed()
+  Map<String, ServiceActionLayoutData> getAllServiceActionsByObjectTypeAndId()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/MenuBarsAbstract.adoc
similarity index 76%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/menubars/MenuBarsAbstract.adoc
index 98310a4..0b26941 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/MenuBarsAbstract.adoc
@@ -1,14 +1,16 @@
-= EntityPropertyChange : _class_
+= MenuBarsAbstract : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class MenuBarsAbstract {
+
+  String getTnsAndSchemaLocation()
+
+  void setTnsAndSchemaLocation(final String tnsAndSchemaLocation)
 
-  String toString()
+  LinkedHashMap<String, ServiceActionLayoutData> getAllServiceActionsByObjectTypeAndId()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/MenuSection.adoc
similarity index 88%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/menubars/MenuSection.adoc
index 78f204d..39b5ac1 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/MenuSection.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= MenuSection : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface MenuSection {
 
-  int compareTo(final ResourceCoordinates other)
+  List<ServiceActionLayoutData> getServiceActions()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/bootstrap3/BS3Menu.adoc
similarity index 52%
copy from antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/menubars/bootstrap3/BS3Menu.adoc
index bfc7391..4e8f3a3 100644
--- a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/bootstrap3/BS3Menu.adoc
@@ -1,36 +1,38 @@
-= Markup : _class_
+= BS3Menu : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable value type holding pre-rendered HTML.
+Describes the collection of domain services into menubars, broadly corresponding to the aggregation of information of _DomainServiceLayout_ that have the same value of _DomainServiceLayout#named()_ .
 
 .Java Sources
 [source,java]
 ----
-class Markup {
+class BS3Menu {
 
-  Markup()
+  BS3Menu()
 
-  Markup(String html)
+  BS3Menu(String named)
 
-  String asHtml()
+  String getNamed()
 
-  boolean isEqualTo(final Markup other)
+  void setNamed(String named)
 
-  String title()
+  String getCssClassFa()
 
-  boolean equals(final Object obj)
+  void setCssClassFa(final String cssClassFa)
 
-  int hashCode()
+  List<BS3MenuSection> getSections()
 
-  String toString()
+  Boolean isUnreferencedActions() // <.>
 
-  Markup valueOfHtml(String html) // <.>
+  void setUnreferencedActions(final Boolean unreferencedActions)
 }
 ----
 
-<.> `[teal]#*_valueOfHtml_*#(String html)` : `xref:system:generated:index/applib/value/Markup.adoc[Markup]`
+<.> `[teal]#*isUnreferencedActions*#()` : `Boolean`
 +
 --
-syntactic sugar
+Whether this menu should be used to hold any unreferenced actions.
+
+Any menubars layout must have precisely one menu that has this attribute set.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/bootstrap3/BS3MenuBar.adoc
similarity index 67%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/menubars/bootstrap3/BS3MenuBar.adoc
index dcdaf9a..2f3fa53 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/bootstrap3/BS3MenuBar.adoc
@@ -1,28 +1,18 @@
-= EntityState : _enum_
+= BS3MenuBar : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
+Describes the collection of domain services into menubars, broadly corresponding to the aggregation of information of xref:system:generated:index/applib/annotation/DomainServiceLayout.adoc[DomainServiceLayout] that have the same value of _DomainServiceLayout#named()_ .
 
 .Java Sources
 [source,java]
 ----
-enum EntityState {
+class BS3MenuBar {
 
-  NOT_PERSISTABLE
+  BS3MenuBar()
 
-  PERSISTABLE_ATTACHED
+  List<BS3Menu> getMenus()
 
-  PERSISTABLE_DETACHED
-
-  PERSISTABLE_DESTROYED
-
-  boolean isPersistable()
-
-  boolean isAttached()
-
-  boolean isDetached()
-
-  boolean isDestroyed()
+  void setMenus(List<BS3Menu> menus)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/bootstrap3/BS3MenuBars.adoc
similarity index 50%
copy from antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/menubars/bootstrap3/BS3MenuBars.adoc
index bfc7391..84adb3c 100644
--- a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/bootstrap3/BS3MenuBars.adoc
@@ -1,36 +1,40 @@
-= Markup : _class_
+= BS3MenuBars : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable value type holding pre-rendered HTML.
+Describes the collection of domain services into menubars, broadly corresponding to the aggregation of information within xref:system:generated:index/applib/annotation/DomainServiceLayout.adoc[DomainServiceLayout] .
 
 .Java Sources
 [source,java]
 ----
-class Markup {
+class BS3MenuBars {
 
-  Markup()
+  BS3MenuBars()
 
-  Markup(String html)
+  BS3MenuBar getPrimary()
 
-  String asHtml()
+  void setPrimary(final BS3MenuBar primary)
 
-  boolean isEqualTo(final Markup other)
+  BS3MenuBar getSecondary()
 
-  String title()
+  void setSecondary(final BS3MenuBar secondary)
 
-  boolean equals(final Object obj)
+  BS3MenuBar getTertiary()
 
-  int hashCode()
+  void setTertiary(final BS3MenuBar tertiary)
 
-  String toString()
+  BS3MenuBar menuBarFor(final DomainServiceLayout.MenuBar menuBar)
 
-  Markup valueOfHtml(String html) // <.>
+  void visit(final MenuBars.Visitor visitor)
+
+  String getMetadataError() // <.>
+
+  void setMetadataError(final String metadataError)
 }
 ----
 
-<.> `[teal]#*_valueOfHtml_*#(String html)` : `xref:system:generated:index/applib/value/Markup.adoc[Markup]`
+<.> `[teal]#*getMetadataError*#()` : `String`
 +
 --
-syntactic sugar
+For diagnostics; populated by the framework if and only if a metadata error.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/bootstrap3/BS3MenuSection.adoc
similarity index 69%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/applib/layout/menubars/bootstrap3/BS3MenuSection.adoc
index dcdaf9a..278419f 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/layout/menubars/bootstrap3/BS3MenuSection.adoc
@@ -1,28 +1,22 @@
-= EntityState : _enum_
+= BS3MenuSection : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
+Corresponds to a domain service that contributes its serviceActions under a particular _BS3MenuBar_ .
 
 .Java Sources
 [source,java]
 ----
-enum EntityState {
+class BS3MenuSection {
 
-  NOT_PERSISTABLE
+  BS3MenuSection()
 
-  PERSISTABLE_ATTACHED
+  String getNamed()
 
-  PERSISTABLE_DETACHED
+  void setNamed(String named)
 
-  PERSISTABLE_DESTROYED
+  List<ServiceActionLayoutData> getServiceActions()
 
-  boolean isPersistable()
-
-  boolean isAttached()
-
-  boolean isDetached()
-
-  boolean isDestroyed()
+  void setServiceActions(List<ServiceActionLayoutData> actionLayoutDatas)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc b/antora/components/system/modules/generated/pages/index/applib/mixins/MixinConstants.adoc
similarity index 78%
copy from antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
copy to antora/components/system/modules/generated/pages/index/applib/mixins/MixinConstants.adoc
index e87ee7c..5b163f9 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/mixins/MixinConstants.adoc
@@ -1,14 +1,16 @@
-= HomePageResolverService : _interface_
+= MixinConstants : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Returns a view model annotated with xref:system:generated:index/applib/annotation/HomePage.adoc[HomePage] .
-
 .Java Sources
 [source,java]
 ----
-interface HomePageResolverService {
+class MixinConstants {
+
+  public static final String METADATA_LAYOUT_GROUPNAME;
+
+  public static final String FILENAME_PROPERTY_NAME;
 
-  Object getHomePage()
+  public static final String FILENAME_PROPERTY_DESCRIPTION;
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/mixins/dto/Dto.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/mixins/dto/Dto.adoc
index 78f204d..1b6a383 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/mixins/dto/Dto.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= Dto : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+interface Dto {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/mixins/dto/Dto_downloadXml.adoc
similarity index 84%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/mixins/dto/Dto_downloadXml.adoc
index 78f204d..b5d3c5c 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/mixins/dto/Dto_downloadXml.adoc
@@ -1,12 +1,17 @@
-= ResourceCoordinates : _class_
+= Dto_downloadXml : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class Dto_downloadXml {
 
-  int compareTo(final ResourceCoordinates other)
+  @Inject
+JaxbService jaxbService;
+
+  Object act(final String fileName)
+
+  String default0Act()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/applib/mixins/dto/Dto_downloadXsd.adoc
similarity index 74%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/applib/mixins/dto/Dto_downloadXsd.adoc
index 98310a4..5d803d1 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/mixins/dto/Dto_downloadXsd.adoc
@@ -1,14 +1,22 @@
-= EntityPropertyChange : _class_
+= Dto_downloadXsd : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class Dto_downloadXsd {
+
+  @Inject
+MessageService messageService;
+
+  @Inject
+JaxbService jaxbService;
+
+  Object act(final String fileName, final JaxbService.IsisSchemas isisSchemas)
+
+  String default0Act()
 
-  String toString()
+  JaxbService.IsisSchemas default1Act()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/applib/mixins/layout/Object_downloadLayoutXml.adoc
similarity index 77%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/applib/mixins/layout/Object_downloadLayoutXml.adoc
index 98310a4..f57ab4c 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/mixins/layout/Object_downloadLayoutXml.adoc
@@ -1,14 +1,19 @@
-= EntityPropertyChange : _class_
+= Object_downloadLayoutXml : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class Object_downloadLayoutXml {
+
+  @Inject
+LayoutService layoutService;
+
+  Object act(final String fileName, final LayoutService.Style style)
+
+  String default0Act()
 
-  String toString()
+  LayoutService.Style default1Act()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/mixins/layout/Object_openRestApi.adoc
similarity index 81%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/mixins/layout/Object_openRestApi.adoc
index 78f204d..5535433 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/mixins/layout/Object_openRestApi.adoc
@@ -1,12 +1,18 @@
-= ResourceCoordinates : _class_
+= Object_openRestApi : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class Object_openRestApi {
 
-  int compareTo(final ResourceCoordinates other)
+  @Inject
+BookmarkService bookmarkService;
+
+  @Inject
+RestfulPathProvider restfulPathProvider;
+
+  LocalResourcePath act()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/mixins/layout/Object_rebuildMetamodel.adoc
similarity index 86%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/mixins/layout/Object_rebuildMetamodel.adoc
index 78f204d..7f66f5c 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/mixins/layout/Object_rebuildMetamodel.adoc
@@ -1,12 +1,15 @@
-= ResourceCoordinates : _class_
+= Object_rebuildMetamodel : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class Object_rebuildMetamodel {
 
-  int compareTo(final ResourceCoordinates other)
+  @Inject
+MetaModelService metaModelService;
+
+  Object act()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/applib/mixins/metamodel/Object_downloadMetamodelXml.adoc
similarity index 74%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/applib/mixins/metamodel/Object_downloadMetamodelXml.adoc
index 98310a4..c6834a5 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/mixins/metamodel/Object_downloadMetamodelXml.adoc
@@ -1,14 +1,23 @@
-= EntityPropertyChange : _class_
+= Object_downloadMetamodelXml : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class Object_downloadMetamodelXml {
+
+  @Inject
+MetaModelService metaModelService;
+
+  @Inject
+JaxbService jaxbService;
+
+  @Inject
+MetaModelServiceMenu metaModelServiceMenu;
+
+  Object act(final String fileName)
 
-  String toString()
+  String default0Act()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/mixins/metamodel/Object_objectIdentifier.adoc
similarity index 88%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/mixins/metamodel/Object_objectIdentifier.adoc
index 78f204d..cb0681c 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/mixins/metamodel/Object_objectIdentifier.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= Object_objectIdentifier : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class Object_objectIdentifier {
 
-  int compareTo(final ResourceCoordinates other)
+  String prop()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/mixins/metamodel/Object_objectType.adoc
similarity index 88%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/mixins/metamodel/Object_objectType.adoc
index 78f204d..b01c134 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/mixins/metamodel/Object_objectType.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= Object_objectType : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class Object_objectType {
 
-  int compareTo(final ResourceCoordinates other)
+  String prop()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/query/Query.adoc b/antora/components/system/modules/generated/pages/index/applib/query/Query.adoc
index d0fa882..56fb1f1 100644
--- a/antora/components/system/modules/generated/pages/index/applib/query/Query.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/query/Query.adoc
@@ -7,7 +7,7 @@ The implementations of these objects are be provided by the underlying persistor
 
 Implementations are expected to implement the _#getStart()_ and _#getCount()_ methods, which are used to support range / paging the data. Returned result sets are expected to start from index "start", and no more than "count" items are expected.
 
- *Note:* not every object store will necessarily support this interface. In particular, the in-memory object store does not. For this, you can use the _Predicate_ interface to similar effect, for example in _RepositoryService#allMatches(Class, Predicate, long, long)_ ). *Note:* that the predicate is applied within the xref:system:generated:index/applib/services/repository/RepositoryService.adoc[RepositoryService] (ie client-side) rather than being pushed back to the object store.
+ *Note:* not every object store will necessarily support this interface. In particular, the in-memory object store does not. For this, you can use the _Predicate_ interface to similar effect, for example in _RepositoryService#allMatches(Class, Predicate, long, long)_ ). *Note:* that the predicate is applied within the _RepositoryService_ (ie client-side) rather than being pushed back to the object store.
 
 .Java Sources
 [source,java]
@@ -44,7 +44,7 @@ The _Class_ of the objects returned by this query.
 --
 A human-readable representation of this query and its values.
 --
-<.> `[teal]#*getRange*#()` : `xref:system:generated:index/applib/query/QueryRange.adoc[QueryRange]`
+<.> `[teal]#*getRange*#()` : `QueryRange`
 +
 --
 Returns a model with start index into the set table and maximal number of items to return.
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/DomainChangeRecord.adoc b/antora/components/system/modules/generated/pages/index/applib/services/DomainChangeRecord.adoc
index bdedbbf..ce6e161 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/DomainChangeRecord.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/DomainChangeRecord.adoc
@@ -53,10 +53,10 @@ The time that the change occurred.
 --
 The object type of the domain object being changed.
 --
-<.> `[teal]#*getTarget*#()` : `xref:system:generated:index/applib/services/bookmark/Bookmark.adoc[Bookmark]`
+<.> `[teal]#*getTarget*#()` : `Bookmark`
 +
 --
-The xref:system:generated:index/applib/services/bookmark/Bookmark.adoc[Bookmark] identifying the domain object that has changed.
+The _Bookmark_ identifying the domain object that has changed.
 --
 <.> `[teal]#*getTargetMember*#()` : `String`
 +
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/RepresentsInteractionMemberExecution.adoc b/antora/components/system/modules/generated/pages/index/applib/services/RepresentsInteractionMemberExecution.adoc
index d6eb750..3671da0 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/RepresentsInteractionMemberExecution.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/RepresentsInteractionMemberExecution.adoc
@@ -1,7 +1,7 @@
 = RepresentsInteractionMemberExecution : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Extends xref:system:generated:index/commons/having/HasUniqueId.adoc[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/applib/services/wrapper/WrapperFactory.adoc[WrapperFactory] ) contain several.
+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 _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/applib/services/bookmark/Bookmark.adoc b/antora/components/system/modules/generated/pages/index/applib/services/bookmark/Bookmark.adoc
index 7c0321d..416847a 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/bookmark/Bookmark.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/bookmark/Bookmark.adoc
@@ -26,7 +26,7 @@ class Bookmark {
 }
 ----
 
-<.> `[teal]#*_parse_*#(String str)` : `Optional<xref:system:generated:index/applib/services/bookmark/Bookmark.adoc[Bookmark]>`
+<.> `[teal]#*_parse_*#(String str)` : `Optional<Bookmark>`
 +
 --
 Round-trip with _#toString()_ representation.
@@ -34,7 +34,7 @@ Round-trip with _#toString()_ representation.
 <.> `[teal]#*toString*#()` : `String`
 +
 --
-The canonical form of the xref:system:generated:index/applib/services/bookmark/Bookmark.adoc[Bookmark] , that is " _#getObjectType() objectType_ _#SEPARATOR_ _#getIdentifier()_ ".
+The canonical form of the _Bookmark_ , that is " _#getObjectType() objectType_ _#SEPARATOR_ _#getIdentifier()_ ".
 
 This is parseable by the _#parse(String)_ .
 --
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/services/bookmark/BookmarkHolder_lookup.adoc
similarity index 88%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/services/bookmark/BookmarkHolder_lookup.adoc
index 78f204d..07df383 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/bookmark/BookmarkHolder_lookup.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= BookmarkHolder_lookup : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class BookmarkHolder_lookup {
 
-  int compareTo(final ResourceCoordinates other)
+  Object act()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/services/bookmark/BookmarkHolder_object.adoc
similarity index 88%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/services/bookmark/BookmarkHolder_object.adoc
index 78f204d..78a10b7 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/bookmark/BookmarkHolder_object.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= BookmarkHolder_object : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class BookmarkHolder_object {
 
-  int compareTo(final ResourceCoordinates other)
+  Object prop()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/bookmark/BookmarkService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/bookmark/BookmarkService.adoc
index 5c4c4aa..8aa5092 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/bookmark/BookmarkService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/bookmark/BookmarkService.adoc
@@ -22,30 +22,30 @@ interface BookmarkService {
 }
 ----
 
-<.> `[teal]#*bookmarkFor*#(Object domainObject)` : `xref:system:generated:index/applib/services/bookmark/Bookmark.adoc[Bookmark]`
+<.> `[teal]#*bookmarkFor*#(Object domainObject)` : `Bookmark`
 +
 --
-Returns the xref:system:generated:index/applib/services/bookmark/Bookmark.adoc[Bookmark] for the given domain object.
+Returns the _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/applib/services/bookmark/Bookmark.adoc[Bookmark]`
+<.> `[teal]#*bookmarkForElseThrow*#(Object domainObject)` : `Bookmark`
 +
 --
-As per _#bookmarkFor(Object)_ , but requires that a non-null xref:system:generated:index/applib/services/bookmark/Bookmark.adoc[Bookmark] is returned.
+As per _#bookmarkFor(Object)_ , but requires that a non-null _Bookmark_ is returned.
 --
-<.> `[teal]#*bookmarkFor*#(Class<?> cls, String identifier)` : `xref:system:generated:index/applib/services/bookmark/Bookmark.adoc[Bookmark]`
+<.> `[teal]#*bookmarkFor*#(Class<?> cls, String identifier)` : `Bookmark`
 +
 --
-Utility method that creates a xref:system:generated:index/applib/services/bookmark/Bookmark.adoc[Bookmark] from the constituent parts.
+Utility method that creates a _Bookmark_ from the constituent parts.
 --
-<.> `[teal]#*lookup*#(xref:system:generated:index/applib/services/bookmark/BookmarkHolder.adoc[BookmarkHolder] bookmarkHolder)` : `Object`
-<.> `[teal]#*lookup*#(xref:system:generated:index/applib/services/bookmark/Bookmark.adoc[Bookmark] bookmark)` : `Object`
+<.> `[teal]#*lookup*#(BookmarkHolder bookmarkHolder)` : `Object`
+<.> `[teal]#*lookup*#(Bookmark bookmark)` : `Object`
 +
 --
 Reciprocal of _#bookmarkFor(Object)_
 --
-<.> `[teal]#*lookup*#<T>(xref:system:generated:index/applib/services/bookmark/Bookmark.adoc[Bookmark] bookmark, Class<T> cls)` : `T`
+<.> `[teal]#*lookup*#<T>(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/applib/services/command/Command.adoc b/antora/components/system/modules/generated/pages/index/applib/services/command/Command.adoc
index 7f79709..d82bd39 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/command/Command.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/command/Command.adoc
@@ -5,11 +5,11 @@ Represents the _intention to_ invoke either an action or modify a property. Ther
 
 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 xref:system:generated:index/applib/events/domain/ActionDomainEvent.adoc[ActionDomainEvent] s.
+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/applib/services/wrapper/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.
+Note that when invoking an action, other actions may be invoked courtesy of the _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/applib/services/command/Command.adoc[Command] object is created, and the originating xref:system:generated:index/applib/services/command/Command.adoc[Command] is set to be its _Command#getParent() parent_ .
+That said, if the sub-action is invoked asynchronously (using _WrapperFactory#asyncWrap(Object, AsyncControl)_ or _WrapperFactory#asyncWrapMixin(Class, Object, AsyncControl)_ ), then a separate _Command_ object is created, and the originating _Command_ is set to be its _Command#getParent() parent_ .
 
 .Java Sources
 [source,java]
@@ -42,10 +42,10 @@ The date/time at which this command was created.
 
 Derived from _#getCommandDto()_ 's _CommandDto#getTimestamp()_ .
 --
-<.> `[teal]#*getTarget*#()` : `xref:system:generated:index/applib/services/bookmark/Bookmark.adoc[Bookmark]`
+<.> `[teal]#*getTarget*#()` : `Bookmark`
 +
 --
-Derived from _#getCommandDto()_ , is the xref:system:generated:index/applib/services/bookmark/Bookmark.adoc[Bookmark] of the target object (entity or service) on which this action/edit was performed.
+Derived from _#getCommandDto()_ , is the _Bookmark_ of the target object (entity or service) on which this action/edit was performed.
 --
 <.> `[teal]#*getLogicalMemberIdentifier*#()` : `String`
 +
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/command/CommandExecutorService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/command/CommandExecutorService.adoc
index a1fb582..c76e91d 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/command/CommandExecutorService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/command/CommandExecutorService.adoc
@@ -16,7 +16,7 @@ interface CommandExecutorService {
 }
 ----
 
-<.> `[teal]#*executeCommand*#(SudoPolicy sudoPolicy, xref:system:generated:index/applib/services/command/Command.adoc[Command] command)` : `xref:system:generated:index/applib/services/bookmark/Bookmark.adoc[Bookmark]`
+<.> `[teal]#*executeCommand*#(SudoPolicy sudoPolicy, Command command)` : `Bookmark`
 +
 --
 Executes the specified command.
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc b/antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc
index aa393e9..0185bb3 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc
@@ -18,6 +18,6 @@ ContentMappingServiceForCommandDto contentMappingServiceForCommandDto;
 <.> `[teal]#*map*#(Object object)` : `CommandsDto`
 +
 --
-Not part of the xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[ContentMappingService] API.
+Not part of the _ContentMappingService_ API.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/services/commanddto/processor/CommandDtoProcessorForActionAbstract.adoc
similarity index 83%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/services/commanddto/processor/CommandDtoProcessorForActionAbstract.adoc
index 78f204d..cc5c9c4 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/commanddto/processor/CommandDtoProcessorForActionAbstract.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= CommandDtoProcessorForActionAbstract : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Convenience adapter for command processors for action invocations.
+
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class CommandDtoProcessorForActionAbstract {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/services/commanddto/processor/CommandDtoProcessorForPropertyAbstract.adoc
similarity index 83%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/services/commanddto/processor/CommandDtoProcessorForPropertyAbstract.adoc
index 78f204d..1bec0cb 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/commanddto/processor/CommandDtoProcessorForPropertyAbstract.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= CommandDtoProcessorForPropertyAbstract : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Convenience adapter for command processors for property edits.
+
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class CommandDtoProcessorForPropertyAbstract {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/commanddto/processor/spi/CommandDtoProcessorService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/commanddto/processor/spi/CommandDtoProcessorService.adoc
index 7a75d4f..513a08c 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/commanddto/processor/spi/CommandDtoProcessorService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/commanddto/processor/spi/CommandDtoProcessorService.adoc
@@ -1,7 +1,7 @@
 = CommandDtoProcessorService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Optional SPI called by xref:system:generated:index/applib/services/commanddto/conmap/ContentMappingServiceForCommandDto.adoc[ContentMappingServiceForCommandDto] . Similar to xref:system:generated:index/applib/services/commanddto/processor/CommandDtoProcessor.adoc[CommandDtoProcessor] , but applied to all _CommandDto_ s globally.
+Optional SPI called by _ContentMappingServiceForCommandDto_ . Similar to _CommandDtoProcessor_ , but applied to all _CommandDto_ s globally.
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/services/confview/ConfigurationMenu.adoc
similarity index 82%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/services/confview/ConfigurationMenu.adoc
index 78f204d..5a1326b 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/confview/ConfigurationMenu.adoc
@@ -1,12 +1,14 @@
-= ResourceCoordinates : _class_
+= ConfigurationMenu : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class ConfigurationMenu {
 
-  int compareTo(final ResourceCoordinates other)
+  ConfigurationMenu(ConfigurationViewService configurationService)
+
+  Set<ConfigurationProperty> configuration()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/confview/ConfigurationViewService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/confview/ConfigurationViewService.adoc
index 79f9e67..6045abe 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/confview/ConfigurationViewService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/confview/ConfigurationViewService.adoc
@@ -10,9 +10,9 @@ interface ConfigurationViewService {
 }
 ----
 
-<.> `[teal]#*allProperties*#()` : `Set<xref:system:generated:index/applib/services/confview/ConfigurationProperty.adoc[ConfigurationProperty]>`
+<.> `[teal]#*allProperties*#()` : `Set<ConfigurationProperty>`
 +
 --
-Returns all properties, each as an instance of xref:system:generated:index/applib/services/confview/ConfigurationProperty.adoc[ConfigurationProperty] (a view model). Mask sensitive values if required.
+Returns all properties, each as an instance of _ConfigurationProperty_ (a view model). Mask sensitive values if required.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/error/ErrorDetails.adoc b/antora/components/system/modules/generated/pages/index/applib/services/error/ErrorDetails.adoc
index 7227fbf..b55d863 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/error/ErrorDetails.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/error/ErrorDetails.adoc
@@ -1,7 +1,7 @@
 = ErrorDetails : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Details of the error (obtained from the thrown exception), passed as part of the request to the xref:system:generated:index/applib/services/error/ErrorReportingService.adoc[ErrorReportingService] .
+Details of the error (obtained from the thrown exception), passed as part of the request to the _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/applib/services/error/SimpleTicket.adoc b/antora/components/system/modules/generated/pages/index/applib/services/error/SimpleTicket.adoc
new file mode 100644
index 0000000..45a7b37
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/services/error/SimpleTicket.adoc
@@ -0,0 +1,47 @@
+= SimpleTicket : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Response from the _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.
+
+.Java Sources
+[source,java]
+----
+class SimpleTicket {
+
+  SimpleTicket(final String reference, final String userMessage, final String details)
+
+  SimpleTicket(final String reference, final String userMessage, final String details, final StackTracePolicy stackTracePolicy)
+
+  SimpleTicket(final String reference, final String userMessage, final String details, final String kittenUrl)
+
+  SimpleTicket(final String reference, final String userMessage, final String details, final StackTracePolicy stackTracePolicy, final String kittenUrl)
+
+  String getReference()
+
+  String getUserMessage()
+
+  String getDetails()
+
+  StackTracePolicy getStackTracePolicy()
+
+  String getKittenUrl() // <.>
+
+  String getMarkup()
+}
+----
+
+<.> `[teal]#*getKittenUrl*#()` : `String`
++
+--
+If specified, is the external URL of an image to display to the end user.
+
+Not necessarily of a kitten, but something by way of an apology.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/error/Ticket.adoc b/antora/components/system/modules/generated/pages/index/applib/services/error/Ticket.adoc
index 82330a7..0800c5f 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/error/Ticket.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/error/Ticket.adoc
@@ -1,7 +1,7 @@
 = Ticket : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Response from the xref:system:generated:index/applib/services/error/ErrorReportingService.adoc[ErrorReportingService] , containing information to show to the end-user.
+Response from the _ErrorReportingService_ , containing information to show to the end-user.
 
 Implementation notes:
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/exceprecog/ExceptionRecognizer.adoc b/antora/components/system/modules/generated/pages/index/applib/services/exceprecog/ExceptionRecognizer.adoc
index 03e6942..279be04 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/exceprecog/ExceptionRecognizer.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/exceprecog/ExceptionRecognizer.adoc
@@ -5,7 +5,7 @@ Domain service to (attempt) to recognize certain exceptions, and return user-fri
 
 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/applib/services/exceprecog/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.
+More than one implementation of _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.exceptions.RecoverableException_ , simply returning the exception's _org.apache.isis.applib.exceptions.RecoverableException#getMessage() message_ . This allows any component or domain object to throw this exception with the knowledge that it will be handled appropriately.
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/exceprecog/ExceptionRecognizerAbstract.adoc b/antora/components/system/modules/generated/pages/index/applib/services/exceprecog/ExceptionRecognizerAbstract.adoc
new file mode 100644
index 0000000..7e1b48a
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/services/exceprecog/ExceptionRecognizerAbstract.adoc
@@ -0,0 +1,24 @@
+= ExceptionRecognizerAbstract : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Abstract implementation of _ExceptionRecognizer_ that looks exceptions meeting the _Predicate_ supplied in the constructor and, if found anywhere in the causal chain, then returns a non-null message indicating that the exception has been recognized.
+
+If a messaging-parsing _Function_ is provided through the constructor, then the message can be altered. Otherwise the exception's _Throwable#getMessage() message_ is returned as-is.
+
+.Java Sources
+[source,java]
+----
+class ExceptionRecognizerAbstract {
+
+  ExceptionRecognizerAbstract(final Category category, Predicate<Throwable> predicate, final Function<String, String> messageParser)
+
+  ExceptionRecognizerAbstract(Predicate<Throwable> predicate, final Function<String, String> messageParser)
+
+  ExceptionRecognizerAbstract(Category category, Predicate<Throwable> predicate)
+
+  ExceptionRecognizerAbstract(Predicate<Throwable> predicate)
+
+  Optional<Recognition> recognize(Throwable ex)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/exceprecog/ExceptionRecognizerForType.adoc b/antora/components/system/modules/generated/pages/index/applib/services/exceprecog/ExceptionRecognizerForType.adoc
index 65a2473..52e4bcc 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/exceprecog/ExceptionRecognizerForType.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/exceprecog/ExceptionRecognizerForType.adoc
@@ -1,7 +1,7 @@
 = ExceptionRecognizerForType : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-A specific implementation of xref:system:generated:index/applib/services/exceprecog/ExceptionRecognizer.adoc[ExceptionRecognizer] that looks for an exception of the type provided in the constructor and, if found anywhere in the causal chain, then returns a non-null message indicating that the exception has been recognized.
+A specific implementation of _ExceptionRecognizer_ that looks for an exception of the type provided in the constructor and, if found anywhere in the causal chain, then returns a non-null message indicating that the exception has been recognized.
 
 If a messaging-parsing _Function_ is provided through the constructor, then the message can be altered. Otherwise the exception's _Throwable#getMessage() message_ is returned as-is.
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/exceprecog/ExceptionRecognizerService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/exceprecog/ExceptionRecognizerService.adoc
index b10205c..8dc472d 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/exceprecog/ExceptionRecognizerService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/exceprecog/ExceptionRecognizerService.adoc
@@ -14,13 +14,13 @@ interface ExceptionRecognizerService {
 }
 ----
 
-<.> `[teal]#*getExceptionRecognizers*#()` : `Can<xref:system:generated:index/applib/services/exceprecog/ExceptionRecognizer.adoc[ExceptionRecognizer]>`
+<.> `[teal]#*getExceptionRecognizers*#()` : `Can<ExceptionRecognizer>`
 <.> `[teal]#*recognize*#(Throwable ex)` : `Optional<Recognition>`
 +
 --
 Takes into consideration ExceptionRecognizers as given by _#getExceptionRecognizers()_ .
 --
-<.> `[teal]#*recognizeFromSelected*#(Can<xref:system:generated:index/applib/services/exceprecog/ExceptionRecognizer.adoc[ExceptionRecognizer]> recognizers, Throwable ex)` : `Optional<Recognition>`
+<.> `[teal]#*recognizeFromSelected*#(Can<ExceptionRecognizer> recognizers, Throwable ex)` : `Optional<Recognition>`
 +
 --
 Takes into consideration ExceptionRecognizers as given by _recognizers_ .
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/grid/GridService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/grid/GridService.adoc
index 2da9b24..1992705 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/grid/GridService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/grid/GridService.adoc
@@ -61,20 +61,20 @@ Returns a default grid; eg where none can be loaded using _#load(Class)_ .
 --
 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 xref:system:generated:index/applib/annotation/MemberOrder.adoc[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 ( xref:system:generated:index/applib/annotation/DomainObjectLayout.adoc[DomainObjectLayout] , xref:system:generated:index/applib/annotation/ActionLayout.adoc[ActionLayout] [...]
+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 xref:system:generated:index/applib/annotation/DomainObjectLayout.adoc[DomainObjectLayout] , xref:system:generated:index/applib/annotation/ActionLayout.adoc[ActionLayout] , xref:system:generated:index/applib/annotation/PropertyLayout.adoc[PropertyLayout] and xref:system:generated:index/applib/annotation/CollectionLayout.adoc[CollectionLayout] .
+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 xref:system:generated:index/applib/annotation/MemberOrder.adoc[MemberOrder] annotations, to be required in the domain class itself.
+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 ( xref:system:generated:index/applib/annotation/DomainObjectLayout.adoc[DomainObjectLayout] , xref:system:generated:index/applib/annotation/ActionLayout.adoc[ActionLayout] , xref:system:generated:index/applib/annotation/PropertyLayout.adoc[PropertyLayout] , xref:system:generated:index/applib/annotation/CollectionLayout.adoc[CollectionLayout] , but also xref:system:generated:inde [...]
+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/applib/services/homepage/HomePageResolverService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
index e87ee7c..f820935 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
@@ -1,7 +1,7 @@
 = HomePageResolverService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Returns a view model annotated with xref:system:generated:index/applib/annotation/HomePage.adoc[HomePage] .
+Returns a view model annotated with _HomePage_ .
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/i18n/TranslatableString.adoc b/antora/components/system/modules/generated/pages/index/applib/services/i18n/TranslatableString.adoc
index 705d42b..e59668c 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/i18n/TranslatableString.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/i18n/TranslatableString.adoc
@@ -34,12 +34,12 @@ class TranslatableString {
 }
 ----
 
-<.> `[teal]#*_tr_*#(String pattern, Object... paramArgs)` : `xref:system:generated:index/applib/services/i18n/TranslatableString.adoc[TranslatableString]`
+<.> `[teal]#*_tr_*#(String pattern, Object... paramArgs)` : `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/applib/services/i18n/TranslatableString.adoc[TranslatableString]`
+<.> `[teal]#*_trn_*#(String singularPattern, String pluralPattern, int number, Object... paramArgs)` : `TranslatableString`
 +
 --
 A translatable string with different patterns for singular and plural forms, selected automatically by the number
@@ -59,7 +59,7 @@ The plural text as provided in the _#trn(String, String, int, Object...) factory
 --
 The arguments; excluded from _#equals(Object)_ comparison.
 --
-<.> `[teal]#*translate*#(xref:system:generated:index/applib/services/i18n/TranslationService.adoc[TranslationService] translationService, String context)` : `String`
+<.> `[teal]#*translate*#(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()_ .
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/iactn/ExecutionContext.adoc b/antora/components/system/modules/generated/pages/index/applib/services/iactn/ExecutionContext.adoc
index fb1c5cf..0803b50 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/iactn/ExecutionContext.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/iactn/ExecutionContext.adoc
@@ -12,9 +12,9 @@ class ExecutionContext {
 }
 ----
 
-<.> `[teal]#*_ofUserWithSystemDefaults_*#(xref:system:generated:index/applib/services/user/UserMemento.adoc[UserMemento] user)` : `xref:system:generated:index/applib/services/iactn/ExecutionContext.adoc[ExecutionContext]`
+<.> `[teal]#*_ofUserWithSystemDefaults_*#(UserMemento user)` : `ExecutionContext`
 +
 --
-Creates a new xref:system:generated:index/applib/services/iactn/ExecutionContext.adoc[ExecutionContext] with the specified user and system defaults for clock, locale and time-zone.
+Creates a new _ExecutionContext_ with the specified user and system defaults for clock, locale and time-zone.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/iactn/Interaction.adoc b/antora/components/system/modules/generated/pages/index/applib/services/iactn/Interaction.adoc
index 570945d..0617c21 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/iactn/Interaction.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/iactn/Interaction.adoc
@@ -3,11 +3,11 @@
 
 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/applib/services/command/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.
+The distinction between _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/applib/services/command/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/applib/services/command/Command.adoc[Command] for backward compatibility only (and have been deprecated).
+To confuse matters slightly, historically the _Command_ interface defines members (specifically: _Command#getStartedAt()_ , _Command#getCompletedAt()_ , _Command#getResult()_ , _Command#getException()_ ) which logically belong to this class instead; they remain in _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/applib/services/command/Command.adoc[Command] object itself.
+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 _Command_ object itself.
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/iactn/InteractionContext.adoc b/antora/components/system/modules/generated/pages/index/applib/services/iactn/InteractionContext.adoc
index c7b19641..184ce95 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/iactn/InteractionContext.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/iactn/InteractionContext.adoc
@@ -1,7 +1,7 @@
 = InteractionContext : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Provides the current thread's xref:system:generated:index/applib/services/iactn/Interaction.adoc[Interaction] .
+Provides the current thread's _Interaction_ .
 
 .Java Sources
 [source,java]
@@ -14,9 +14,9 @@ interface InteractionContext {
 }
 ----
 
-<.> `[teal]#*currentInteraction*#()` : `Optional<xref:system:generated:index/applib/services/iactn/Interaction.adoc[Interaction]>`
+<.> `[teal]#*currentInteraction*#()` : `Optional<Interaction>`
 +
 --
-Optionally, the currently active xref:system:generated:index/applib/services/iactn/Interaction.adoc[Interaction] for the calling thread.
+Optionally, the currently active _Interaction_ for the calling thread.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/layout/LayoutService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/layout/LayoutService.adoc
index 1517344..9a5ba85 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/layout/LayoutService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/layout/LayoutService.adoc
@@ -27,6 +27,6 @@ Obtains a zip file of the serialized XML of the layouts (grids) of all domain en
 <.> `[teal]#*toMenuBarsXml*#(Type type)` : `String`
 +
 --
-Obtains the serialized XML form of the menu bars layout ( xref:system:generated:index/applib/services/menu/MenuBarsService.adoc[MenuBarsService] ).
+Obtains the serialized XML form of the menu bars layout ( _MenuBarsService_ ).
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/message/MessageService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/message/MessageService.adoc
index e2f2f8d..07c6eef 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/message/MessageService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/message/MessageService.adoc
@@ -31,14 +31,14 @@ interface MessageService {
 --
 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/applib/services/i18n/TranslatableString.adoc[TranslatableString] message, Class<?> contextClass, String contextMethod)` : `String`
+<.> `[teal]#*informUser*#(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/applib/services/i18n/TranslatableString.adoc[TranslatableString] message, String translationContext)` : `String`
+<.> `[teal]#*informUser*#(TranslatableString message, String translationContext)` : `String`
 +
 --
 Override of _MessageService#informUser(TranslatableString, Class, String)_ , but with last two parameters combined into a context string.
@@ -48,14 +48,14 @@ Override of _MessageService#informUser(TranslatableString, Class, String)_ , but
 --
 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/applib/services/i18n/TranslatableString.adoc[TranslatableString] message, Class<?> contextClass, String contextMethod)` : `String`
+<.> `[teal]#*warnUser*#(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/applib/services/i18n/TranslatableString.adoc[TranslatableString] message, String translationContext)` : `String`
+<.> `[teal]#*warnUser*#(TranslatableString message, String translationContext)` : `String`
 +
 --
 Override of _MessageService#warnUser(TranslatableString, Class, String)_ , but with last two parameters combined into a context string.
@@ -65,14 +65,14 @@ Override of _MessageService#warnUser(TranslatableString, Class, String)_ , but w
 --
 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/applib/services/i18n/TranslatableString.adoc[TranslatableString] message, Class<?> contextClass, String contextMethod)` : `String`
+<.> `[teal]#*raiseError*#(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/applib/services/i18n/TranslatableString.adoc[TranslatableString] message, String translationContext)` : `String`
+<.> `[teal]#*raiseError*#(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/applib/services/metamodel/MetaModelService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/metamodel/MetaModelService.adoc
index 985778c..5a3f0ef 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/metamodel/MetaModelService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/metamodel/MetaModelService.adoc
@@ -38,12 +38,12 @@ Provides a reverse lookup of a domain class' object type, as defined by _DomainO
 --
 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/applib/services/metamodel/DomainModel.adoc[DomainModel]`
+<.> `[teal]#*getDomainModel*#()` : `DomainModel`
 +
 --
 Returns a list of representations of each of member of each domain class.
 
-Used by xref:system:generated:index/applib/services/metamodel/MetaModelServiceMenu.adoc[MetaModelServiceMenu] to return a downloadable CSV.
+Used by _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/applib/services/publishing/spi/CommandSubscriber.adoc b/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/CommandSubscriber.adoc
index 27e3106..a5a06a1 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/CommandSubscriber.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/CommandSubscriber.adoc
@@ -1,7 +1,7 @@
 = CommandSubscriber : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Part of the _Publishing SPI_ . A component to receive xref:system:generated:index/applib/services/command/Command.adoc[Command] s (with publishing enabled) that just completed.
+Part of the _Publishing SPI_ . A component to receive _Command_ s (with publishing enabled) that just completed.
 
 .Java Sources
 [source,java]
@@ -12,7 +12,7 @@ interface CommandSubscriber {
 }
 ----
 
-<.> `[teal]#*onCompleted*#(xref:system:generated:index/applib/services/command/Command.adoc[Command] command)` : `void`
+<.> `[teal]#*onCompleted*#(Command command)` : `void`
 +
 --
 Notifies that the command has completed.
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityChangesSubscriber.adoc b/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityChangesSubscriber.adoc
index 0bc0185..9880e9f 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityChangesSubscriber.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityChangesSubscriber.adoc
@@ -12,7 +12,7 @@ interface EntityChangesSubscriber {
 }
 ----
 
-<.> `[teal]#*onChanging*#(xref:system:generated:index/applib/services/publishing/spi/EntityChanges.adoc[EntityChanges] entityChanges)` : `void`
+<.> `[teal]#*onChanging*#(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/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
index 98310a4..19763d8 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
@@ -1,7 +1,7 @@
 = EntityPropertyChange : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
+Immutable data record for _EntityPropertyChangeSubscriber_ s.
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc b/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc
index 3cb6789..7e3a9b0 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc
@@ -12,7 +12,7 @@ interface EntityPropertyChangeSubscriber {
 }
 ----
 
-<.> `[teal]#*onChanging*#(xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChange.adoc[EntityPropertyChange] entityPropertyChange)` : `void`
+<.> `[teal]#*onChanging*#(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/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
index dcdaf9a..7d5acf9 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
@@ -1,8 +1,6 @@
 = EntityState : _enum_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
-
 .Java Sources
 [source,java]
 ----
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/RepositoryService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/repository/RepositoryService.adoc
index 9a14d0b..4f93d82 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/RepositoryService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/repository/RepositoryService.adoc
@@ -52,7 +52,7 @@ interface RepositoryService {
 }
 ----
 
-<.> `[teal]#*getEntityState*#(Object object)` : `xref:system:generated:index/applib/services/repository/EntityState.adoc[EntityState]`
+<.> `[teal]#*getEntityState*#(Object object)` : `EntityState`
 +
 --
 Returns the EntityState of given _object_ . Returns _EntityState#NOT_PERSISTABLE_ for _object==null_ .
@@ -117,10 +117,10 @@ If there are no instances the list will be empty. This method creates a new _Lis
 
 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>(xref:system:generated:index/applib/query/Query.adoc[Query]<T> query)` : `List<T>`
+<.> `[teal]#*allMatches*#<T>(Query<T> query)` : `List<T>`
 +
 --
-Returns all the instances that match the given xref:system:generated:index/applib/query/Query.adoc[Query] .
+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.
 
@@ -135,7 +135,7 @@ If no instance is found then _Optional#empty()_ will be return, while if there i
 
 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>(xref:system:generated:index/applib/query/Query.adoc[Query]<T> query)` : `Optional<T>`
+<.> `[teal]#*uniqueMatch*#<T>(Query<T> query)` : `Optional<T>`
 +
 --
 Find the only instance that matches the provided query.
@@ -153,7 +153,7 @@ If no instance is found then _Optional#empty()_ will be return, while if there i
 
 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>(xref:system:generated:index/applib/query/Query.adoc[Query]<T> query)` : `Optional<T>`
+<.> `[teal]#*firstMatch*#<T>(Query<T> query)` : `Optional<T>`
 +
 --
 Find the only instance that matches the provided query, if any..
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/sudo/SudoService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/sudo/SudoService.adoc
index 97bce57..e47fb8e 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/sudo/SudoService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/sudo/SudoService.adoc
@@ -1,7 +1,7 @@
 = SudoService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Intended only for use by fixture scripts and integration tests, allows a block of code to execute while the xref:system:generated:index/applib/services/user/UserService.adoc[UserService] 's _UserService#currentUser() getUser()_ method returns the specified user/role as the effective user.
+Intended only for use by fixture scripts and integration tests, allows a block of code to execute while the _UserService_ 's _UserService#currentUser() getUser()_ method returns the specified user/role as the effective user.
 
 .Java Sources
 [source,java]
@@ -16,19 +16,19 @@ interface SudoService {
 }
 ----
 
-<.> `[teal]#*ACCESS_ALL_ROLE*#` : `xref:system:generated:index/applib/services/user/RoleMemento.adoc[RoleMemento]`
+<.> `[teal]#*ACCESS_ALL_ROLE*#` : `RoleMemento`
 +
 --
 If included in the list of roles, then will disable security checks (can view and use all object members).
 --
-<.> `[teal]#*call*#<T>(UnaryOperator<xref:system:generated:index/applib/services/iactn/ExecutionContext.adoc[ExecutionContext]> sudoMapper, Callable<T> supplier)` : `T`
+<.> `[teal]#*call*#<T>(UnaryOperator<ExecutionContext> sudoMapper, Callable<T> supplier)` : `T`
 +
 --
-Executes the supplied block, with the xref:system:generated:index/applib/services/user/UserService.adoc[UserService] returning the specified user.
+Executes the supplied block, with the _UserService_ returning the specified user.
 --
-<.> `[teal]#*run*#(UnaryOperator<xref:system:generated:index/applib/services/iactn/ExecutionContext.adoc[ExecutionContext]> sudoMapper, ThrowingRunnable runnable)` : `void`
+<.> `[teal]#*run*#(UnaryOperator<ExecutionContext> sudoMapper, ThrowingRunnable runnable)` : `void`
 +
 --
-Executes the supplied block, with the xref:system:generated:index/applib/services/user/UserService.adoc[UserService] returning the specified user.
+Executes the supplied block, with the _UserService_ returning the specified user.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/applib/services/tablecol/TableColumnOrderForCollectionTypeAbstract.adoc
similarity index 70%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/applib/services/tablecol/TableColumnOrderForCollectionTypeAbstract.adoc
index dcdaf9a..78a8791 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/tablecol/TableColumnOrderForCollectionTypeAbstract.adoc
@@ -1,28 +1,14 @@
-= EntityState : _enum_
+= TableColumnOrderForCollectionTypeAbstract : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
-
 .Java Sources
 [source,java]
 ----
-enum EntityState {
-
-  NOT_PERSISTABLE
-
-  PERSISTABLE_ATTACHED
-
-  PERSISTABLE_DETACHED
-
-  PERSISTABLE_DESTROYED
-
-  boolean isPersistable()
-
-  boolean isAttached()
+class TableColumnOrderForCollectionTypeAbstract {
 
-  boolean isDetached()
+  List<String> orderParented(final Object parent, final String collectionId, final Class<?> collectionType, final List<String> propertyIds)
 
-  boolean isDestroyed()
+  List<String> orderStandalone(final Class<?> collectionType, final List<String> propertyIds)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/services/urlencoding/UrlEncodingServiceUsingBaseEncodingAbstract.adoc
similarity index 81%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/services/urlencoding/UrlEncodingServiceUsingBaseEncodingAbstract.adoc
index 78f204d..6d447d7 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/urlencoding/UrlEncodingServiceUsingBaseEncodingAbstract.adoc
@@ -1,12 +1,14 @@
-= ResourceCoordinates : _class_
+= UrlEncodingServiceUsingBaseEncodingAbstract : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class UrlEncodingServiceUsingBaseEncodingAbstract {
 
-  int compareTo(final ResourceCoordinates other)
+  String encode(final byte[] bytes)
+
+  byte[] decode(final String str)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/user/RoleMemento.adoc b/antora/components/system/modules/generated/pages/index/applib/services/user/RoleMemento.adoc
index cb4274c..7b06a8e 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/user/RoleMemento.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/user/RoleMemento.adoc
@@ -1,7 +1,7 @@
 = RoleMemento : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable serializable value held by xref:system:generated:index/applib/services/user/UserMemento.adoc[UserMemento] .
+Immutable serializable value held by _UserMemento_ .
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/user/UserMemento.adoc b/antora/components/system/modules/generated/pages/index/applib/services/user/UserMemento.adoc
index 117dd65..0a3e068 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/user/UserMemento.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/user/UserMemento.adoc
@@ -38,32 +38,32 @@ class UserMemento {
 }
 ----
 
-<.> `[teal]#*UserMemento*#(String name, Stream<xref:system:generated:index/applib/services/user/RoleMemento.adoc[RoleMemento]> roles)`
+<.> `[teal]#*UserMemento*#(String name, Stream<RoleMemento> roles)`
 +
 --
 Creates a new user with the specified name and assigned roles.
 --
-<.> `[teal]#*_system_*#()` : `xref:system:generated:index/applib/services/user/UserMemento.adoc[UserMemento]`
+<.> `[teal]#*_system_*#()` : `UserMemento`
 +
 --
 The framework's internal user with unrestricted privileges.
 --
-<.> `[teal]#*_ofName_*#(String name)` : `xref:system:generated:index/applib/services/user/UserMemento.adoc[UserMemento]`
+<.> `[teal]#*_ofName_*#(String name)` : `UserMemento`
 +
 --
 Creates a new user with the specified name and no roles.
 --
-<.> `[teal]#*_ofNameAndRoles_*#(String name, xref:system:generated:index/applib/services/user/RoleMemento.adoc[RoleMemento]... roles)` : `xref:system:generated:index/applib/services/user/UserMemento.adoc[UserMemento]`
+<.> `[teal]#*_ofNameAndRoles_*#(String name, RoleMemento... roles)` : `UserMemento`
 +
 --
 Creates a new user with the specified name and assigned roles.
 --
-<.> `[teal]#*_ofNameAndRoleNames_*#(String name, String... roleNames)` : `xref:system:generated:index/applib/services/user/UserMemento.adoc[UserMemento]`
+<.> `[teal]#*_ofNameAndRoleNames_*#(String name, String... roleNames)` : `UserMemento`
 +
 --
 Creates a new user with the specified name and assigned role names.
 --
-<.> `[teal]#*_ofNameAndRoleNames_*#(String name, Stream<String> roleNames)` : `xref:system:generated:index/applib/services/user/UserMemento.adoc[UserMemento]`
+<.> `[teal]#*_ofNameAndRoleNames_*#(String name, Stream<String> roleNames)` : `UserMemento`
 +
 --
 Creates a new user with the specified name and assigned role names.
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/user/UserService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/user/UserService.adoc
index b4f2b89..f5818f2 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/user/UserService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/user/UserService.adoc
@@ -1,9 +1,9 @@
 = UserService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-The xref:system:generated:index/applib/services/user/UserService.adoc[UserService] allows the domain object to obtain the identity of the user interacting with said object.
+The _UserService_ allows the domain object to obtain the identity of the user interacting with said object.
 
-If xref:system:generated:index/applib/services/sudo/SudoService.adoc[SudoService] has been used to temporarily override the user and/or roles, then this service will report the overridden values instead.
+If _SudoService_ has been used to temporarily override the user and/or roles, then this service will report the overridden values instead.
 
 .Java Sources
 [source,java]
@@ -22,17 +22,17 @@ interface UserService {
 }
 ----
 
-<.> `[teal]#*currentUser*#()` : `Optional<xref:system:generated:index/applib/services/user/UserMemento.adoc[UserMemento]>`
+<.> `[teal]#*currentUser*#()` : `Optional<UserMemento>`
 +
 --
-Optionally gets the details about the current user, based on whether an xref:system:generated:index/applib/services/iactn/ExecutionContext.adoc[ExecutionContext] can be found with the current thread's context.
+Optionally gets the details about the current user, based on whether an _ExecutionContext_ can be found with the current thread's context.
 --
-<.> `[teal]#*getUser*#()` : `xref:system:generated:index/applib/services/user/UserMemento.adoc[UserMemento]`
+<.> `[teal]#*getUser*#()` : `UserMemento`
 +
 --
 Gets the details about the current user.
 --
-<.> `[teal]#*currentUserElseFail*#()` : `xref:system:generated:index/applib/services/user/UserMemento.adoc[UserMemento]`
+<.> `[teal]#*currentUserElseFail*#()` : `UserMemento`
 +
 --
 Gets the details about the current user.
@@ -40,7 +40,7 @@ Gets the details about the current user.
 <.> `[teal]#*currentUserName*#()` : `Optional<String>`
 +
 --
-Optionally gets the the current user's name, based on whether an xref:system:generated:index/applib/services/iactn/ExecutionContext.adoc[ExecutionContext] can be found with the current thread's context.
+Optionally gets the the current user's name, based on whether an _ExecutionContext_ can be found with the current thread's context.
 --
 <.> `[teal]#*currentUserNameElseNobody*#()` : `String`
 +
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/userreg/UserRegistrationService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/userreg/UserRegistrationService.adoc
index 0ca86ab..5be5fa3 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/userreg/UserRegistrationService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/userreg/UserRegistrationService.adoc
@@ -3,7 +3,7 @@
 
 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/applib/services/userreg/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 [...]
+User registration also requires that the _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).
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/applib/services/userreg/events/EmailEventAbstract.adoc
similarity index 72%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/applib/services/userreg/events/EmailEventAbstract.adoc
index dcdaf9a..3e5f9fb 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/userreg/events/EmailEventAbstract.adoc
@@ -1,28 +1,20 @@
-= EntityState : _enum_
+= EmailEventAbstract : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
+An event sent to all services interested in user registration
 
 .Java Sources
 [source,java]
 ----
-enum EntityState {
+class EmailEventAbstract {
 
-  NOT_PERSISTABLE
+  EmailEventAbstract(final String email, final String confirmationUrl, final String applicationName)
 
-  PERSISTABLE_ATTACHED
+  String getEmail()
 
-  PERSISTABLE_DETACHED
+  String getConfirmationUrl()
 
-  PERSISTABLE_DESTROYED
-
-  boolean isPersistable()
-
-  boolean isAttached()
-
-  boolean isDetached()
-
-  boolean isDestroyed()
+  String getApplicationName()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/WrapperFactory.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/WrapperFactory.adoc
index 8399284..3c1d15e 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/WrapperFactory.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/WrapperFactory.adoc
@@ -11,7 +11,7 @@ The 'wrap' is a runtime-code-generated proxy that wraps the underlying domain ob
 * 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/applib/services/wrapper/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/applib/services/wrapper/InvalidException.adoc[InvalidException] will be thrown.
+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 _HiddenException_ will be thrown. Similarly if an action has a `validate` method and the supplied arguments are invalid then a _InvalidException_ will be thrown.
 
 In addition, the following methods may also be called:
 
@@ -51,12 +51,12 @@ interface WrapperFactory {
 }
 ----
 
-<.> `[teal]#*wrap*#<T>(T domainObject, xref:system:generated:index/applib/services/wrapper/control/SyncControl.adoc[SyncControl] syncControl)` : `T`
+<.> `[teal]#*wrap*#<T>(T domainObject, SyncControl syncControl)` : `T`
 +
 --
 Provides the "wrapper" of a domain object against which to invoke the action.
 
-The provided xref:system:generated:index/applib/services/wrapper/control/SyncControl.adoc[SyncControl] determines whether business rules are checked first, and conversely whether the action is executed. There are therefore three typical cases:
+The provided _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
@@ -71,12 +71,12 @@ Otherwise, will do all the validations (raise exceptions as required etc.), but
 --
 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/applib/services/wrapper/control/SyncControl.adoc[SyncControl] syncControl)` : `T`
+<.> `[teal]#*wrapMixin*#<T>(Class<T> mixinClass, Object mixedIn, 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/applib/services/wrapper/control/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.
+The provided _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`
 +
@@ -95,32 +95,32 @@ If the object _#isWrapper(Object) is not wrapped_ , then should just return the
 --
 Whether the supplied object is a wrapper around a domain object.
 --
-<.> `[teal]#*asyncWrap*#<T, R>(T domainObject, xref:system:generated:index/applib/services/wrapper/control/AsyncControl.adoc[AsyncControl]<R> asyncControl)` : `T`
+<.> `[teal]#*asyncWrap*#<T, R>(T domainObject, 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/applib/services/wrapper/control/AsyncControl.adoc[AsyncControl]<R> asyncControl)` : `T`
+<.> `[teal]#*asyncWrapMixin*#<T, R>(Class<T> mixinClass, Object mixedIn, 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/applib/services/wrapper/listeners/InteractionListener.adoc[InteractionListener]>`
+<.> `[teal]#*getListeners*#()` : `List<InteractionListener>`
 +
 --
-All xref:system:generated:index/applib/services/wrapper/listeners/InteractionListener.adoc[InteractionListener] s that have been registered using _#addInteractionListener(InteractionListener)_ .
+All _InteractionListener_ s that have been registered using _#addInteractionListener(InteractionListener)_ .
 --
-<.> `[teal]#*addInteractionListener*#(xref:system:generated:index/applib/services/wrapper/listeners/InteractionListener.adoc[InteractionListener] listener)` : `boolean`
+<.> `[teal]#*addInteractionListener*#(InteractionListener listener)` : `boolean`
 +
 --
-Registers an xref:system:generated:index/applib/services/wrapper/listeners/InteractionListener.adoc[InteractionListener] , to be notified of interactions on all wrappers.
+Registers an _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/applib/services/wrapper/listeners/InteractionListener.adoc[InteractionListener] listener)` : `boolean`
+<.> `[teal]#*removeInteractionListener*#(InteractionListener listener)` : `boolean`
 +
 --
-Remove an xref:system:generated:index/applib/services/wrapper/listeners/InteractionListener.adoc[InteractionListener] , to no longer be notified of interactions on wrappers.
+Remove an _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/applib/services/wrapper/WrappingObject.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/WrappingObject.adoc
index a719fc8..548921b 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/WrappingObject.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/WrappingObject.adoc
@@ -34,10 +34,10 @@ NOTE: domain classes may not have a method with this name. The `__isis_` prefix
 
  *NOTE: there is a string-literal reference to this name `DomainObjectInvocationHandler` , so it should not be changed.* .
 --
-<.> `[teal]#*__isis_executionModes*#()` : `ImmutableEnumSet<xref:system:generated:index/applib/services/wrapper/control/ExecutionMode.adoc[ExecutionMode]>`
+<.> `[teal]#*__isis_executionModes*#()` : `ImmutableEnumSet<ExecutionMode>`
 +
 --
-The _EnumSetexecution modes_ inferred from the xref:system:generated:index/applib/services/wrapper/control/SyncControl.adoc[SyncControl] with which this wrapper was _WrapperFactory#wrap(Object, SyncControl) created_ .
+The _EnumSetexecution modes_ inferred from the _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/applib/services/wrapper/control/ControlAbstract.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ControlAbstract.adoc
index 1d49422..7cd684a 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ControlAbstract.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ControlAbstract.adoc
@@ -18,7 +18,7 @@ class ControlAbstract {
 }
 ----
 
-<.> `[teal]#*getExecutionModes*#()` : `ImmutableEnumSet<xref:system:generated:index/applib/services/wrapper/control/ExecutionMode.adoc[ExecutionMode]>`
+<.> `[teal]#*getExecutionModes*#()` : `ImmutableEnumSet<ExecutionMode>`
 +
 --
 Not API.
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ExceptionHandlerAbstract.adoc
similarity index 88%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ExceptionHandlerAbstract.adoc
index 78f204d..e69bd69 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ExceptionHandlerAbstract.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= ExceptionHandlerAbstract : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class ExceptionHandlerAbstract {
 
-  int compareTo(final ResourceCoordinates other)
+  Logger getLog()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/SyncControl.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/SyncControl.adoc
index 5201c81..9952b38 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/SyncControl.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/SyncControl.adoc
@@ -16,7 +16,7 @@ class SyncControl {
 }
 ----
 
-<.> `[teal]#*getExecutionModes*#()` : `ImmutableEnumSet<xref:system:generated:index/applib/services/wrapper/control/ExecutionMode.adoc[ExecutionMode]>`
+<.> `[teal]#*getExecutionModes*#()` : `ImmutableEnumSet<ExecutionMode>`
 +
 --
 Not API.
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ProposedHolderEvent.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/AccessEvent.adoc
similarity index 65%
copy from antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ProposedHolderEvent.adoc
copy to antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/AccessEvent.adoc
index 1eeb50d..c29864a 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ProposedHolderEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/AccessEvent.adoc
@@ -1,16 +1,16 @@
-= ProposedHolderEvent : _interface_
+= AccessEvent : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
- _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/applib/services/wrapper/events/CollectionAddToEvent.adoc[CollectionAddToEvent] and xref:system:generated:index/applib/services/wrapper/events/PropertyModifyEvent.adoc[PropertyModifyEvent] ).
+ _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents an access (reading) of a property, collection or title.
+
+Analogous to _ValidityEvent_ (which corresponds to modifying a property or collection etc), however the _#getReason()_ will always be `null` . (If access is not allowed then a vetoing _VisibilityEvent_ would have been fired).
 
 .Java Sources
 [source,java]
 ----
-interface ProposedHolderEvent {
-
-  Object getProposed()
+class AccessEvent {
 
-  String getMemberNaturalName()
+  AccessEvent(final Object source, final Identifier identifier)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ActionArgumentEvent.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ActionArgumentEvent.adoc
index 3a4d146..1b30f12 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ActionArgumentEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ActionArgumentEvent.adoc
@@ -5,7 +5,7 @@
 
 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/applib/services/wrapper/events/ActionInvocationEvent.adoc[ActionInvocationEvent] .
+Called once per argument, and before _ActionInvocationEvent_ .
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ActionInvocationEvent.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ActionInvocationEvent.adoc
index 618b488..d18429f 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ActionInvocationEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ActionInvocationEvent.adoc
@@ -1,11 +1,11 @@
 = ActionInvocationEvent : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
- _Supported only by xref:system:generated:index/applib/services/wrapper/WrapperFactory.adoc[WrapperFactory] service,_ represents a check as to whether a particular argument for an action is valid or not.
+ _Supported only by _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/applib/services/wrapper/events/ActionArgumentEvent.adoc[ActionArgumentEvent] s.
+Called after each of the _ActionArgumentEvent_ s.
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ActionVisibilityEvent.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ActionVisibilityEvent.adoc
index d7db002..17aa569 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ActionVisibilityEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ActionVisibilityEvent.adoc
@@ -1,7 +1,7 @@
 = ActionVisibilityEvent : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
- _Supported only by xref:system:generated:index/applib/services/wrapper/WrapperFactory.adoc[WrapperFactory] service,_ represents a check as to whether an action is visible or has been hidden.
+ _Supported only by _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/applib/services/wrapper/events/CollectionAccessEvent.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/CollectionAccessEvent.adoc
index 7069efa..ee01c57 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/CollectionAccessEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/CollectionAccessEvent.adoc
@@ -3,7 +3,7 @@
 
  _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents an access (reading) of a collection.
 
-Analogous to xref:system:generated:index/applib/services/wrapper/events/CollectionAddToEvent.adoc[CollectionAddToEvent] or xref:system:generated:index/applib/services/wrapper/events/CollectionRemoveFromEvent.adoc[CollectionRemoveFromEvent] , however the _#getReason()_ will always be `null` . (If access is not allowed then a vetoing _CollectionVisibilityEvent_ would have been fired).
+Analogous to _CollectionAddToEvent_ or _CollectionRemoveFromEvent_ , however the _#getReason()_ will always be `null` . (If access is not allowed then a vetoing _CollectionVisibilityEvent_ would have been fired).
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/InteractionEvent.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/InteractionEvent.adoc
index 4207e9b..cc54885 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/InteractionEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/InteractionEvent.adoc
@@ -45,12 +45,12 @@ class InteractionEvent {
 --
 The domain object (pojo) against which the interaction occurred.
 --
-<.> `[teal]#*getIdentifier*#()` : `xref:system:generated:index/applib/Identifier.adoc[Identifier]`
+<.> `[teal]#*getIdentifier*#()` : `Identifier`
 +
 --
-The xref:system:generated:index/applib/Identifier.adoc[Identifier] of the feature of the object being interacted with.
+The _Identifier_ of the feature of the object being interacted with.
 
-Will be consistent with the subclass of xref:system:generated:index/applib/services/wrapper/events/InteractionEvent.adoc[InteractionEvent] . So for example a xref:system:generated:index/applib/services/wrapper/events/PropertyModifyEvent.adoc[PropertyModifyEvent] will have an xref:system:generated:index/applib/Identifier.adoc[Identifier] that identifies the property being modified.
+Will be consistent with the subclass of _InteractionEvent_ . So for example a _PropertyModifyEvent_ will have an _Identifier_ that identifies the property being modified.
 --
 <.> `[teal]#*getClassName*#()` : `String`
 +
@@ -113,8 +113,8 @@ Whether this interaction has been vetoed (meaning that _#getReason()_ and _#getA
 
 The interpretation of this depends on the subclass:
 
-* for xref:system:generated:index/applib/services/wrapper/events/VisibilityEvent.adoc[VisibilityEvent] , a veto means that the feature (property, collection, action) is hidden
-* for xref:system:generated:index/applib/services/wrapper/events/UsabilityEvent.adoc[UsabilityEvent] , a veto means that the feature is disabled
-* for xref:system:generated:index/applib/services/wrapper/events/ValidityEvent.adoc[ValidityEvent] , a veto means that the proposed modification (property value, object added/removed, action argument) is invalid
+* for _VisibilityEvent_ , a veto means that the feature (property, collection, action) is hidden
+* for _UsabilityEvent_ , a veto means that the feature is disabled
+* for _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/applib/services/wrapper/events/PropertyAccessEvent.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/PropertyAccessEvent.adoc
index 7dd07d3..7b9e1fc 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/PropertyAccessEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/PropertyAccessEvent.adoc
@@ -3,7 +3,7 @@
 
  _Supported only by _org.apache.isis.applib.services.wrapper.WrapperFactory_ service,_ represents an access (reading) of a property.
 
-Analogous to xref:system:generated:index/applib/services/wrapper/events/PropertyModifyEvent.adoc[PropertyModifyEvent] , however the _#getReason()_ will always be `null` . (If access is not allowed then a xref:system:generated:index/applib/services/wrapper/events/PropertyVisibilityEvent.adoc[PropertyVisibilityEvent] would have been fired).
+Analogous to _PropertyModifyEvent_ , however the _#getReason()_ will always be `null` . (If access is not allowed then a _PropertyVisibilityEvent_ would have been fired).
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ProposedHolderEvent.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ProposedHolderEvent.adoc
index 1eeb50d..4e19a03 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ProposedHolderEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/ProposedHolderEvent.adoc
@@ -1,7 +1,7 @@
 = ProposedHolderEvent : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
- _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/applib/services/wrapper/events/CollectionAddToEvent.adoc[CollectionAddToEvent] and xref:system:generated:index/applib/services/wrapper/events/PropertyModifyEvent.adoc[PropertyModifyEvent] ).
+ _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 _CollectionAddToEvent_ and _PropertyModifyEvent_ ).
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/VisibilityEvent.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/VisibilityEvent.adoc
index b89c99d..9a352fd 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/VisibilityEvent.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/events/VisibilityEvent.adoc
@@ -1,7 +1,7 @@
 = VisibilityEvent : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
- _Supported only by xref:system:generated:index/applib/services/wrapper/WrapperFactory.adoc[WrapperFactory] service,_ represents a check to determine whether a member of an object is visible or has been hidden.
+ _Supported only by _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/applib/services/wrapper/listeners/InteractionAdapter.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/listeners/InteractionAdapter.adoc
index 0f44e84..48c03d5 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/listeners/InteractionAdapter.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/listeners/InteractionAdapter.adoc
@@ -1,7 +1,7 @@
 = InteractionAdapter : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Provides no-op implementations of each of the methods within xref:system:generated:index/applib/services/wrapper/listeners/InteractionListener.adoc[InteractionListener] , to simplify the creation of new listeners.
+Provides no-op implementations of each of the methods within _InteractionListener_ , to simplify the creation of new listeners.
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/listeners/InteractionListener.adoc b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/listeners/InteractionListener.adoc
index ee0b5e7..4ba80fa 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/listeners/InteractionListener.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/wrapper/listeners/InteractionListener.adoc
@@ -40,34 +40,34 @@ interface InteractionListener {
 }
 ----
 
-<.> `[teal]#*objectTitleRead*#(xref:system:generated:index/applib/services/wrapper/events/ObjectTitleEvent.adoc[ObjectTitleEvent] ev)` : `void`
+<.> `[teal]#*objectTitleRead*#(ObjectTitleEvent ev)` : `void`
 +
 --
 The title was read.
 --
-<.> `[teal]#*objectPersisted*#(xref:system:generated:index/applib/services/wrapper/events/ObjectValidityEvent.adoc[ObjectValidityEvent] ev)` : `void`
+<.> `[teal]#*objectPersisted*#(ObjectValidityEvent ev)` : `void`
 +
 --
 The object was persisted (or an attempt to persist it was made).
 --
-<.> `[teal]#*propertyVisible*#(xref:system:generated:index/applib/services/wrapper/events/PropertyVisibilityEvent.adoc[PropertyVisibilityEvent] ev)` : `void`
+<.> `[teal]#*propertyVisible*#(PropertyVisibilityEvent ev)` : `void`
 +
 --
 A check was made to determine if a property was visible.
 --
-<.> `[teal]#*propertyUsable*#(xref:system:generated:index/applib/services/wrapper/events/PropertyUsabilityEvent.adoc[PropertyUsabilityEvent] ev)` : `void`
+<.> `[teal]#*propertyUsable*#(PropertyUsabilityEvent ev)` : `void`
 +
 --
 A check was made to determine if a property was usable.
 --
-<.> `[teal]#*propertyAccessed*#(xref:system:generated:index/applib/services/wrapper/events/PropertyAccessEvent.adoc[PropertyAccessEvent] ev)` : `void`
+<.> `[teal]#*propertyAccessed*#(PropertyAccessEvent ev)` : `void`
 +
 --
 A property was read.
 
-Unlike most other events, a xref:system:generated:index/applib/services/wrapper/events/PropertyAccessEvent.adoc[PropertyAccessEvent] will never have been vetoed (that is, _PropertyAccessEvent#isVeto()_ will always be `false` ).
+Unlike most other events, a _PropertyAccessEvent_ will never have been vetoed (that is, _PropertyAccessEvent#isVeto()_ will always be `false` ).
 --
-<.> `[teal]#*propertyModified*#(xref:system:generated:index/applib/services/wrapper/events/PropertyModifyEvent.adoc[PropertyModifyEvent] ev)` : `void`
+<.> `[teal]#*propertyModified*#(PropertyModifyEvent ev)` : `void`
 +
 --
 A property was modified (or an attempt to modify it was made)
@@ -81,59 +81,59 @@ A check was made to determine if a collection was visible.
 
 Will be fired prior to _#collectionUsable(CollectionUsabilityEvent)_ .
 --
-<.> `[teal]#*collectionUsable*#(xref:system:generated:index/applib/services/wrapper/events/CollectionUsabilityEvent.adoc[CollectionUsabilityEvent] ev)` : `void`
+<.> `[teal]#*collectionUsable*#(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/applib/services/wrapper/events/CollectionAccessEvent.adoc[CollectionAccessEvent] ev)` : `void`
+<.> `[teal]#*collectionAccessed*#(CollectionAccessEvent ev)` : `void`
 +
 --
 A collection was read.
 
-Unlike most other events, a xref:system:generated:index/applib/services/wrapper/events/CollectionAccessEvent.adoc[CollectionAccessEvent] will never have been vetoed (that is, _CollectionAccessEvent#isVeto()_ will always be `false` ).
+Unlike most other events, a _CollectionAccessEvent_ will never have been vetoed (that is, _CollectionAccessEvent#isVeto()_ will always be `false` ).
 --
-<.> `[teal]#*collectionAddedTo*#(xref:system:generated:index/applib/services/wrapper/events/CollectionAddToEvent.adoc[CollectionAddToEvent] ev)` : `void`
+<.> `[teal]#*collectionAddedTo*#(CollectionAddToEvent ev)` : `void`
 +
 --
 An object was added to the collection (or an attempt to add it was made).
 --
-<.> `[teal]#*collectionRemovedFrom*#(xref:system:generated:index/applib/services/wrapper/events/CollectionRemoveFromEvent.adoc[CollectionRemoveFromEvent] ev)` : `void`
+<.> `[teal]#*collectionRemovedFrom*#(CollectionRemoveFromEvent ev)` : `void`
 +
 --
 An object was removed from the collection (or an attempt to remove it was made).
 --
-<.> `[teal]#*collectionMethodInvoked*#(xref:system:generated:index/applib/services/wrapper/events/CollectionMethodEvent.adoc[CollectionMethodEvent] interactionEvent)` : `void`
+<.> `[teal]#*collectionMethodInvoked*#(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/applib/services/wrapper/events/ActionVisibilityEvent.adoc[ActionVisibilityEvent] interactionEvent)` : `void`
+<.> `[teal]#*actionVisible*#(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/applib/services/wrapper/events/ActionUsabilityEvent.adoc[ActionUsabilityEvent] ev)` : `void`
+<.> `[teal]#*actionUsable*#(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/applib/services/wrapper/events/ActionArgumentEvent.adoc[ActionArgumentEvent] ev)` : `void`
+<.> `[teal]#*actionArgument*#(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/applib/services/wrapper/events/ActionInvocationEvent.adoc[ActionInvocationEvent] ev)` : `void`
+<.> `[teal]#*actionInvoked*#(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/applib/services/xactn/TransactionService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/xactn/TransactionService.adoc
index c01bfca..f77d6b3 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/xactn/TransactionService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/xactn/TransactionService.adoc
@@ -18,12 +18,12 @@ interface TransactionService {
 }
 ----
 
-<.> `[teal]#*currentTransactionId*#()` : `Optional<xref:system:generated:index/applib/services/xactn/TransactionId.adoc[TransactionId]>`
+<.> `[teal]#*currentTransactionId*#()` : `Optional<TransactionId>`
 +
 --
 Optionally returns the unique identifier of the current thread's transaction, based on whether there is an active transaction associated with the current thread.
 --
-<.> `[teal]#*currentTransactionState*#()` : `xref:system:generated:index/applib/services/xactn/TransactionState.adoc[TransactionState]`
+<.> `[teal]#*currentTransactionState*#()` : `TransactionState`
 +
 --
 Returns the state of the current thread's transaction., or returns _TransactionState#NONE_ , if there is no active transaction associated with the current thread.
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/xactn/TransactionalProcessor.adoc b/antora/components/system/modules/generated/pages/index/applib/services/xactn/TransactionalProcessor.adoc
new file mode 100644
index 0000000..f6c7254
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/services/xactn/TransactionalProcessor.adoc
@@ -0,0 +1,59 @@
+= TransactionalProcessor : _interface_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+.Java Sources
+[source,java]
+----
+interface TransactionalProcessor {
+
+  Result<T> callTransactional(TransactionDefinition def, Callable<T> callable) // <.>
+
+  Result<Void> runTransactional(TransactionDefinition def, ThrowingRunnable runnable) // <.>
+
+  Result<T> callTransactional(Propagation propagation, Callable<T> callable) // <.>
+
+  Result<Void> runTransactional(Propagation propagation, ThrowingRunnable runnable) // <.>
+
+  Result<T> callWithinCurrentTransactionElseCreateNew(Callable<T> callable) // <.>
+
+  Result<Void> runWithinCurrentTransactionElseCreateNew(ThrowingRunnable runnable) // <.>
+}
+----
+
+<.> `[teal]#*callTransactional*#<T>(TransactionDefinition def, Callable<T> callable)` : `Result<T>`
++
+--
+Runs given _callable_ with a transactional boundary, where the detailed transactional behavior is governed by given _TransactionDefinition_ _def_ .
+--
+<.> `[teal]#*runTransactional*#(TransactionDefinition def, ThrowingRunnable runnable)` : `Result<Void>`
++
+--
+Runs given _runnable_ with a transactional boundary, where the detailed transactional behavior is governed by given _TransactionDefinition_ _def_ .
+--
+<.> `[teal]#*callTransactional*#<T>(Propagation propagation, Callable<T> callable)` : `Result<T>`
++
+--
+Runs given _callable_ with a transactional boundary, where the detailed transactional behavior is governed by given _Propagation_ _propagation_ .
+
+More fine grained control is given via _#callTransactional(TransactionDefinition, Callable)_
+--
+<.> `[teal]#*runTransactional*#(Propagation propagation, ThrowingRunnable runnable)` : `Result<Void>`
++
+--
+Runs given _runnable_ with a transactional boundary, where the detailed transactional behavior is governed by given _Propagation_ _propagation_ .
+
+More fine grained control is given via _#runTransactional(TransactionDefinition, Callable)_
+--
+<.> `[teal]#*callWithinCurrentTransactionElseCreateNew*#<T>(Callable<T> callable)` : `Result<T>`
++
+--
+Runs given _callable_ within an existing transactional boundary, or in the absence of such a boundary, creates a new one.
+
+In other words, support a current transaction, create a new one if none exists.
+--
+<.> `[teal]#*runWithinCurrentTransactionElseCreateNew*#(ThrowingRunnable runnable)` : `Result<Void>`
++
+--
+Runs given _runnable_ 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/applib/services/xmlsnapshot/XmlSnapshotService.adoc b/antora/components/system/modules/generated/pages/index/applib/services/xmlsnapshot/XmlSnapshotService.adoc
index 44a0da9..f87d136 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/xmlsnapshot/XmlSnapshotService.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/xmlsnapshot/XmlSnapshotService.adoc
@@ -18,7 +18,7 @@ interface XmlSnapshotService {
 }
 ----
 
-<.> `[teal]#*snapshotFor*#(Object domainObject)` : `xref:system:generated:index/applib/annotation/Snapshot.adoc[Snapshot]`
+<.> `[teal]#*snapshotFor*#(Object domainObject)` : `Snapshot`
 +
 --
 Exports the state of a domain object into a Snapshot (which can then be converted into XML, for example).
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/xmlsnapshot/XmlSnapshotService~Snapshot~Builder.adoc b/antora/components/system/modules/generated/pages/index/applib/services/xmlsnapshot/XmlSnapshotService~Snapshot~Builder.adoc
index 82b3d91..e72a561 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/xmlsnapshot/XmlSnapshotService~Snapshot~Builder.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/xmlsnapshot/XmlSnapshotService~Snapshot~Builder.adoc
@@ -24,7 +24,7 @@ Enrich the snapshot to include the state of these referenced objects
 --
 Ditto, but add an XML annotation attribute to the included element(s).
 --
-<.> `[teal]#*build*#()` : `xref:system:generated:index/applib/annotation/Snapshot.adoc[Snapshot]`
+<.> `[teal]#*build*#()` : `Snapshot`
 +
 --
 Builds the Snapshot.
diff --git a/antora/components/system/modules/generated/pages/index/applib/snapshot/SnapshottableWithInclusions.adoc b/antora/components/system/modules/generated/pages/index/applib/snapshot/SnapshottableWithInclusions.adoc
index eb3ba59..df4837d 100644
--- a/antora/components/system/modules/generated/pages/index/applib/snapshot/SnapshottableWithInclusions.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/snapshot/SnapshottableWithInclusions.adoc
@@ -1,7 +1,7 @@
 = SnapshottableWithInclusions : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Optional interface for domain objects with which an snapshot is to be created using the xref:system:generated:index/applib/services/xmlsnapshot/XmlSnapshotService.adoc[XmlSnapshotService] , indicating paths to be _XmlSnapshotService.Snapshot#_ automatically include additional paths within the snapshot.
+Optional interface for domain objects with which an snapshot is to be created using the _XmlSnapshotService_ , indicating paths to be _XmlSnapshotService.Snapshot#_ automatically include additional paths within the snapshot.
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/spec/AbstractSpecification.adoc b/antora/components/system/modules/generated/pages/index/applib/spec/AbstractSpecification.adoc
index 6f08d0d..841d7d3 100644
--- a/antora/components/system/modules/generated/pages/index/applib/spec/AbstractSpecification.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/spec/AbstractSpecification.adoc
@@ -1,7 +1,7 @@
 = AbstractSpecification : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Adapter to make it easy to write xref:system:generated:index/applib/spec/Specification.adoc[Specification] s.
+Adapter to make it easy to write _Specification_ s.
 
 Provides two main features:
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/spec/AbstractSpecification2.adoc b/antora/components/system/modules/generated/pages/index/applib/spec/AbstractSpecification2.adoc
index 1b86b73..825c56f 100644
--- a/antora/components/system/modules/generated/pages/index/applib/spec/AbstractSpecification2.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/spec/AbstractSpecification2.adoc
@@ -1,7 +1,7 @@
 = AbstractSpecification2 : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Adapter to make it easy to write xref:system:generated:index/applib/spec/Specification.adoc[Specification] s.
+Adapter to make it easy to write _Specification_ s.
 
 Provides two main features:
 
@@ -21,7 +21,7 @@ class AbstractSpecification2 {
 }
 ----
 
-<.> `[teal]#*satisfiesTranslatable*#(Object obj)` : `xref:system:generated:index/applib/services/i18n/TranslatableString.adoc[TranslatableString]`
+<.> `[teal]#*satisfiesTranslatable*#(Object obj)` : `TranslatableString`
 +
 --
 Checks not null and is correct type, and delegates to _#satisfiesTranslatableSafely(Object)_ .
diff --git a/antora/components/system/modules/generated/pages/index/applib/spec/Specification2.adoc b/antora/components/system/modules/generated/pages/index/applib/spec/Specification2.adoc
index a821e8d..c8c7c53 100644
--- a/antora/components/system/modules/generated/pages/index/applib/spec/Specification2.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/spec/Specification2.adoc
@@ -1,9 +1,9 @@
 = Specification2 : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Optional extension to the base xref:system:generated:index/applib/spec/Specification.adoc[Specification] , to allow for i18n.
+Optional extension to the base _Specification_ , to allow for i18n.
 
-If implemented, then the _#satisfies(Object)_ inherited from xref:system:generated:index/applib/spec/Specification.adoc[Specification] can just return `null` ; it will never be called by the framework.
+If implemented, then the _#satisfies(Object)_ inherited from _Specification_ can just return `null` ; it will never be called by the framework.
 
 .Java Sources
 [source,java]
@@ -14,9 +14,9 @@ interface Specification2 {
 }
 ----
 
-<.> `[teal]#*satisfiesTranslatable*#(Object obj)` : `xref:system:generated:index/applib/services/i18n/TranslatableString.adoc[TranslatableString]`
+<.> `[teal]#*satisfiesTranslatable*#(Object obj)` : `TranslatableString`
 +
 --
-If `null` then satisfied, otherwise is the reason (as a xref:system:generated:index/applib/services/i18n/TranslatableString.adoc[TranslatableString] translatable string) as to why the specification is not satisfied.
+If `null` then satisfied, otherwise is the reason (as a _TranslatableString_ translatable string) as to why the specification is not satisfied.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/spec/SpecificationAnd.adoc b/antora/components/system/modules/generated/pages/index/applib/spec/SpecificationAnd.adoc
index 2a54a88..8468497 100644
--- a/antora/components/system/modules/generated/pages/index/applib/spec/SpecificationAnd.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/spec/SpecificationAnd.adoc
@@ -1,9 +1,9 @@
 = SpecificationAnd : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Adapter to make it easy to perform boolean algebra on xref:system:generated:index/applib/spec/Specification.adoc[Specification] s.
+Adapter to make it easy to perform boolean algebra on _Specification_ s.
 
-Subclasses represent the intersection of multiple xref:system:generated:index/applib/spec/Specification.adoc[Specification] s. An implementation should instantiate the xref:system:generated:index/applib/spec/Specification.adoc[Specification] s to be satisfied in its constructor.
+Subclasses represent the intersection of multiple _Specification_ s. An implementation should instantiate the _Specification_ s to be satisfied in its constructor.
 
 For example:
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/spec/SpecificationNot.adoc b/antora/components/system/modules/generated/pages/index/applib/spec/SpecificationNot.adoc
index 068f6ebc..934f2f7 100644
--- a/antora/components/system/modules/generated/pages/index/applib/spec/SpecificationNot.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/spec/SpecificationNot.adoc
@@ -1,9 +1,9 @@
 = SpecificationNot : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Adapter to make it easy to perform boolean algebra on xref:system:generated:index/applib/spec/Specification.adoc[Specification] s.
+Adapter to make it easy to perform boolean algebra on _Specification_ s.
 
-Subclasses represent the logical inverse of a xref:system:generated:index/applib/spec/Specification.adoc[Specification] s. An implementation should instantiate the xref:system:generated:index/applib/spec/Specification.adoc[Specification] s to be satisfied in its constructor.
+Subclasses represent the logical inverse of a _Specification_ s. An implementation should instantiate the _Specification_ s to be satisfied in its constructor.
 
 For example:
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/spec/SpecificationOr.adoc b/antora/components/system/modules/generated/pages/index/applib/spec/SpecificationOr.adoc
index 2216f03..bc57f8e 100644
--- a/antora/components/system/modules/generated/pages/index/applib/spec/SpecificationOr.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/spec/SpecificationOr.adoc
@@ -1,9 +1,9 @@
 = SpecificationOr : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Adapter to make it easy to perform boolean algebra on xref:system:generated:index/applib/spec/Specification.adoc[Specification] s.
+Adapter to make it easy to perform boolean algebra on _Specification_ s.
 
-Subclasses represent the conjunction of multiple xref:system:generated:index/applib/spec/Specification.adoc[Specification] s. An implementation should instantiate the xref:system:generated:index/applib/spec/Specification.adoc[Specification] s to be satisfied in its constructor.
+Subclasses represent the conjunction of multiple _Specification_ s. An implementation should instantiate the _Specification_ s to be satisfied in its constructor.
 
 For example:
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/types/DescriptionType.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/types/DescriptionType.adoc
index 78f204d..33e5923 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/types/DescriptionType.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= DescriptionType : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class DescriptionType {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/applib/types/MemberIdentifierType.adoc
similarity index 74%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/applib/types/MemberIdentifierType.adoc
index 98310a4..508c9ee 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/types/MemberIdentifierType.adoc
@@ -1,14 +1,12 @@
-= EntityPropertyChange : _class_
+= MemberIdentifierType : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
+As per _Command#getMemberIdentifier()_ and _org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber#audit(UUID, int, String, Bookmark, String, String, String, String, String, Timestamp)_ .
 
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
-
-  String toString()
+class MemberIdentifierType {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/applib/types/TargetActionType.adoc
similarity index 73%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/applib/types/TargetActionType.adoc
index dcdaf9a..a65026b 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/types/TargetActionType.adoc
@@ -1,28 +1,12 @@
-= EntityState : _enum_
+= TargetActionType : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
+A user-friendly name of an action, as per _Command#getTargetAction()_ , _org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber#audit(UUID, int, String, Bookmark, String, String, String, String, String, Timestamp)_ .
 
 .Java Sources
 [source,java]
 ----
-enum EntityState {
-
-  NOT_PERSISTABLE
-
-  PERSISTABLE_ATTACHED
-
-  PERSISTABLE_DETACHED
-
-  PERSISTABLE_DESTROYED
-
-  boolean isPersistable()
-
-  boolean isAttached()
-
-  boolean isDetached()
-
-  boolean isDestroyed()
+class TargetActionType {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/applib/types/TargetClassType.adoc
similarity index 73%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/applib/types/TargetClassType.adoc
index 98310a4..a123704 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/types/TargetClassType.adoc
@@ -1,14 +1,12 @@
-= EntityPropertyChange : _class_
+= TargetClassType : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
+A user-friendly name of a class, as per _Command#getTargetClass()_ , _org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber#audit(UUID, int, String, Bookmark, String, String, String, String, String, Timestamp)_ .
 
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
-
-  String toString()
+class TargetClassType {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/util/ObjectContracts.adoc b/antora/components/system/modules/generated/pages/index/applib/util/ObjectContracts.adoc
new file mode 100644
index 0000000..3ffacca
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/util/ObjectContracts.adoc
@@ -0,0 +1,64 @@
+= ObjectContracts : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Provides fluent composition for Objects' equals, hashCode and toString. Sample usage by composing getters ...For 'compareTo' use JDK's comparator composition ...
+
+----
+
+private static final Equality equality =
+		ObjectContracts.checkEquals(ApplicationFeature::getFeatureId);
+
+private static final Hashing hashing =
+		ObjectContracts.hashing(ApplicationFeature::getFeatureId);
+
+private static final ToString toString =
+		ObjectContracts.toString("featureId", ApplicationFeature::getFeatureId);
+
+public boolean equals(final Object obj) {
+	return equality.equals(this, obj);
+}
+
+public int hashCode() {
+	return hashing.hashCode(this);
+}
+
+public String toString() {
+	return toString.toString(this);
+}
+----
+
+----
+
+private static final Comparator comparator =
+		Comparator.comparing(ApplicationFeature::getFeatureId);
+
+public int compareTo(final ApplicationFeature other) {
+	return comparator.compare(this, other);
+}
+----
+
+.Java Sources
+[source,java]
+----
+class ObjectContracts {
+
+  ToString<T> toString(String name, Function<T, ?> getter)
+
+  Equality<T> checkEquals(Function<T, ?> getter)
+
+  Hashing<T> hashing(Function<T, ?> getter)
+
+  ObjectContract<T> contract(Class<T> objectClass)
+
+  ObjectContract<T> parse(Class<T> target, String propertyNames)
+
+  String toString(T obj, String propertyNames)
+
+  boolean equals(T obj, Object other, String propertyNames)
+
+  int hashCode(Object obj, String propertyNames)
+
+  int compare(T obj, T other, String propertyNames)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/util/ReasonBuffer.adoc b/antora/components/system/modules/generated/pages/index/applib/util/ReasonBuffer.adoc
new file mode 100644
index 0000000..53b7bc3
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/util/ReasonBuffer.adoc
@@ -0,0 +1,40 @@
+= ReasonBuffer : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Helper class to create properly concatenated reason string for use in method that return _String_ s with reasons.
+
+If no reasons are specified _#getReason()_ will returnnull, otherwise it will return a _String_ with all the valid reasons concatenated with a semi-colon separating each one.
+
+An alternative is to use the _Reasons_ class.
+
+.Java Sources
+[source,java]
+----
+class ReasonBuffer {
+
+  StringBuffer reasonBuffer;
+
+  void append(final String reason) // <.>
+
+  void appendOnCondition(final boolean condition, final String reason) // <.>
+
+  String getReason() // <.>
+}
+----
+
+<.> `[teal]#*append*#(String reason)` : `void`
++
+--
+Append a reason to the list of existing reasons.
+--
+<.> `[teal]#*appendOnCondition*#(boolean condition, String reason)` : `void`
++
+--
+Append a reason to the list of existing reasons if the condition flag is true.
+--
+<.> `[teal]#*getReason*#()` : `String`
++
+--
+Return the combined set of reasons, ornullif there are none.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/util/ReasonBuffer2.adoc b/antora/components/system/modules/generated/pages/index/applib/util/ReasonBuffer2.adoc
new file mode 100644
index 0000000..08327bb
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/util/ReasonBuffer2.adoc
@@ -0,0 +1,69 @@
+= ReasonBuffer2 : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Extension to applib's _ReasonBuffer_ .
+
+.Java Sources
+[source,java]
+----
+class ReasonBuffer2 {
+
+  ReasonBuffer2Builder builder()
+
+  ReasonBuffer2 forAll()
+
+  ReasonBuffer2 forSingle()
+
+  ReasonBuffer2 forAll(final String prefix)
+
+  ReasonBuffer2 forSingle(final String prefix)
+
+  ReasonBuffer2 append(final LazyReason lazyReason)
+
+  void appendIfNotPresent(final Optional<?> optional, final String reason)
+
+  ReasonBuffer2 append(final String reason) // <.>
+
+  ReasonBuffer2 append(final boolean condition, final String reason) // <.>
+
+  ReasonBuffer2 append(final Condition condition, final String reason) // <.>
+
+  String getReason() // <.>
+
+  String appendReason(final StringBuilder buf) // <.>
+
+  ReasonBuffer2 plus(final ReasonBuffer2 other) // <.>
+}
+----
+
+<.> `[teal]#*append*#(String reason)` : `ReasonBuffer2`
++
+--
+Append a reason to the list of existing reasons.
+--
+<.> `[teal]#*append*#(boolean condition, String reason)` : `ReasonBuffer2`
++
+--
+Append a reason to the list of existing reasons if the condition flag is true.
+--
+<.> `[teal]#*append*#(Condition condition, String reason)` : `ReasonBuffer2`
++
+--
+Append a reason to the list of existing reasons if the condition flag is true.
+--
+<.> `[teal]#*getReason*#()` : `String`
++
+--
+Return the combined set of reasons, ornullif there are none.
+--
+<.> `[teal]#*appendReason*#(StringBuilder buf)` : `String`
++
+--
+Appends reasons.
+--
+<.> `[teal]#*plus*#(ReasonBuffer2 other)` : `ReasonBuffer2`
++
+--
+Combines sets of reasons from another.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/applib/util/Reasons.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/applib/util/Reasons.adoc
index 78f204d..9f6d009 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/util/Reasons.adoc
@@ -1,12 +1,14 @@
-= ResourceCoordinates : _class_
+= Reasons : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+An alternative to _ReasonBuffer_ .
+
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class Reasons {
 
-  int compareTo(final ResourceCoordinates other)
+  String coalesce(final String... reasons)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/util/TitleBuffer.adoc b/antora/components/system/modules/generated/pages/index/applib/util/TitleBuffer.adoc
new file mode 100644
index 0000000..c80440b
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/util/TitleBuffer.adoc
@@ -0,0 +1,187 @@
+= TitleBuffer : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Title buffer is a utility class to help produce titles for objects without having to add lots of guard code.
+
+It provides two basic method: one to concatenate a title to the buffer; another to append a title with a joiner string, taking care adding in necessary spaces.
+
+The benefits of using this class is that null references are safely ignored (rather than appearing as 'null'), and joiners (a space by default) are only added when needed.
+
+.Java Sources
+[source,java]
+----
+class TitleBuffer {
+
+  TitleBuffer() // <.>
+
+  TitleBuffer(final Object object) // <.>
+
+  TitleBuffer(final Object object, final String defaultTitle) // <.>
+
+  TitleBuffer(final String text) // <.>
+
+  boolean isEmpty(final Object object) // <.>
+
+  boolean isEmpty(final String text) // <.>
+
+  TitleBuffer append(final int number) // <.>
+
+  TitleBuffer append(final Object object) // <.>
+
+  TitleBuffer append(final Object object, final String defaultValue) // <.>
+
+  TitleBuffer append(final String text) // <.>
+
+  TitleBuffer append(final String joiner, final Object object) // <.>
+
+  TitleBuffer append(final String joiner, final Object object, final String defaultTitle) // <.>
+
+  TitleBuffer append(final String joiner, final String text) // <.>
+
+  TitleBuffer appendSpace() // <.>
+
+  TitleBuffer concat(final Object object) // <.>
+
+  TitleBuffer concat(final Object object, final String defaultValue) // <.>
+
+  TitleBuffer concat(final String text) // <.>
+
+  TitleBuffer concat(final String joiner, final String text) // <.>
+
+  TitleBuffer concat(final String joiner, final Object object) // <.>
+
+  TitleBuffer concat(final String joiner, final Object object, final String defaultValue) // <.>
+
+  String toString() // <.>
+
+  TitleBuffer truncate(final int noWords) // <.>
+}
+----
+
+<.> `[teal]#*TitleBuffer*#()`
++
+--
+Creates a new, empty, _org.apache.isis.applib.util.TitleBuffer_ .
+--
+<.> `[teal]#*TitleBuffer*#(Object object)`
++
+--
+Creates a new _org.apache.isis.applib.util.TitleBuffer_ , containing the title of the specified object.
+
+Note: this method only obtains the title using either `title()` or `toString()` ; it doesn't honour other mechanisms for specifying the title, such as _org.apache.isis.applib.annotation.Title_ annotation. If that functionality is required, first call _org.apache.isis.applib.DomainObjectContainer#titleOf(Object)_ on the object and pass in the resultant string.
+--
+<.> `[teal]#*TitleBuffer*#(Object object, String defaultTitle)`
++
+--
+Creates a new title object, containing the title of the specified object.
+
+Note: this method only obtains the title using either `title()` or `toString()` ; it doesn't honour other mechanisms for specifying the title, such as _org.apache.isis.applib.annotation.Title_ annotation. If that functionality is required, first call _org.apache.isis.applib.DomainObjectContainer#titleOf(Object)_ on the object and pass in the resultant string.
+--
+<.> `[teal]#*TitleBuffer*#(String text)`
++
+--
+Creates a new title object, containing the specified text.
+--
+<.> `[teal]#*_isEmpty_*#(Object object)` : `boolean`
++
+--
+Determines if the specified object's title is empty (or null).
+
+Note: this method only obtains the title using either `title()` or `toString()` ; it doesn't honour other mechanisms for specifying the title, such as _org.apache.isis.applib.annotation.Title_ annotation. If that functionality is required, first call _org.apache.isis.applib.DomainObjectContainer#titleOf(Object)_ on the object and pass in the resultant string.
+--
+<.> `[teal]#*_isEmpty_*#(String text)` : `boolean`
++
+--
+Determines if the specified text is empty. Will return true if either: the specified reference is null; or if the reference is an empty string.
+--
+<.> `[teal]#*append*#(int number)` : `TitleBuffer`
+<.> `[teal]#*append*#(Object object)` : `TitleBuffer`
++
+--
+Append the title of the specified object to this _org.apache.isis.applib.util.TitleBuffer_ .
+
+Note: this method only obtains the title using either `title()` or `toString()` ; it doesn't honour other mechanisms for specifying the title, such as _org.apache.isis.applib.annotation.Title_ annotation. If that functionality is required, first call _org.apache.isis.applib.DomainObjectContainer#titleOf(Object)_ on the object and pass in the resultant string.
+--
+<.> `[teal]#*append*#(Object object, String defaultValue)` : `TitleBuffer`
++
+--
+Appends the title of the specified object, or the specified text if the objects title is null or empty. Prepends a space if there is already some text in this title object.
+
+Note: this method only obtains the title using either `title()` or `toString()` ; it doesn't honour other mechanisms for specifying the title, such as _org.apache.isis.applib.annotation.Title_ annotation. If that functionality is required, first call _org.apache.isis.applib.DomainObjectContainer#titleOf(Object)_ on the object and pass in the resultant string.
+--
+<.> `[teal]#*append*#(String text)` : `TitleBuffer`
++
+--
+Appends a space (if there is already some text in this title object) and then the specified text.
+--
+<.> `[teal]#*append*#(String joiner, Object object)` : `TitleBuffer`
++
+--
+Appends the joining string and the title of the specified object. If the object is empty then nothing will be appended.
+
+Note: this method only obtains the title using either `title()` or `toString()` ; it doesn't honour other mechanisms for specifying the title, such as _org.apache.isis.applib.annotation.Title_ annotation. If that functionality is required, first call _org.apache.isis.applib.DomainObjectContainer#titleOf(Object)_ on the object and pass in the resultant string.
+--
+<.> `[teal]#*append*#(String joiner, Object object, String defaultTitle)` : `TitleBuffer`
++
+--
+Append thejoinertext, a space, and the title of the specified object to the text of this _org.apache.isis.applib.util.TitleBuffer_ . If the title of the specified object is null then use thedefaultValuetext. If both the objects title and the default value are null or equate to a zero-length string then no text will be appended ; not even the joiner text.
+
+Note: this method only obtains the title using either `title()` or `toString()` ; it doesn't honour other mechanisms for specifying the title, such as _org.apache.isis.applib.annotation.Title_ annotation. If that functionality is required, first call _org.apache.isis.applib.DomainObjectContainer#titleOf(Object)_ on the object and pass in the resultant string.
+--
+<.> `[teal]#*append*#(String joiner, String text)` : `TitleBuffer`
++
+--
+Appends the joiner text, a space, and the text to the text of this _org.apache.isis.applib.util.TitleBuffer_ . If no text yet exists in the object then the joiner text and space are omitted.
+--
+<.> `[teal]#*appendSpace*#()` : `TitleBuffer`
++
+--
+Append a space to the text of this TitleString object if, and only if, there is some existing text i.e., a space is only added to existing text and will not create a text entry consisting of only one space.
+--
+<.> `[teal]#*concat*#(Object object)` : `TitleBuffer`
++
+--
+Concatenate the the title value (the result of calling an objects label() method) to this TitleString object. If the value is null the no text is added.
+--
+<.> `[teal]#*concat*#(Object object, String defaultValue)` : `TitleBuffer`
++
+--
+Concatenate the title of the object value or the specified default value if the title is equal to null or is empty, to this _org.apache.isis.applib.util.TitleBuffer_ .
+
+Note: this method only obtains the title using either `title()` or `toString()` ; it doesn't honour other mechanisms for specifying the title, such as _org.apache.isis.applib.annotation.Title_ annotation. If that functionality is required, first call _org.apache.isis.applib.DomainObjectContainer#titleOf(Object)_ on the object and pass in the resultant string.
+--
+<.> `[teal]#*concat*#(String text)` : `TitleBuffer`
++
+--
+Concatenate the specified text on to the end of the text of this _org.apache.isis.applib.util.TitleBuffer_ .
+--
+<.> `[teal]#*concat*#(String joiner, String text)` : `TitleBuffer`
++
+--
+Concatenate the joiner text and the text to the text of this _org.apache.isis.applib.util.TitleBuffer_ object. If no text yet exists in the object then the joiner text is omitted.
+--
+<.> `[teal]#*concat*#(String joiner, Object object)` : `TitleBuffer`
++
+--
+Concatenate the joiner text and the title of the object to the text of this _org.apache.isis.applib.util.TitleBuffer_ . If no object yet exists in the object then the joiner text is omitted.
+
+Note: this method only obtains the title using either `title()` or `toString()` ; it doesn't honour other mechanisms for specifying the title, such as _org.apache.isis.applib.annotation.Title_ annotation. If that functionality is required, first call _org.apache.isis.applib.DomainObjectContainer#titleOf(Object)_ on the object and pass in the resultant string.
+--
+<.> `[teal]#*concat*#(String joiner, Object object, String defaultValue)` : `TitleBuffer`
++
+--
+Concatenate the joiner text and the title of the object to the text of this _org.apache.isis.applib.util.TitleBuffer_ object. If no object yet exists in the object then defaultValue is used instead.
+
+Note: this method only obtains the title using either `title()` or `toString()` ; it doesn't honour other mechanisms for specifying the title, such as _org.apache.isis.applib.annotation.Title_ annotation. If that functionality is required, first call _org.apache.isis.applib.DomainObjectContainer#titleOf(Object)_ on the object and pass in the resultant string.
+--
+<.> `[teal]#*toString*#()` : `String`
++
+--
+Returns a String that represents the value of this object.
+--
+<.> `[teal]#*truncate*#(int noWords)` : `TitleBuffer`
++
+--
+Truncates this title so it has a maximum number of words. Spaces are used to determine words, thus two spaces in a title will cause two words to be mistakenly identified.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/applib/util/TitleBufferException.adoc
similarity index 75%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/applib/util/TitleBufferException.adoc
index 98310a4..415af34 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/util/TitleBufferException.adoc
@@ -1,14 +1,20 @@
-= EntityPropertyChange : _class_
+= TitleBufferException : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class TitleBufferException {
+
+  TitleBufferException()
+
+  TitleBufferException(final String msg)
+
+  TitleBufferException(final Throwable cause)
+
+  TitleBufferException(final String msg, final Throwable cause)
 
-  String toString()
+  Throwable getCause()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/util/schema/InteractionDtoUtils.adoc b/antora/components/system/modules/generated/pages/index/applib/util/schema/InteractionDtoUtils.adoc
new file mode 100644
index 0000000..1911afb
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/applib/util/schema/InteractionDtoUtils.adoc
@@ -0,0 +1,72 @@
+= InteractionDtoUtils : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+.Java Sources
+[source,java]
+----
+class InteractionDtoUtils {
+
+  static JAXBContext jaxbContext;
+
+  void init()
+
+  JAXBContext getJaxbContext()
+
+  InteractionDto fromXml(final Reader reader)
+
+  InteractionDto fromXml(final String xml)
+
+  InteractionDto fromXml(final Class<?> contextClass, final String resourceName, final Charset charset)
+
+  String toXml(final InteractionDto interactionDto)
+
+  void toXml(final InteractionDto interactionDto, final Writer writer)
+
+  InteractionDto newInteractionDto(final Interaction.Execution<?, ?> execution) // <.>
+
+  InteractionDto newInteractionDto(final Interaction.Execution<?, ?> execution, final Strategy strategy) // <.>
+
+  ActionInvocationDto newActionInvocation(final int sequence, final Bookmark targetBookmark, final String targetTitle, final String actionIdentifier, final List<ParamDto> parameterDtos, final String user)
+
+  PropertyEditDto newPropertyEdit(final int sequence, final Bookmark targetBookmark, final String targetTitle, final String propertyIdentifier, final ValueWithTypeDto newValueDto, final String user)
+
+  String deriveLogicalMemberId(final Bookmark bookmark, final String memberId)
+
+  void addParamArg(final InteractionDto interactionDto, final String parameterName, final Class<?> parameterType, final Object arg, final BookmarkService bookmarkService)
+
+  void addReturn(final ActionInvocationDto invocationDto, final Class<?> returnType, final Object result, final BookmarkService bookmarkService) // <.>
+
+  List<ParamDto> getParameters(final ActionInvocationDto ai)
+
+  List<String> getParameterNames(final ActionInvocationDto ai)
+
+  List<ValueType> getParameterTypes(final ActionInvocationDto ai)
+
+  ParamDto getParameter(final ActionInvocationDto ai, final int paramNum)
+
+  ValueDto getParameterArgument(final ActionInvocationDto ai, final int paramNum)
+
+  String getParameterName(final ActionInvocationDto ai, final int paramNum)
+
+  ValueType getParameterType(final ActionInvocationDto ai, final int paramNum)
+
+  boolean isNull(final ActionInvocationDto ai, int paramNum)
+
+  T getParameterArgValue(final ActionInvocationDto ai, int paramNum)
+
+  void dump(final InteractionDto ixnDto, final PrintStream out)
+}
+----
+
+<.> `[teal]#*_newInteractionDto_*#(Execution<?, ?> execution)` : `InteractionDto`
++
+--
+Creates a _InteractionDto_ (serializable to XML) for the provided _Interaction.Execution_ (the applib object).
+--
+<.> `[teal]#*_newInteractionDto_*#(Execution<?, ?> execution, Strategy strategy)` : `InteractionDto`
++
+--
+Creates a _InteractionDto_ (serializable to XML) for the provided _Interaction.Execution_ (the applib object).
+--
+<.> `[teal]#*_addReturn_*#(ActionInvocationDto invocationDto, Class<?> returnType, Object result, BookmarkService bookmarkService)` : `void`
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc b/antora/components/system/modules/generated/pages/index/applib/util/schema/MemberExecutionDtoUtils.adoc
similarity index 61%
copy from antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
copy to antora/components/system/modules/generated/pages/index/applib/util/schema/MemberExecutionDtoUtils.adoc
index bfc7391..b5231a0 100644
--- a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/util/schema/MemberExecutionDtoUtils.adoc
@@ -1,36 +1,26 @@
-= Markup : _class_
+= MemberExecutionDtoUtils : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable value type holding pre-rendered HTML.
-
 .Java Sources
 [source,java]
 ----
-class Markup {
-
-  Markup()
+class MemberExecutionDtoUtils {
 
-  Markup(String html)
+  T clone(final T dto)
 
-  String asHtml()
+  MetricsDto metricsFor(final MemberExecutionDto executionDto)
 
-  boolean isEqualTo(final Markup other)
+  PeriodDto timingsFor(final MetricsDto metricsDto)
 
-  String title()
+  ObjectCountsDto objectCountsFor(final MetricsDto metricsDto)
 
-  boolean equals(final Object obj)
+  DifferenceDto numberObjectsLoadedFor(final ObjectCountsDto objectCountsDto)
 
-  int hashCode()
+  DifferenceDto numberObjectsDirtiedFor(final ObjectCountsDto objectCountsDto)
 
-  String toString()
+  String toXml(final T dto)
 
-  Markup valueOfHtml(String html) // <.>
+  void toXml(final T dto, final Writer writer)
 }
 ----
 
-<.> `[teal]#*_valueOfHtml_*#(String html)` : `xref:system:generated:index/applib/value/Markup.adoc[Markup]`
-+
---
-syntactic sugar
---
-
diff --git a/antora/components/system/modules/generated/pages/index/applib/value/Blob.adoc b/antora/components/system/modules/generated/pages/index/applib/value/Blob.adoc
index 80b909b..428e1b4 100644
--- a/antora/components/system/modules/generated/pages/index/applib/value/Blob.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/value/Blob.adoc
@@ -32,14 +32,14 @@ class Blob {
 }
 ----
 
-<.> `[teal]#*_of_*#(String name, CommonMimeType mimeType, byte[] content)` : `xref:system:generated:index/applib/value/Blob.adoc[Blob]`
+<.> `[teal]#*_of_*#(String name, CommonMimeType mimeType, byte[] content)` : `Blob`
 +
 --
-Returns a new xref:system:generated:index/applib/value/Blob.adoc[Blob] of given _name_ , _mimeType_ and _content_ .
+Returns a new _Blob_ of given _name_ , _mimeType_ and _content_ .
 
-_name_ may or may not include the desired filename extension, it is guaranteed, that the resulting xref:system:generated:index/applib/value/Blob.adoc[Blob] has the appropriate extension as constraint by the given _mimeType_ .
+_name_ may or may not include the desired filename extension, it is guaranteed, that the resulting _Blob_ has the appropriate extension as constraint by the given _mimeType_ .
 
-For more fine-grained control use one of the xref:system:generated:index/applib/value/Blob.adoc[Blob] constructors directly.
+For more fine-grained control use one of the _Blob_ constructors directly.
 --
 <.> `[teal]#*writeBytesTo*#(OutputStream os)` : `void`
 +
diff --git a/antora/components/system/modules/generated/pages/index/applib/value/Clob.adoc b/antora/components/system/modules/generated/pages/index/applib/value/Clob.adoc
index cc52ddc..76121c2 100644
--- a/antora/components/system/modules/generated/pages/index/applib/value/Clob.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/value/Clob.adoc
@@ -36,13 +36,13 @@ class Clob {
 }
 ----
 
-<.> `[teal]#*_of_*#(String name, CommonMimeType mimeType, CharSequence content)` : `xref:system:generated:index/applib/value/Clob.adoc[Clob]`
+<.> `[teal]#*_of_*#(String name, CommonMimeType mimeType, CharSequence content)` : `Clob`
 +
 --
-Returns a new xref:system:generated:index/applib/value/Clob.adoc[Clob] of given _name_ , _mimeType_ and _content_ .
+Returns a new _Clob_ of given _name_ , _mimeType_ and _content_ .
 
-_name_ may or may not include the desired filename extension, it is guaranteed, that the resulting xref:system:generated:index/applib/value/Clob.adoc[Clob] has the appropriate extension as constraint by the given _mimeType_ .
+_name_ may or may not include the desired filename extension, it is guaranteed, that the resulting _Clob_ has the appropriate extension as constraint by the given _mimeType_ .
 
-For more fine-grained control use one of the xref:system:generated:index/applib/value/Clob.adoc[Clob] constructors directly.
+For more fine-grained control use one of the _Clob_ constructors directly.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc b/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
index bfc7391..3ef1ac7 100644
--- a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
@@ -28,7 +28,7 @@ class Markup {
 }
 ----
 
-<.> `[teal]#*_valueOfHtml_*#(String html)` : `xref:system:generated:index/applib/value/Markup.adoc[Markup]`
+<.> `[teal]#*_valueOfHtml_*#(String html)` : `Markup`
 +
 --
 syntactic sugar
diff --git a/antora/components/system/modules/generated/pages/index/commons/functional/Result.adoc b/antora/components/system/modules/generated/pages/index/commons/functional/Result.adoc
index 718ca95..699be6e 100644
--- a/antora/components/system/modules/generated/pages/index/commons/functional/Result.adoc
+++ b/antora/components/system/modules/generated/pages/index/commons/functional/Result.adoc
@@ -1,7 +1,7 @@
 = Result : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-The xref:system:generated:index/commons/functional/Result.adoc[Result] type represents a value of one of two possible types (a disjoint union). The data constructors _Result#success(Object)_ and _Result#failure(Throwable)_ represent the two possible values.
+The _Result_ type represents a value of one of two possible types (a disjoint union). The data constructors _Result#success(Object)_ and _Result#failure(Throwable)_ represent the two possible values.
 
 .Java Sources
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
index 78f204d..fcd118c 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
@@ -6,6 +6,8 @@
 ----
 class ResourceCoordinates {
 
+  ResourceCoordinates fromFile(final File file)
+
   int compareTo(final ResourceCoordinates other)
 }
 ----
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc b/antora/components/system/modules/generated/pages/index/core/config/datasources/DataSourceIntrospectionService.adoc
similarity index 77%
copy from antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
copy to antora/components/system/modules/generated/pages/index/core/config/datasources/DataSourceIntrospectionService.adoc
index e87ee7c..f117617 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
+++ b/antora/components/system/modules/generated/pages/index/core/config/datasources/DataSourceIntrospectionService.adoc
@@ -1,14 +1,14 @@
-= HomePageResolverService : _interface_
+= DataSourceIntrospectionService : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Returns a view model annotated with xref:system:generated:index/applib/annotation/HomePage.adoc[HomePage] .
+For a given _Spring_ context, provides utilities to introspect the list of configured data-sources.
 
 .Java Sources
 [source,java]
 ----
-interface HomePageResolverService {
+class DataSourceIntrospectionService {
 
-  Object getHomePage()
+  Stream<DataSourceInfo> streamDataSourceInfos()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/core/runtimeservices/transaction/TransactionServiceSpring.adoc b/antora/components/system/modules/generated/pages/index/core/runtimeservices/transaction/TransactionServiceSpring.adoc
index 438cbc6..3100997 100644
--- a/antora/components/system/modules/generated/pages/index/core/runtimeservices/transaction/TransactionServiceSpring.adoc
+++ b/antora/components/system/modules/generated/pages/index/core/runtimeservices/transaction/TransactionServiceSpring.adoc
@@ -31,7 +31,7 @@ class TransactionServiceSpring {
 --
 INTERACTION BEGIN BOUNDARY
 --
-<.> `[teal]#*onTransactionEnded*#(xref:system:generated:index/core/transaction/events/TransactionAfterCompletionEvent.adoc[TransactionAfterCompletionEvent] event)` : `void`
+<.> `[teal]#*onTransactionEnded*#(TransactionAfterCompletionEvent event)` : `void`
 +
 --
 TRANSACTION END BOUNDARY
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandlog/impl/CommandSubscriberForJdo.adoc
similarity index 83%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandlog/impl/CommandSubscriberForJdo.adoc
index 78f204d..37ba3a3 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandlog/impl/CommandSubscriberForJdo.adoc
@@ -1,12 +1,15 @@
-= ResourceCoordinates : _class_
+= CommandSubscriberForJdo : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class CommandSubscriberForJdo {
 
-  int compareTo(final ResourceCoordinates other)
+  @Inject
+final CommandJdoRepository commandJdoRepository;
+
+  void onCompleted(Command command)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandlog/impl/IsisModuleExtCommandLogImpl.adoc
similarity index 70%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandlog/impl/IsisModuleExtCommandLogImpl.adoc
index dcdaf9a..f654046 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandlog/impl/IsisModuleExtCommandLogImpl.adoc
@@ -1,28 +1,20 @@
-= EntityState : _enum_
+= IsisModuleExtCommandLogImpl : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
-
 .Java Sources
 [source,java]
 ----
-enum EntityState {
-
-  NOT_PERSISTABLE
-
-  PERSISTABLE_ATTACHED
-
-  PERSISTABLE_DETACHED
+class IsisModuleExtCommandLogImpl {
 
-  PERSISTABLE_DESTROYED
+  FixtureScript getTeardownFixture()
 
-  boolean isPersistable()
-
-  boolean isAttached()
-
-  boolean isDetached()
-
-  boolean isDestroyed()
+  FixtureScript getTeardownFixtureWillDelete() // <.>
 }
 ----
 
+<.> `[teal]#*getTeardownFixtureWillDelete*#()` : `FixtureScript`
++
+--
+For tests that need to delete the command table first. Should be run in the @Before of the test.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandlog/impl/mixins/HasUniqueId_command.adoc
similarity index 55%
copy from antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandlog/impl/mixins/HasUniqueId_command.adoc
index aa393e9..abb0412 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandlog/impl/mixins/HasUniqueId_command.adoc
@@ -1,23 +1,29 @@
-= ContentMappingServiceForCommandsDto : _class_
+= HasUniqueId_command : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+This mixin contributes a `command` action to any (non-command) implementation of xref:system:generated:index/commons/having/HasUniqueId.adoc[HasUniqueId] ; that is: audit entries, and published events. Thus, it is possible to navigate from the effect back to the cause.
+
 .Java Sources
 [source,java]
 ----
-class ContentMappingServiceForCommandsDto {
+class HasUniqueId_command {
 
   @Inject
-ContentMappingServiceForCommandDto contentMappingServiceForCommandDto;
+CommandJdoRepository commandServiceRepository;
+
+  HasUniqueId_command(final HasUniqueId hasUniqueId)
+
+  CommandJdo act()
 
-  Object map(Object object, final List<MediaType> acceptableMediaTypes)
+  boolean hideAct() // <.>
 
-  CommandsDto map(final Object object) // <.>
+  String disableAct()
 }
 ----
 
-<.> `[teal]#*map*#(Object object)` : `CommandsDto`
+<.> `[teal]#*hideAct*#()` : `boolean`
 +
 --
-Not part of the xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[ContentMappingService] API.
+Hide if the contributee is a _Command_ , because _Command_ s already have a _Command#getParent() parent_ property.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandlog/impl/mixins/HasUsername_recentCommandsByUser.adoc
similarity index 75%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandlog/impl/mixins/HasUsername_recentCommandsByUser.adoc
index 98310a4..4de9cac 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandlog/impl/mixins/HasUsername_recentCommandsByUser.adoc
@@ -1,14 +1,19 @@
-= EntityPropertyChange : _class_
+= HasUsername_recentCommandsByUser : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class HasUsername_recentCommandsByUser {
+
+  @Inject
+CommandJdoRepository commandServiceRepository;
+
+  HasUsername_recentCommandsByUser(final HasUsername hasUsername)
+
+  List<CommandJdo> coll()
 
-  String toString()
+  boolean hideColl()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandlog/impl/ui/CommandServiceMenu.adoc
similarity index 62%
copy from antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandlog/impl/ui/CommandServiceMenu.adoc
index bfc7391..433ddad 100644
--- a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandlog/impl/ui/CommandServiceMenu.adoc
@@ -1,36 +1,32 @@
-= Markup : _class_
+= CommandServiceMenu : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable value type holding pre-rendered HTML.
-
 .Java Sources
 [source,java]
 ----
-class Markup {
+class CommandServiceMenu {
+
+  final CommandJdoRepository commandServiceRepository;
 
-  Markup()
+  final ClockService clockService;
 
-  Markup(String html)
+  List<CommandJdo> activeCommands()
 
-  String asHtml()
+  boolean hideActiveCommands()
 
-  boolean isEqualTo(final Markup other)
+  List<CommandJdo> findCommands(final LocalDate from, final LocalDate to)
 
-  String title()
+  boolean hideFindCommands()
 
-  boolean equals(final Object obj)
+  LocalDate default0FindCommands()
 
-  int hashCode()
+  LocalDate default1FindCommands()
 
-  String toString()
+  CommandJdo findCommandById(final UUID transactionId)
 
-  Markup valueOfHtml(String html) // <.>
+  boolean hideFindCommandById()
+
+  void truncateLog()
 }
 ----
 
-<.> `[teal]#*_valueOfHtml_*#(String html)` : `xref:system:generated:index/applib/value/Markup.adoc[Markup]`
-+
---
-syntactic sugar
---
-
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/primary/IsisModuleExtCommandReplayPrimary.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/primary/IsisModuleExtCommandReplayPrimary.adoc
index 78f204d..d4d60a0 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/primary/IsisModuleExtCommandReplayPrimary.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= IsisModuleExtCommandReplayPrimary : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class IsisModuleExtCommandReplayPrimary {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/primary/config/PrimaryConfig.adoc
similarity index 81%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/primary/config/PrimaryConfig.adoc
index 78f204d..4023fc5 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/primary/config/PrimaryConfig.adoc
@@ -1,12 +1,17 @@
-= ResourceCoordinates : _class_
+= PrimaryConfig : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class PrimaryConfig {
 
-  int compareTo(final ResourceCoordinates other)
+  @Getter
+final String secondaryBaseUrlWicket;
+
+  PrimaryConfig(final IsisConfiguration isisConfiguration)
+
+  boolean isConfigured()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/primary/mixins/Object_openOnSecondary.adoc
similarity index 79%
copy from antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/primary/mixins/Object_openOnSecondary.adoc
index e87ee7c..488f8dc 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/primary/mixins/Object_openOnSecondary.adoc
@@ -1,14 +1,22 @@
-= HomePageResolverService : _interface_
+= Object_openOnSecondary : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Returns a view model annotated with xref:system:generated:index/applib/annotation/HomePage.adoc[HomePage] .
-
 .Java Sources
 [source,java]
 ----
-interface HomePageResolverService {
+class Object_openOnSecondary {
+
+  final Object object;
+
+  @Inject
+PrimaryConfig primaryConfig;
+
+  @Inject
+BookmarkService bookmarkService;
+
+  URL act()
 
-  Object getHomePage()
+  boolean hideAct()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/primary/restapi/CommandRetrievalService.adoc
similarity index 59%
copy from antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/primary/restapi/CommandRetrievalService.adoc
index aa393e9..084651c 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/primary/restapi/CommandRetrievalService.adoc
@@ -1,23 +1,23 @@
-= ContentMappingServiceForCommandsDto : _class_
+= CommandRetrievalService : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ContentMappingServiceForCommandsDto {
+class CommandRetrievalService {
 
   @Inject
-ContentMappingServiceForCommandDto contentMappingServiceForCommandDto;
+CommandJdoRepository commandServiceRepository;
 
-  Object map(Object object, final List<MediaType> acceptableMediaTypes)
+  List<CommandJdo> findCommandsOnPrimaryFrom(final UUID uniqueId, final Integer batchSize) // <.>
 
-  CommandsDto map(final Object object) // <.>
+  Integer default1FindCommandsOnPrimaryFrom()
 }
 ----
 
-<.> `[teal]#*map*#(Object object)` : `CommandsDto`
+<.> `[teal]#*findCommandsOnPrimaryFrom*#(UUID uniqueId, Integer batchSize)` : `List<CommandJdo>`
 +
 --
-Not part of the xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[ContentMappingService] API.
+These actions should be called with HTTP Accept Header set to:application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandsDto"
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/extensions/commandreplay/primary/ui/CommandReplayOnPrimaryService.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/primary/ui/CommandReplayOnPrimaryService.adoc
new file mode 100644
index 0000000..55bc389
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/primary/ui/CommandReplayOnPrimaryService.adoc
@@ -0,0 +1,55 @@
+= CommandReplayOnPrimaryService : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+.Java Sources
+[source,java]
+----
+class CommandReplayOnPrimaryService {
+
+  @Inject
+final CommandJdoRepository commandServiceRepository;
+
+  @Inject
+final JaxbService jaxbService;
+
+  @Inject
+final MessageService messageService;
+
+  @Inject
+final ContentMappingServiceForCommandsDto contentMappingServiceForCommandsDto;
+
+  @Inject
+final CommandRetrievalService commandRetrievalService;
+
+  List<CommandJdo> findCommands(final UUID uniqueId, final Integer batchSize) // <.>
+
+  Integer default1FindCommandsOnPrimaryFrom()
+
+  Clob downloadCommands(final UUID uniqueId, final Integer batchSize, final String filenamePrefix) // <.>
+
+  Integer default1DownloadCommands()
+
+  String default2DownloadCommands()
+
+  Clob downloadCommandById(final UUID uniqueId, final String filenamePrefix) // <.>
+
+  String default1DownloadCommandById()
+}
+----
+
+<.> `[teal]#*findCommands*#(UUID uniqueId, Integer batchSize)` : `List<CommandJdo>`
++
+--
+These actions should be called with HTTP Accept Header set to:application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandsDto"
+--
+<.> `[teal]#*downloadCommands*#(UUID uniqueId, Integer batchSize, String filenamePrefix)` : `Clob`
++
+--
+These actions should be called with HTTP Accept Header set to:application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandsDto"
+--
+<.> `[teal]#*downloadCommandById*#(UUID uniqueId, String filenamePrefix)` : `Clob`
++
+--
+This action should be called with HTTP Accept Header set to:application/xml;profile="urn:org.restfulobjects:repr-types/action-result";x-ro-domain-type="org.apache.isis.schema.cmd.v1.CommandDto"
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.adoc
similarity index 58%
copy from antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.adoc
index aa393e9..5ab89f7 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/IsisModuleExtCommandReplaySecondary.adoc
@@ -1,23 +1,26 @@
-= ContentMappingServiceForCommandsDto : _class_
+= IsisModuleExtCommandReplaySecondary : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ContentMappingServiceForCommandsDto {
+class IsisModuleExtCommandReplaySecondary {
 
   @Inject
-ContentMappingServiceForCommandDto contentMappingServiceForCommandDto;
+ApplicationContext applicationContext;
 
-  Object map(Object object, final List<MediaType> acceptableMediaTypes)
+  @Inject
+IsisConfiguration isisConfiguration;
+
+  JobDetailFactoryBean replicateAndReplayJobDetailFactory()
+
+  SimpleTriggerFactoryBean replicateAndReplayTriggerFactory(JobDetail job)
 
-  CommandsDto map(final Object object) // <.>
+  SpringBeanJobFactory springBeanJobFactory()
+
+  SchedulerFactoryBean scheduler(final Trigger trigger, final JobDetail jobDetail, final SpringBeanJobFactory sbjf)
+
+  Scheduler scheduler(final Trigger trigger, final JobDetail job, final SchedulerFactoryBean factory)
 }
 ----
 
-<.> `[teal]#*map*#(Object object)` : `CommandsDto`
-+
---
-Not part of the xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[ContentMappingService] API.
---
-
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/SecondaryStatus.adoc
similarity index 80%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/SecondaryStatus.adoc
index 78f204d..be43d1f 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/SecondaryStatus.adoc
@@ -1,12 +1,22 @@
-= ResourceCoordinates : _class_
+= SecondaryStatus : _enum_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+enum SecondaryStatus {
 
-  int compareTo(final ResourceCoordinates other)
+  TICKING_CLOCK_STATUS_UNKNOWN
+
+  TICKING_CLOCK_NOT_YET_INITIALIZED
+
+  OK
+
+  REST_CALL_FAILING
+
+  FAILED_TO_UNMARSHALL_RESPONSE
+
+  UNKNOWN_STATE
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/analyser/CommandReplayAnalyser.adoc
similarity index 80%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/analyser/CommandReplayAnalyser.adoc
index 78f204d..cf76012 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/analyser/CommandReplayAnalyser.adoc
@@ -1,12 +1,14 @@
-= ResourceCoordinates : _class_
+= CommandReplayAnalyser : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface CommandReplayAnalyser {
 
-  int compareTo(final ResourceCoordinates other)
+  String analyzeReplay(final CommandJdo commandJdo) // <.>
 }
 ----
 
+<.> `[teal]#*analyzeReplay*#(CommandJdo commandJdo)` : `String`
+
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserException.adoc
similarity index 84%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserException.adoc
index 78f204d..4b271c8 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserException.adoc
@@ -1,12 +1,14 @@
-= ResourceCoordinates : _class_
+= CommandReplayAnalyserException : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class CommandReplayAnalyserException {
 
-  int compareTo(final ResourceCoordinates other)
+  void init()
+
+  String analyzeReplay(final CommandJdo commandJdo)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserResult.adoc
similarity index 84%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserResult.adoc
index 78f204d..a910422 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/analyser/CommandReplayAnalyserResult.adoc
@@ -1,12 +1,14 @@
-= ResourceCoordinates : _class_
+= CommandReplayAnalyserResult : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class CommandReplayAnalyserResult {
 
-  int compareTo(final ResourceCoordinates other)
+  void init()
+
+  String analyzeReplay(final CommandJdo commandJdo)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ControlAbstract.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/analysis/CommandReplayAnalysisService.adoc
similarity index 65%
copy from antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ControlAbstract.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/analysis/CommandReplayAnalysisService.adoc
index 1d49422..247ac51 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ControlAbstract.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/analysis/CommandReplayAnalysisService.adoc
@@ -1,26 +1,21 @@
-= ControlAbstract : _class_
+= CommandReplayAnalysisService : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ControlAbstract {
+class CommandReplayAnalysisService {
 
-  T withCheckRules()
+  @Inject
+List<CommandReplayAnalyser> analysers;
 
-  T withSkipRules()
-
-  Optional<ExceptionHandler> getExceptionHandler()
-
-  T with(ExceptionHandler exceptionHandler)
-
-  ImmutableEnumSet<ExecutionMode> getExecutionModes() // <.>
+  void analyse(final CommandJdo commandJdo) // <.>
 }
 ----
 
-<.> `[teal]#*getExecutionModes*#()` : `ImmutableEnumSet<xref:system:generated:index/applib/services/wrapper/control/ExecutionMode.adoc[ExecutionMode]>`
+<.> `[teal]#*analyse*#(CommandJdo commandJdo)` : `void`
 +
 --
-Not API.
+if hit an issue with the command having been replayed, then mark this as in error. This will effectively block the running of any further commands until the adminstrator fixes the issue.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/clock/TickingClockService.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/clock/TickingClockService.adoc
new file mode 100644
index 0000000..bc91bee
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/clock/TickingClockService.adoc
@@ -0,0 +1,41 @@
+= TickingClockService : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Only enabled for the `secondary` profile, where it sets up the framework to use _TickingFixtureClock_ so that time can be changed dynamically when running.
+
+As an additional safeguard, if the configuration keys to access the primary are not provided, then the service will not initialize.
+
+IMPORTANT: the methods provided by this service are not thread-safe, because the clock is a globally-scoped singleton rather than a thread-local. These methods should therefore only be used in single-user systems, eg a replay secondary.
+
+.Java Sources
+[source,java]
+----
+class TickingClockService {
+
+  final IsisConfiguration isisConfiguration;
+
+  void init()
+
+  boolean isInitialized()
+
+  void at(Timestamp timestamp, Runnable runnable) // <.>
+
+  T at(Timestamp timestamp, Supplier<T> supplier) // <.>
+}
+----
+
+<.> `[teal]#*at*#(Timestamp timestamp, Runnable runnable)` : `void`
++
+--
+Executes the runnable, setting the clock to be the specified time beforehand (and reinstating it to its original time afterwards).
+
+IMPORTANT: this method is not thread-safe, because the clock is a globally-scoped singleton rather than a thread-local. This method should therefore only be used in single-user systems, eg a replay secondary.
+--
+<.> `[teal]#*at*#<T>(Timestamp timestamp, Supplier<T> supplier)` : `T`
++
+--
+Executes the callable, setting the clock to be the specified time beforehand (and reinstating it to its original time afterwards).
+
+IMPORTANT: this method is not thread-safe, because the clock is a globally-scoped singleton rather than a thread-local. This method should therefore only be used in single-user systems, eg a replay secondary.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/config/SecondaryConfig.adoc
similarity index 66%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/config/SecondaryConfig.adoc
index dcdaf9a..45fcc25 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/config/SecondaryConfig.adoc
@@ -1,28 +1,35 @@
-= EntityState : _enum_
+= SecondaryConfig : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
-
 .Java Sources
 [source,java]
 ----
-enum EntityState {
+class SecondaryConfig {
+
+  @Getter
+final String primaryUser;
 
-  NOT_PERSISTABLE
+  @Getter
+final String primaryPassword;
 
-  PERSISTABLE_ATTACHED
+  @Getter
+final String primaryBaseUrlRestful;
 
-  PERSISTABLE_DETACHED
+  @Getter
+final String primaryBaseUrlWicket;
 
-  PERSISTABLE_DESTROYED
+  @Getter
+final int batchSize;
 
-  boolean isPersistable()
+  @Getter
+final String quartzUser;
 
-  boolean isAttached()
+  @Getter
+final List<String> quartzRoles;
 
-  boolean isDetached()
+  SecondaryConfig(final IsisConfiguration isisConfiguration)
 
-  boolean isDestroyed()
+  boolean isConfigured()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/executor/CommandExecutorServiceWithTime.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/executor/CommandExecutorServiceWithTime.adoc
new file mode 100644
index 0000000..2630106
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/executor/CommandExecutorServiceWithTime.adoc
@@ -0,0 +1,28 @@
+= CommandExecutorServiceWithTime : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Override of _CommandExecutorService_ that also sets the time (using the _TickingClockService_ ) to that of the _Command_ 's _Command#getTimestamp() timestamp_ before executing the command.
+
+It then delegates down to the default implementation.
+
+.Java Sources
+[source,java]
+----
+class CommandExecutorServiceWithTime {
+
+  final CommandExecutorService delegate;
+
+  final TickingClockService tickingClockService;
+
+  CommandExecutorServiceWithTime(final CommandExecutorService delegate, final TickingClockService tickingClockService)
+
+  Bookmark executeCommand(final Command command)
+
+  Bookmark executeCommand(final SudoPolicy sudoPolicy, final Command command)
+
+  Bookmark executeCommand(final CommandDto dto, final CommandOutcomeHandler outcomeHandler)
+
+  Bookmark executeCommand(final SudoPolicy sudoPolicy, final CommandDto dto, final CommandOutcomeHandler outcomeHandler)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/fetch/CommandFetcher.adoc
similarity index 71%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/fetch/CommandFetcher.adoc
index dcdaf9a..dfc35e4 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/fetch/CommandFetcher.adoc
@@ -1,28 +1,23 @@
-= EntityState : _enum_
+= CommandFetcher : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
-
 .Java Sources
 [source,java]
 ----
-enum EntityState {
-
-  NOT_PERSISTABLE
-
-  PERSISTABLE_ATTACHED
-
-  PERSISTABLE_DETACHED
+class CommandFetcher {
 
-  PERSISTABLE_DESTROYED
+  static final String URL_SUFFIX;
 
-  boolean isPersistable()
+  @Inject
+SecondaryConfig secondaryConfig;
 
-  boolean isAttached()
-
-  boolean isDetached()
-
-  boolean isDestroyed()
+  List<CommandDto> fetchCommand(final CommandJdo previousHwmIfAny) // <.>
 }
 ----
 
+<.> `[teal]#*fetchCommand*#(CommandJdo previousHwmIfAny)` : `List<CommandDto>`
++
+--
+Replicates a single command.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/job/ReplicateAndReplayJob.adoc
similarity index 80%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/job/ReplicateAndReplayJob.adoc
index 78f204d..3c853e5 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/job/ReplicateAndReplayJob.adoc
@@ -1,12 +1,17 @@
-= ResourceCoordinates : _class_
+= ReplicateAndReplayJob : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class ReplicateAndReplayJob {
 
-  int compareTo(final ResourceCoordinates other)
+  @Inject
+SecondaryConfig secondaryConfig;
+
+  Authentication authentication;
+
+  void execute(final JobExecutionContext quartzContext)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/job/SecondaryStatusData.adoc
similarity index 73%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/job/SecondaryStatusData.adoc
index dcdaf9a..9bfdd16 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/job/SecondaryStatusData.adoc
@@ -1,28 +1,18 @@
-= EntityState : _enum_
+= SecondaryStatusData : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
-
 .Java Sources
 [source,java]
 ----
-enum EntityState {
-
-  NOT_PERSISTABLE
-
-  PERSISTABLE_ATTACHED
-
-  PERSISTABLE_DETACHED
-
-  PERSISTABLE_DESTROYED
+class SecondaryStatusData {
 
-  boolean isPersistable()
+  SecondaryStatusData(final JobExecutionContext jobExecutionContext)
 
-  boolean isAttached()
+  SecondaryStatus getSecondaryStatus()
 
-  boolean isDetached()
+  SecondaryStatus getSecondaryStatus(final SecondaryStatus defaultStatus)
 
-  boolean isDestroyed()
+  void setSecondaryStatus(final SecondaryStatus mode)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/jobcallables/ReplicateAndRunCommands.adoc
similarity index 55%
copy from antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/jobcallables/ReplicateAndRunCommands.adoc
index aa393e9..3d93849 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/commanddto/conmap/ContentMappingServiceForCommandsDto.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/jobcallables/ReplicateAndRunCommands.adoc
@@ -1,23 +1,34 @@
-= ContentMappingServiceForCommandsDto : _class_
+= ReplicateAndRunCommands : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Encodes the algorithm for fetching commands from the primary, and replaying on the secondary.
+
+This class is instantiated each time the Quartz job (_org.apache.isis.extensions.commandreplay.secondary.job.ReplicateAndReplayJob_) files.
+
 .Java Sources
 [source,java]
 ----
-class ContentMappingServiceForCommandsDto {
+class ReplicateAndRunCommands {
+
+  @Inject
+CommandExecutorService commandExecutorService;
+
+  @Inject
+TransactionService transactionService;
 
   @Inject
-ContentMappingServiceForCommandDto contentMappingServiceForCommandDto;
+CommandFetcher commandFetcher;
 
-  Object map(Object object, final List<MediaType> acceptableMediaTypes)
+  @Inject
+CommandJdoRepository commandJdoRepository;
+
+  @Inject
+CommandReplayAnalysisService analysisService;
 
-  CommandsDto map(final Object object) // <.>
+  @Inject
+Optional<ReplayCommandExecutionController> controller;
+
+  SecondaryStatus call()
 }
 ----
 
-<.> `[teal]#*map*#(Object object)` : `CommandsDto`
-+
---
-Not part of the xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[ContentMappingService] API.
---
-
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/mixins/CommandJdo_exclude.adoc
similarity index 79%
copy from antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/mixins/CommandJdo_exclude.adoc
index e87ee7c..db3b544 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/mixins/CommandJdo_exclude.adoc
@@ -1,14 +1,21 @@
-= HomePageResolverService : _interface_
+= CommandJdo_exclude : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Returns a view model annotated with xref:system:generated:index/applib/annotation/HomePage.adoc[HomePage] .
-
 .Java Sources
 [source,java]
 ----
-interface HomePageResolverService {
+class CommandJdo_exclude {
+
+  final CommandJdo commandJdo;
+
+  @Inject
+Optional<SecondaryConfig> secondaryConfig;
+
+  CommandJdo act()
+
+  boolean hideAct()
 
-  Object getHomePage()
+  String disableAct()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/mixins/CommandJdo_replayQueue.adoc
similarity index 76%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/mixins/CommandJdo_replayQueue.adoc
index 98310a4..d7798e0 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/mixins/CommandJdo_replayQueue.adoc
@@ -1,14 +1,22 @@
-= EntityPropertyChange : _class_
+= CommandJdo_replayQueue : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class CommandJdo_replayQueue {
+
+  final CommandJdo commandJdo;
+
+  @Inject
+SecondaryConfig secondaryConfig;
+
+  @Inject
+CommandJdoRepository commandJdoRepository;
+
+  List<CommandJdo> coll()
 
-  String toString()
+  boolean hideColl()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/mixins/Object_openOnPrimary.adoc
similarity index 79%
copy from antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/mixins/Object_openOnPrimary.adoc
index e87ee7c..8802dd9 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/mixins/Object_openOnPrimary.adoc
@@ -1,14 +1,22 @@
-= HomePageResolverService : _interface_
+= Object_openOnPrimary : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Returns a view model annotated with xref:system:generated:index/applib/annotation/HomePage.adoc[HomePage] .
-
 .Java Sources
 [source,java]
 ----
-interface HomePageResolverService {
+class Object_openOnPrimary {
+
+  final Object object;
+
+  @Inject
+SecondaryConfig secondaryConfig;
+
+  @Inject
+BookmarkService bookmarkService;
+
+  URL act()
 
-  Object getHomePage()
+  boolean hideAct()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ControlAbstract.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/spi/ReplayCommandExecutionController.adoc
similarity index 65%
copy from antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ControlAbstract.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/spi/ReplayCommandExecutionController.adoc
index 1d49422..85d455e 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ControlAbstract.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/spi/ReplayCommandExecutionController.adoc
@@ -1,26 +1,22 @@
-= ControlAbstract : _class_
+= ReplayCommandExecutionController : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Optional SPI that allows the replicate and replay job to be paused if required.
+
+If no implementation is configured, then replication/replay will continue without interruption.
+
 .Java Sources
 [source,java]
 ----
-class ControlAbstract {
-
-  T withCheckRules()
-
-  T withSkipRules()
-
-  Optional<ExceptionHandler> getExceptionHandler()
-
-  T with(ExceptionHandler exceptionHandler)
+interface ReplayCommandExecutionController {
 
-  ImmutableEnumSet<ExecutionMode> getExecutionModes() // <.>
+  State getState() // <.>
 }
 ----
 
-<.> `[teal]#*getExecutionModes*#()` : `ImmutableEnumSet<xref:system:generated:index/applib/services/wrapper/control/ExecutionMode.adoc[ExecutionMode]>`
+<.> `[teal]#*getState*#()` : `State`
 +
 --
-Not API.
+The current state, or `null` if the service implementing this SPI has not yet been initialized.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/ui/CommandReplayOnSecondaryService.adoc
similarity index 74%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/ui/CommandReplayOnSecondaryService.adoc
index 98310a4..8e8c93c 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/commandreplay/secondary/ui/CommandReplayOnSecondaryService.adoc
@@ -1,14 +1,20 @@
-= EntityPropertyChange : _class_
+= CommandReplayOnSecondaryService : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class CommandReplayOnSecondaryService {
+
+  @Inject
+final CommandJdoRepository commandJdoRepository;
+
+  @Inject
+final JaxbService jaxbService;
+
+  CommandJdo findMostRecentReplayed()
 
-  String toString()
+  void uploadCommands(final Clob commandsDtoAsXml)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/cors/impl/IsisModuleExtCorsImpl.adoc
similarity index 83%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/cors/impl/IsisModuleExtCorsImpl.adoc
index 78f204d..e050c15 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/cors/impl/IsisModuleExtCorsImpl.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= IsisModuleExtCorsImpl : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class IsisModuleExtCorsImpl {
 
-  int compareTo(final ResourceCoordinates other)
+  FilterRegistrationBean<Filter> createCorsFilterRegistration(IsisConfiguration configuration)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ControlAbstract.adoc b/antora/components/system/modules/generated/pages/index/extensions/fullcalendar/applib/CalendarEventable.adoc
similarity index 65%
copy from antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ControlAbstract.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/fullcalendar/applib/CalendarEventable.adoc
index 1d49422..b6d63a3 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ControlAbstract.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/fullcalendar/applib/CalendarEventable.adoc
@@ -1,26 +1,24 @@
-= ControlAbstract : _class_
+= CalendarEventable : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ControlAbstract {
+interface CalendarEventable {
 
-  T withCheckRules()
+  String getCalendarName() // <.>
 
-  T withSkipRules()
-
-  Optional<ExceptionHandler> getExceptionHandler()
-
-  T with(ExceptionHandler exceptionHandler)
-
-  ImmutableEnumSet<ExecutionMode> getExecutionModes() // <.>
+  CalendarEvent toCalendarEvent()
 }
 ----
 
-<.> `[teal]#*getExecutionModes*#()` : `ImmutableEnumSet<xref:system:generated:index/applib/services/wrapper/control/ExecutionMode.adoc[ExecutionMode]>`
+<.> `[teal]#*getCalendarName*#()` : `String`
 +
 --
-Not API.
+The name of the calendar to which this event belongs.
+
+For example, anEmployeemight provide have aemployedOn, so the calendar name would be "employedOn"
+
+If there is possibly more than one date associated with the entity, then use _Calendarable_ instead.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/user/RoleMemento.adoc b/antora/components/system/modules/generated/pages/index/extensions/fullcalendar/applib/Calendarable.adoc
similarity index 50%
copy from antora/components/system/modules/generated/pages/index/applib/services/user/RoleMemento.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/fullcalendar/applib/Calendarable.adoc
index cb4274c..3dfd3a3 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/user/RoleMemento.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/fullcalendar/applib/Calendarable.adoc
@@ -1,29 +1,29 @@
-= RoleMemento : _class_
+= Calendarable : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable serializable value held by xref:system:generated:index/applib/services/user/UserMemento.adoc[UserMemento] .
-
 .Java Sources
 [source,java]
 ----
-class RoleMemento {
-
-  RoleMemento(final String name) // <.>
+interface Calendarable {
 
-  RoleMemento(final String name, final String description) // <.>
+  Set<String> getCalendarNames() // <.>
 
-  String title()
+  Map<String, CalendarEventable> getCalendarEvents() // <.>
 }
 ----
 
-<.> `[teal]#*RoleMemento*#(String name)`
+<.> `[teal]#*getCalendarNames*#()` : `Set<String>`
 +
 --
-Creates a new role with the specified name. Description is left blank.
+The names of unique "calendar"s provided by this object.
+
+The "calendar" is a string identifier that indicates the nature of this event.
+
+For example, an event of a lease'sFixedBreakOptionhas three dates: the _break date_ , the _exercise date_ and the _reminder date_ . These therefore correspond to three different calendar names, respectively _Fixed break_ , _Fixed break exercise_ and _Fixed break exercise reminder_ .
 --
-<.> `[teal]#*RoleMemento*#(String name, String description)`
+<.> `[teal]#*getCalendarEvents*#()` : `Map<String, CalendarEventable>`
 +
 --
-Creates a new role with the specified name and description.
+The events associated with this object, keyed by their corresponding _#getCalendarNames() calendar name_ .
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/fullcalendar/applib/IsisModuleExtFullCalendarApplib.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/fullcalendar/applib/IsisModuleExtFullCalendarApplib.adoc
index 78f204d..7121ca4 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/fullcalendar/applib/IsisModuleExtFullCalendarApplib.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= IsisModuleExtFullCalendarApplib : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class IsisModuleExtFullCalendarApplib {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/AbstractViewModel.adoc b/antora/components/system/modules/generated/pages/index/extensions/fullcalendar/applib/spi/CalendarableDereferencingService.adoc
similarity index 56%
copy from antora/components/system/modules/generated/pages/index/applib/AbstractViewModel.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/fullcalendar/applib/spi/CalendarableDereferencingService.adoc
index 7747117..0d801fb 100644
--- a/antora/components/system/modules/generated/pages/index/applib/AbstractViewModel.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/fullcalendar/applib/spi/CalendarableDereferencingService.adoc
@@ -1,16 +1,16 @@
-= AbstractViewModel : _class_
+= CalendarableDereferencingService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Convenience super class for view models that wish to interact with the container.
+Optional SPI service that allows a _Calendarable_ or _CalendarEventable_ object to be translated/dereferenced to some other object, typically its owner. The markers on the calendar then open up the dereferenced object, rather than the original _Calendarable_ or _CalendarEventable_ object.
 
-Subclassing is NOT mandatory; the methods in this superclass can be pushed down into domain objects and another superclass used if required.
-
-As an alternative, consider simply annotating the view model class with _org.apache.isis.applib.annotation.ViewModel_ .
+For example, the `incode-module-commchannel` 's `Note` implements `CalendarEventable` , but this service allows the _owner_ of the `Note` (ie the `Notable` ) sto be shown instead.
 
 .Java Sources
 [source,java]
 ----
-class AbstractViewModel {
+interface CalendarableDereferencingService {
+
+  Object dereference(final Object calendarableOrCalendarEventable)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc b/antora/components/system/modules/generated/pages/index/extensions/fullcalendar/applib/value/CalendarEvent.adoc
similarity index 54%
copy from antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/fullcalendar/applib/value/CalendarEvent.adoc
index bfc7391..9ebefe6 100644
--- a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/fullcalendar/applib/value/CalendarEvent.adoc
@@ -1,36 +1,43 @@
-= Markup : _class_
+= CalendarEvent : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable value type holding pre-rendered HTML.
+Value type representing an event on a calendar.
 
 .Java Sources
 [source,java]
 ----
-class Markup {
+class CalendarEvent {
 
-  Markup()
+  // no default
+static final CalendarEvent DEFAULT_VALUE;
 
-  Markup(String html)
+  CalendarEvent(final DateTime dateTime, final String calendarName, final String title)
 
-  String asHtml()
+  CalendarEvent(final DateTime dateTime, final String calendarName, final String title, final String notes)
 
-  boolean isEqualTo(final Markup other)
+  DateTime getDateTime()
 
-  String title()
+  String getCalendarName()
 
-  boolean equals(final Object obj)
+  String getTitle()
+
+  String getNotes()
+
+  CalendarEvent withDateTime(final DateTime date)
+
+  CalendarEvent withCalendarName(final String calendarName)
+
+  CalendarEvent withTitle(final String title)
+
+  CalendarEvent withNotes(final String notes)
 
   int hashCode()
 
+  boolean equals(Object obj)
+
   String toString()
 
-  Markup valueOfHtml(String html) // <.>
+  int typicalLength()
 }
 ----
 
-<.> `[teal]#*_valueOfHtml_*#(String html)` : `xref:system:generated:index/applib/value/Markup.adoc[Markup]`
-+
---
-syntactic sugar
---
-
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/fullcalendar/ui/component/IsisModuleExtFullCalendarUi.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/fullcalendar/ui/component/IsisModuleExtFullCalendarUi.adoc
index 78f204d..d245fd9 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/fullcalendar/ui/component/IsisModuleExtFullCalendarUi.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= IsisModuleExtFullCalendarUi : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class IsisModuleExtFullCalendarUi {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.adoc
index 78f204d..4326add 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/hsqldbmgr/dom/IsisModuleExtHsqldbMgr.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= IsisModuleExtHsqldbMgr : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class IsisModuleExtHsqldbMgr {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/hsqldbmgr/dom/services/HsqlDbManagerMenu.adoc
similarity index 81%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/hsqldbmgr/dom/services/HsqlDbManagerMenu.adoc
index 78f204d..29badc6 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/hsqldbmgr/dom/services/HsqlDbManagerMenu.adoc
@@ -1,12 +1,16 @@
-= ResourceCoordinates : _class_
+= HsqlDbManagerMenu : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class HsqlDbManagerMenu {
 
-  int compareTo(final ResourceCoordinates other)
+  HsqlDbManagerMenu(DataSourceIntrospectionService datasourceIntrospector)
+
+  void hsqlDbManager()
+
+  boolean hideHsqlDbManager()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/jaxrsclient/applib/IsisModuleExtJaxRsClientApplib.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/jaxrsclient/applib/IsisModuleExtJaxRsClientApplib.adoc
index 78f204d..b6f9982 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/jaxrsclient/applib/IsisModuleExtJaxRsClientApplib.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= IsisModuleExtJaxRsClientApplib : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class IsisModuleExtJaxRsClientApplib {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc b/antora/components/system/modules/generated/pages/index/extensions/jaxrsclient/applib/client/JaxRsClient.adoc
similarity index 77%
copy from antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/jaxrsclient/applib/client/JaxRsClient.adoc
index e87ee7c..7f7b70f 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/jaxrsclient/applib/client/JaxRsClient.adoc
@@ -1,14 +1,14 @@
-= HomePageResolverService : _interface_
+= JaxRsClient : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Returns a view model annotated with xref:system:generated:index/applib/annotation/HomePage.adoc[HomePage] .
-
 .Java Sources
 [source,java]
 ----
-interface HomePageResolverService {
+interface JaxRsClient {
+
+  JaxRsResponse get(URI uri, Class<?> dtoClass, ReprType reprType, String username, String password)
 
-  Object getHomePage()
+  JaxRsResponse post(URI uri, String bodyJson, String username, String password)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/jaxrsclient/applib/client/JaxRsResponse.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/jaxrsclient/applib/client/JaxRsResponse.adoc
index 78f204d..c213587 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/jaxrsclient/applib/client/JaxRsResponse.adoc
@@ -1,12 +1,14 @@
-= ResourceCoordinates : _class_
+= JaxRsResponse : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface JaxRsResponse {
 
-  int compareTo(final ResourceCoordinates other)
+  int getStatus()
+
+  T readEntity(final Class<T> entityType)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/modelannotation/applib/IsisModuleIncModelApplib.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/modelannotation/applib/IsisModuleIncModelApplib.adoc
index 78f204d..57e7530 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/modelannotation/applib/IsisModuleIncModelApplib.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= IsisModuleIncModelApplib : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class IsisModuleIncModelApplib {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/extensions/modelannotation/applib/annotation/Model.adoc
similarity index 72%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/modelannotation/applib/annotation/Model.adoc
index dcdaf9a..f221724 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/modelannotation/applib/annotation/Model.adoc
@@ -1,28 +1,14 @@
-= EntityState : _enum_
+= Model : _annotation_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
+Indicates that a method is a supporting-method, one that contributes (hide, validate, ...) to an *Action* .
+
+By placing the _Model_ annotation on a method, a contract with the meta-model is enforced, such that this method must be recognized and cannot be ignored.
 
 .Java Sources
 [source,java]
 ----
-enum EntityState {
-
-  NOT_PERSISTABLE
-
-  PERSISTABLE_ATTACHED
-
-  PERSISTABLE_DETACHED
-
-  PERSISTABLE_DESTROYED
-
-  boolean isPersistable()
-
-  boolean isAttached()
-
-  boolean isDetached()
-
-  boolean isDestroyed()
+@interface Model {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/modelannotation/metamodel/IsisModuleExtModelAnnotation.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/modelannotation/metamodel/IsisModuleExtModelAnnotation.adoc
index 78f204d..a0b21ce 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/modelannotation/metamodel/IsisModuleExtModelAnnotation.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= IsisModuleExtModelAnnotation : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class IsisModuleExtModelAnnotation {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/extensions/modelannotation/metamodel/facets/SupportingMethodValidatorRefinerFactory.adoc
similarity index 75%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/modelannotation/metamodel/facets/SupportingMethodValidatorRefinerFactory.adoc
index 98310a4..76c48ab 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/modelannotation/metamodel/facets/SupportingMethodValidatorRefinerFactory.adoc
@@ -1,14 +1,16 @@
-= EntityPropertyChange : _class_
+= SupportingMethodValidatorRefinerFactory : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class SupportingMethodValidatorRefinerFactory {
+
+  SupportingMethodValidatorRefinerFactory()
+
+  void process(ProcessMethodContext processMethodContext)
 
-  String toString()
+  void refineProgrammingModel(ProgrammingModel programmingModel)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/modelannotation/metamodel/services/IncubatorMetaModelPlugin.adoc
similarity index 85%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/modelannotation/metamodel/services/IncubatorMetaModelPlugin.adoc
index 78f204d..317f25e 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/modelannotation/metamodel/services/IncubatorMetaModelPlugin.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= IncubatorMetaModelPlugin : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class IncubatorMetaModelPlugin {
 
-  int compareTo(final ResourceCoordinates other)
+  void refineProgrammingModel(ProgrammingModel programmingModel)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/quartz/IsisModuleExtQuartzImpl.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/quartz/IsisModuleExtQuartzImpl.adoc
index 78f204d..af53926 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/quartz/IsisModuleExtQuartzImpl.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= IsisModuleExtQuartzImpl : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class IsisModuleExtQuartzImpl {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ControlAbstract.adoc b/antora/components/system/modules/generated/pages/index/extensions/quartz/context/JobExecutionData.adoc
similarity index 62%
copy from antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ControlAbstract.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/quartz/context/JobExecutionData.adoc
index 1d49422..8986648 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/wrapper/control/ControlAbstract.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/quartz/context/JobExecutionData.adoc
@@ -1,26 +1,27 @@
-= ControlAbstract : _class_
+= JobExecutionData : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+Requires that the job is annotated with the _org.quartz.PersistJobDataAfterExecution_ annotation.
+
 .Java Sources
 [source,java]
 ----
-class ControlAbstract {
-
-  T withCheckRules()
-
-  T withSkipRules()
-
-  Optional<ExceptionHandler> getExceptionHandler()
+class JobExecutionData {
 
-  T with(ExceptionHandler exceptionHandler)
+  String getString(String key, final String defaultValue) // <.>
 
-  ImmutableEnumSet<ExecutionMode> getExecutionModes() // <.>
+  void setString(String key, String value) // <.>
 }
 ----
 
-<.> `[teal]#*getExecutionModes*#()` : `ImmutableEnumSet<xref:system:generated:index/applib/services/wrapper/control/ExecutionMode.adoc[ExecutionMode]>`
+<.> `[teal]#*getString*#(String key, String defaultValue)` : `String`
++
+--
+Lookup property from the job detail.
+--
+<.> `[teal]#*setString*#(String key, String value)` : `void`
 +
 --
-Not API.
+Save key into the job detail obtained from context.
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/quartz/spring/AutowiringSpringBeanJobFactory.adoc
similarity index 84%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/quartz/spring/AutowiringSpringBeanJobFactory.adoc
index 78f204d..1b5cd59 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/quartz/spring/AutowiringSpringBeanJobFactory.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= AutowiringSpringBeanJobFactory : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class AutowiringSpringBeanJobFactory {
 
-  int compareTo(final ResourceCoordinates other)
+  void setApplicationContext(final ApplicationContext context)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/extensions/restclient/ActionParameterListBuilder.adoc b/antora/components/system/modules/generated/pages/index/extensions/restclient/ActionParameterListBuilder.adoc
new file mode 100644
index 0000000..de0d5e1
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/extensions/restclient/ActionParameterListBuilder.adoc
@@ -0,0 +1,28 @@
+= ActionParameterListBuilder : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+.Java Sources
+[source,java]
+----
+class ActionParameterListBuilder {
+
+  ActionParameterListBuilder addActionParameter(String parameterName, String parameterValue)
+
+  ActionParameterListBuilder addActionParameter(String parameterName, int parameterValue)
+
+  ActionParameterListBuilder addActionParameter(String parameterName, long parameterValue)
+
+  ActionParameterListBuilder addActionParameter(String parameterName, byte parameterValue)
+
+  ActionParameterListBuilder addActionParameter(String parameterName, short parameterValue)
+
+  ActionParameterListBuilder addActionParameter(String parameterName, double parameterValue)
+
+  ActionParameterListBuilder addActionParameter(String parameterName, float parameterValue)
+
+  ActionParameterListBuilder addActionParameter(String parameterName, boolean parameterValue)
+
+  Entity<String> build()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/restclient/IsisModuleExtRestClient.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/restclient/IsisModuleExtRestClient.adoc
index 78f204d..b827b4e 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/restclient/IsisModuleExtRestClient.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= IsisModuleExtRestClient : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class IsisModuleExtRestClient {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/extensions/restclient/ResponseDigest.adoc b/antora/components/system/modules/generated/pages/index/extensions/restclient/ResponseDigest.adoc
new file mode 100644
index 0000000..e892401
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/extensions/restclient/ResponseDigest.adoc
@@ -0,0 +1,53 @@
+= ResponseDigest : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+.Java Sources
+[source,java]
+----
+class ResponseDigest {
+
+  ResponseDigest<T> of(final Response response, final Class<T> entityType) // <.>
+
+  ResponseDigest<T> ofList(final Response response, final Class<T> entityType, final GenericType<List<T>> genericType) // <.>
+
+  ResponseDigest<T> ofAsyncFailure(final Future<Response> asyncResponse, final Class<T> entityType, final Exception failure) // <.>
+
+  boolean isSuccess() // <.>
+
+  boolean isFailure() // <.>
+
+  Optional<T> getEntity() // <.>
+
+  Can<T> getEntities() // <.>
+
+  Exception getFailureCause() // <.>
+
+  T singletonOrElseMapFailure(Function<Exception, T> failureMapper) // <.>
+
+  Can<T> multipleOrElseMapFailure(Function<Exception, Can<T>> failureMapper) // <.>
+}
+----
+
+<.> `[teal]#*_of_*#<T>(Response response, Class<T> entityType)` : `ResponseDigest<T>`
++
+--
+synchronous response processing (single entity)
+--
+<.> `[teal]#*_ofList_*#<T>(Response response, Class<T> entityType, GenericType<List<T>> genericType)` : `ResponseDigest<T>`
++
+--
+synchronous response processing (list of entities)
+--
+<.> `[teal]#*_ofAsyncFailure_*#<T>(Future<Response> asyncResponse, Class<T> entityType, Exception failure)` : `ResponseDigest<T>`
++
+--
+a-synchronous response failure processing
+--
+<.> `[teal]#*isSuccess*#()` : `boolean`
+<.> `[teal]#*isFailure*#()` : `boolean`
+<.> `[teal]#*getEntity*#()` : `Optional<T>`
+<.> `[teal]#*getEntities*#()` : `Can<T>`
+<.> `[teal]#*getFailureCause*#()` : `Exception`
+<.> `[teal]#*singletonOrElseMapFailure*#(Function<Exception, T> failureMapper)` : `T`
+<.> `[teal]#*multipleOrElseMapFailure*#(Function<Exception, Can<T>> failureMapper)` : `Can<T>`
+
diff --git a/antora/components/system/modules/generated/pages/index/extensions/restclient/RestfulClient.adoc b/antora/components/system/modules/generated/pages/index/extensions/restclient/RestfulClient.adoc
new file mode 100644
index 0000000..1368dde
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/extensions/restclient/RestfulClient.adoc
@@ -0,0 +1,95 @@
+= RestfulClient : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Setup the Restful Client with Basic-Auth:Synchronous example:Asynchronous example:Maven Setup:
+
+----
+
+RestfulClientConfig clientConfig = new RestfulClientConfig();
+clientConfig.setRestfulBase("http://localhost:8080/helloworld/restful/");
+clientConfig.setUseBasicAuth(true); // default = false
+clientConfig.setRestfulAuthUser("sven");
+clientConfig.setRestfulAuthPassword("pass");
+clientConfig.setUseRequestDebugLogging(true); // default = false
+
+RestfulClient client = RestfulClient.ofConfig(clientConfig);
+----
+
+----
+ _Builder request = client.request(
+                "services/myService/actions/lookupMyObjectById/invoke",
+                SuppressionType.RO);
+
+Entity args = client.arguments()
+        .addActionParameter("id", "12345")
+        .build();
+
+Response response = request.post(args);
+
+ResponseDigest digest = client.digest(response, MyObject.class);_ 
+
+if(digest.isSuccess()) {
+    System.out.println("result: "+ digest.getEntities().getSingletonOrFail().get$$instanceId());
+} else {
+    digest.getFailureCause().printStackTrace();
+}
+----
+
+----
+ _Builder request = client.request(
+                "services/myService/actions/lookupMyObjectById/invoke",
+                SuppressionType.RO);
+
+Entity args = client.arguments()
+        .addActionParameter("id", "12345")
+        .build();
+
+Future asyncResponse = request
+        .async()
+        .post(args);
+
+CompletableFuture> digestFuture =
+                client.digest(asyncResponse, MyObject.class);
+
+ResponseDigest digest = digestFuture.get(); // blocking_ 
+
+if(digest.isSuccess()) {
+    System.out.println("result: "+ digest.getEntities().getSingletonOrFail().get$$instanceId());
+} else {
+    digest.getFailureCause().printStackTrace();
+}
+----
+
+----
+ _org.apache.isis.coreisis-core-applib2.0.0-M2-SNAPSHOTorg.glassfish.jersey.extjersey-spring52.29.1org.glassfishjavax.json1.1.4org.eclipse.persistenceorg.eclipse.persistence.moxy2.7.5_ 
+----
+
+.Java Sources
+[source,java]
+----
+class RestfulClient {
+
+  RestfulClient ofConfig(RestfulClientConfig clientConfig)
+
+  void init(RestfulClientConfig clientConfig)
+
+  RestfulClientConfig getConfig()
+
+  Client getJaxRsClient()
+
+  Builder request(String path, SuppressionType... suppressionTypes)
+
+  Builder request(String path, EnumSet<SuppressionType> suppressionTypes)
+
+  ActionParameterListBuilder arguments()
+
+  ResponseDigest<T> digest(Response response, Class<T> entityType)
+
+  ResponseDigest<T> digestList(Response response, Class<T> entityType, GenericType<List<T>> genericType)
+
+  CompletableFuture<ResponseDigest<T>> digest(final Future<Response> asyncResponse, final Class<T> entityType)
+
+  CompletableFuture<ResponseDigest<T>> digestList(final Future<Response> asyncResponse, final Class<T> entityType, GenericType<List<T>> genericType)
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/restclient/RestfulClientConfig.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/restclient/RestfulClientConfig.adoc
index 78f204d..393c55c 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/restclient/RestfulClientConfig.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= RestfulClientConfig : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class RestfulClientConfig {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/extensions/restclient/RestfulClientException.adoc
similarity index 75%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/restclient/RestfulClientException.adoc
index 98310a4..5645290 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/restclient/RestfulClientException.adoc
@@ -1,14 +1,18 @@
-= EntityPropertyChange : _class_
+= RestfulClientException : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class RestfulClientException {
+
+  RestfulClientException()
+
+  RestfulClientException(final String message)
+
+  RestfulClientException(final Throwable cause)
 
-  String toString()
+  RestfulClientException(final String message, final Throwable cause)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc b/antora/components/system/modules/generated/pages/index/extensions/restclient/auth/BasicAuthFilter.adoc
similarity index 77%
copy from antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/restclient/auth/BasicAuthFilter.adoc
index e87ee7c..9f9c81d 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/homepage/HomePageResolverService.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/restclient/auth/BasicAuthFilter.adoc
@@ -1,14 +1,18 @@
-= HomePageResolverService : _interface_
+= BasicAuthFilter : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Returns a view model annotated with xref:system:generated:index/applib/annotation/HomePage.adoc[HomePage] .
-
 .Java Sources
 [source,java]
 ----
-interface HomePageResolverService {
+class BasicAuthFilter {
+
+  BasicAuthFilter of(Credentials credentials)
+
+  Credentials getCredentials()
+
+  void setCredentials(Credentials credentials)
 
-  Object getHomePage()
+  void filter(ClientRequestContext requestContext)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/extensions/restclient/log/ClientConversationFilter.adoc
similarity index 65%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/restclient/log/ClientConversationFilter.adoc
index dcdaf9a..8c7c303 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/restclient/log/ClientConversationFilter.adoc
@@ -1,28 +1,18 @@
-= EntityState : _enum_
+= ClientConversationFilter : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-TODO lower case enums not up to standard, is this an issue?
-
 .Java Sources
 [source,java]
 ----
-enum EntityState {
-
-  NOT_PERSISTABLE
-
-  PERSISTABLE_ATTACHED
-
-  PERSISTABLE_DETACHED
-
-  PERSISTABLE_DESTROYED
+interface ClientConversationFilter {
 
-  boolean isPersistable()
+  void onRequest(String endpoint, String method, String acceptHeaderParsing, Map<String, List<String>> headers, String body)
 
-  boolean isAttached()
+  void onResponse(int httpReturnCode, Map<String, List<String>> headers, String body)
 
-  boolean isDetached()
+  void filter(ClientRequestContext requestContext)
 
-  boolean isDestroyed()
+  void filter(ClientRequestContext requestContext, ClientResponseContext responseContext)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/extensions/restclient/log/ClientConversationLogger.adoc
similarity index 74%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/restclient/log/ClientConversationLogger.adoc
index 98310a4..9a0a333 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/restclient/log/ClientConversationLogger.adoc
@@ -1,14 +1,14 @@
-= EntityPropertyChange : _class_
+= ClientConversationLogger : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class ClientConversationLogger {
+
+  void onRequest(String endpoint, String method, String acceptHeaderParsing, Map<String, List<String>> headers, String body)
 
-  String toString()
+  void onResponse(int httpReturnCode, Map<String, List<String>> headers, String body)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/IsisModuleExtSecmanApi.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/secman/api/IsisModuleExtSecmanApi.adoc
index 78f204d..487a0a1 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/IsisModuleExtSecmanApi.adoc
@@ -1,12 +1,10 @@
-= ResourceCoordinates : _class_
+= IsisModuleExtSecmanApi : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class IsisModuleExtSecmanApi {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/extensions/secman/api/SecmanConfiguration.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/SecmanConfiguration.adoc
new file mode 100644
index 0000000..851af43
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/SecmanConfiguration.adoc
@@ -0,0 +1,67 @@
+= SecmanConfiguration : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+.Java Sources
+[source,java]
+----
+class SecmanConfiguration {
+
+  @Getter
+@Builder.Default
+@NonNull
+final String regularUserRoleName;
+
+  @Getter
+@Builder.Default
+@NonNull
+final String fixtureRoleName;
+
+  @Getter
+@Builder.Default
+@NonNull
+final String adminRoleName;
+
+  @Getter
+@Builder.Default
+@NonNull
+final String adminUserName;
+
+  @Getter
+@Builder.Default
+@NonNull
+final String adminPassword;
+
+  @Getter
+@Builder.Default
+@NonNull
+final String[] adminStickyNamespacePermissions; // <.>
+
+  @Getter
+@Singular
+final Set<String> adminAdditionalNamespacePermissions;
+
+  @Getter
+@Builder.Default
+final boolean autoEnableIfDelegatedAndAuthenticated; // <.>
+
+  Stream<String> streamAdminNamespacePermissions()
+
+  boolean isStickyAdminNamespace(String featureFqn)
+}
+----
+
+<.> `[teal]#*adminStickyNamespacePermissions*#` : `String[]`
++
+--
+cannot be removed via user interface
+--
+<.> `[teal]#*autoEnableIfDelegatedAndAuthenticated*#` : `boolean`
++
+--
+Delegated users, on first successful logon, are auto-created but disabled (by default).
+
+This option allows to override this behavior, such that authenticated users are also auto-enabled.
+
+default: false
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/SecurityRealm.adoc
similarity index 87%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/secman/api/SecurityRealm.adoc
index 78f204d..904265d 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/SecurityRealm.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= SecurityRealm : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface SecurityRealm {
 
-  int compareTo(final ResourceCoordinates other)
+  EnumSet<SecurityRealmCharacteristic> getCharacteristics()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/SecurityRealmCharacteristic.adoc
similarity index 88%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/secman/api/SecurityRealmCharacteristic.adoc
index 78f204d..1f29d96 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/SecurityRealmCharacteristic.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= SecurityRealmCharacteristic : _enum_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+enum SecurityRealmCharacteristic {
 
-  int compareTo(final ResourceCoordinates other)
+  DELEGATING
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/SecurityRealmService.adoc
similarity index 88%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/secman/api/SecurityRealmService.adoc
index 78f204d..94ce001 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/SecurityRealmService.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= SecurityRealmService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface SecurityRealmService {
 
-  int compareTo(final ResourceCoordinates other)
+  SecurityRealm getCurrentRealm()
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/encryption/PasswordEncryptionService.adoc
similarity index 81%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/secman/api/encryption/PasswordEncryptionService.adoc
index 78f204d..c183e63 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/encryption/PasswordEncryptionService.adoc
@@ -1,12 +1,14 @@
-= ResourceCoordinates : _class_
+= PasswordEncryptionService : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+interface PasswordEncryptionService {
 
-  int compareTo(final ResourceCoordinates other)
+  String encrypt(final String password)
+
+  boolean matches(final String candidate, final String encrypted)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/encryption/PasswordEncryptionServiceNone.adoc
similarity index 82%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/secman/api/encryption/PasswordEncryptionServiceNone.adoc
index 78f204d..78214a1 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/encryption/PasswordEncryptionServiceNone.adoc
@@ -1,12 +1,14 @@
-= ResourceCoordinates : _class_
+= PasswordEncryptionServiceNone : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
+class PasswordEncryptionServiceNone {
 
-  int compareTo(final ResourceCoordinates other)
+  String encrypt(String password)
+
+  boolean matches(String candidate, String encrypted)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/events/UserCreatedEvent.adoc
similarity index 62%
copy from antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/secman/api/events/UserCreatedEvent.adoc
index bfc7391..96214de 100644
--- a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/events/UserCreatedEvent.adoc
@@ -1,36 +1,31 @@
-= Markup : _class_
+= UserCreatedEvent : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable value type holding pre-rendered HTML.
+SecMan fires this event when a new user entity just got persisted.
 
-.Java Sources
-[source,java]
-----
-class Markup {
-
-  Markup()
+Users may subscribe to this event in order to apply business logic to the newly created user. eg. add default roles
 
-  Markup(String html)
-
-  String asHtml()
-
-  boolean isEqualTo(final Markup other)
+----
 
-  String title()
+@Component
+public class Listener {
+    @EventListener(UserCreatedEvent.class)
+    public void listenOn(UserCreatedEvent event) {
+        // business logic ...
+    }
+}
+----
 
-  boolean equals(final Object obj)
+.Java Sources
+[source,java]
+----
+class UserCreatedEvent {
 
-  int hashCode()
+  AccountType getAccountType()
 
-  String toString()
+  String getUserName()
 
-  Markup valueOfHtml(String html) // <.>
+  boolean isDelegated()
 }
 ----
 
-<.> `[teal]#*_valueOfHtml_*#(String html)` : `xref:system:generated:index/applib/value/Markup.adoc[Markup]`
-+
---
-syntactic sugar
---
-
diff --git a/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermission.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermission.adoc
new file mode 100644
index 0000000..9d95110
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermission.adoc
@@ -0,0 +1,49 @@
+= ApplicationPermission : _interface_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Specifies how a particular _#getRole() application role_ may interact with a specific _#getFeature() application feature_ .
+
+Each permission has a _#getRule() rule_ and a _#getMode() mode_ . The _ApplicationPermissionRule rule_ determines whether the permission _ApplicationPermissionRule#ALLOW grants_ access to the feature or _ApplicationPermissionRule#VETO veto_ es access to it. The _ApplicationPermissionMode mode_ indicates whether the role can _ApplicationPermissionMode#VIEWING view_ the feature or can _ApplicationPermissionMode#CHANGING change_ the state of the system using the feature.
+
+For a given permission, there is an interaction between the _ApplicationPermissionRule rule_ and the _ApplicationPermissionMode mode_ :
+
+* for an _ApplicationPermissionRule#ALLOW allow_ , a _ApplicationPermissionMode#CHANGING usability_ allow implies _ApplicationPermissionMode#VIEWING visibility_ allow.
+* conversely, for a _ApplicationPermissionRule#VETO veto_ , a _ApplicationPermissionMode#VIEWING visibility_ veto implies a _ApplicationPermissionMode#CHANGING usability_ veto.
+
+.Java Sources
+[source,java]
+----
+interface ApplicationPermission {
+
+  String title() // <.>
+
+  ApplicationFeatureType getFeatureType()
+
+  ApplicationRole getRole()
+
+  void setRole(ApplicationRole applicationRole)
+
+  ApplicationPermissionRule getRule()
+
+  void setRule(ApplicationPermissionRule rule)
+
+  ApplicationPermissionMode getMode()
+
+  void setMode(ApplicationPermissionMode changing)
+
+  String getType()
+
+  String getFeatureFqn()
+
+  void setFeatureFqn(String featureFqn)
+
+  Optional<ApplicationFeatureId> createFeatureId()
+}
+----
+
+<.> `[teal]#*title*#()` : `String`
++
+--
+having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermissionMode.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermissionMode.adoc
new file mode 100644
index 0000000..18adc599
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermissionMode.adoc
@@ -0,0 +1,37 @@
+= ApplicationPermissionMode : _enum_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Named after UNIX modes (chmodetc), determines that nature of access (of denial of access if vetoed) to an _ApplicationFeature_ .
+
+.Java Sources
+[source,java]
+----
+enum ApplicationPermissionMode {
+
+  VIEWING // <.>
+
+  CHANGING // <.>
+
+  String toString()
+}
+----
+
+<.> `[teal]#*_VIEWING_*#`
++
+--
+Whether the user/role can view (or is prevented from viewing) the application feature (class member).
+
+The _ApplicationPermissionRule rule_ of the _org.apache.isis.extensions.security.manager.jdo.dom.permission.ApplicationPermission_ indicates whether access is being granted or denied.
+--
+<.> `[teal]#*_CHANGING_*#`
++
+--
+Whether can user/role can change (or is prevented from changing) the state of the system using the application feature (class member).
+
+In other words, whether they can execute (if an action, modify/clear (if a property), addTo/removeFrom (if a collection).
+
+The _ApplicationPermissionRule rule_ of the _org.apache.isis.extensions.security.manager.jdo.dom.permission.ApplicationPermission_ indicates whether access is being granted or denied.
+
+Note that the Wicket viewer does not at the time of writing (Isis 1.6.0) support the notion of mutable collections. The RO viewer does, however.
+--
+
diff --git a/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermissionRepository.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermissionRepository.adoc
new file mode 100644
index 0000000..2f112db
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermissionRepository.adoc
@@ -0,0 +1,30 @@
+= ApplicationPermissionRepository : _interface_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+.Java Sources
+[source,java]
+----
+interface ApplicationPermissionRepository {
+
+  Optional<P> findByUserAndPermissionValue(String username, ApplicationPermissionValue changingPermissionValue)
+
+  Optional<P> findByRoleAndRuleAndFeature(ApplicationRole holder, ApplicationPermissionRule rule, ApplicationFeatureType type, String featureFqn)
+
+  Collection<P> allPermissions()
+
+  Collection<P> findOrphaned()
+
+  Collection<P> findByFeatureCached(ApplicationFeatureId featureId)
+
+  Collection<P> findByRoleAndRuleAndFeatureTypeCached(ApplicationRole holder, ApplicationPermissionRule rule, ApplicationFeatureType type)
+
+  P newApplicationPermission() // <.>
+
+  P newPermission(ApplicationRole role, ApplicationPermissionRule rule, ApplicationPermissionMode mode, String packageFqn, String className, String memberName)
+
+  P newPermission(ApplicationRole holder, ApplicationPermissionRule rule, ApplicationPermissionMode mode, ApplicationFeatureType featureType, String featureFqn)
+}
+----
+
+<.> `[teal]#*newApplicationPermission*#()` : `P`
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermissionRule.adoc
similarity index 56%
copy from antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermissionRule.adoc
index bfc7391..691b0a6 100644
--- a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermissionRule.adoc
@@ -1,36 +1,33 @@
-= Markup : _class_
+= ApplicationPermissionRule : _enum_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable value type holding pre-rendered HTML.
+Whether the permission _#ALLOW grants_ or _#VETO denies_ access to an _ApplicationFeature_ .
 
 .Java Sources
 [source,java]
 ----
-class Markup {
+enum ApplicationPermissionRule {
 
-  Markup()
+  ALLOW // <.>
 
-  Markup(String html)
-
-  String asHtml()
-
-  boolean isEqualTo(final Markup other)
-
-  String title()
-
-  boolean equals(final Object obj)
-
-  int hashCode()
+  VETO // <.>
 
   String toString()
-
-  Markup valueOfHtml(String html) // <.>
 }
 ----
 
-<.> `[teal]#*_valueOfHtml_*#(String html)` : `xref:system:generated:index/applib/value/Markup.adoc[Markup]`
+<.> `[teal]#*_ALLOW_*#`
 +
 --
-syntactic sugar
+The permission grants the ability to view/use the _ApplicationFeature_ .
+
+The _ApplicationPermissionMode mode_ determines whether the permission is to only view or also to use the _ApplicationFeature_ .
+--
+<.> `[teal]#*_VETO_*#`
++
+--
+The permission prevents the ability to view/use the _ApplicationFeature_ .
+
+The _ApplicationPermissionMode mode_ determines whether the permission is to only view or also to use the _ApplicationFeature_ .
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermissionValue.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermissionValue.adoc
new file mode 100644
index 0000000..8c67a98
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermissionValue.adoc
@@ -0,0 +1,34 @@
+= ApplicationPermissionValue : _class_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+A serializable value object representing an (anonymized) _org.apache.isis.extensions.security.manager.jdo.dom.permission.ApplicationPermission_ .
+
+Intended for value type arithmetic and also for caching. No user/role information is held because that information is not required to perform the arithmetic.
+
+.Java Sources
+[source,java]
+----
+class ApplicationPermissionValue {
+
+  ApplicationPermissionValue(final ApplicationFeatureId featureId, final ApplicationPermissionRule rule, final ApplicationPermissionMode mode)
+
+  ApplicationFeatureId getFeatureId()
+
+  ApplicationPermissionRule getRule()
+
+  ApplicationPermissionMode getMode()
+
+  boolean implies(final ApplicationFeatureId featureId, final ApplicationPermissionMode mode)
+
+  boolean refutes(final ApplicationFeatureId featureId, final ApplicationPermissionMode mode)
+
+  int compareTo(final ApplicationPermissionValue o)
+
+  boolean equals(final Object o)
+
+  int hashCode()
+
+  String toString()
+}
+----
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermissionValueSet.adoc
similarity index 57%
copy from antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermissionValueSet.adoc
index bfc7391..53e9a59 100644
--- a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/ApplicationPermissionValueSet.adoc
@@ -1,36 +1,26 @@
-= Markup : _class_
+= ApplicationPermissionValueSet : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable value type holding pre-rendered HTML.
+A serializable value object representing a set of (anonymized) _ApplicationPermissionValue permission_ s.
+
+Intended for value type arithmetic and also for caching.
 
 .Java Sources
 [source,java]
 ----
-class Markup {
-
-  Markup()
-
-  Markup(String html)
+class ApplicationPermissionValueSet {
 
-  String asHtml()
+  ApplicationPermissionValueSet(final List<ApplicationPermissionValue> permissionValues, final PermissionsEvaluationService permissionsEvaluationService)
 
-  boolean isEqualTo(final Markup other)
+  boolean grants(final ApplicationFeatureId featureId, final ApplicationPermissionMode mode)
 
-  String title()
+  Evaluation evaluate(final ApplicationFeatureId featureId, final ApplicationPermissionMode mode)
 
-  boolean equals(final Object obj)
+  boolean equals(final Object o)
 
   int hashCode()
 
   String toString()
-
-  Markup valueOfHtml(String html) // <.>
 }
 ----
 
-<.> `[teal]#*_valueOfHtml_*#(String html)` : `xref:system:generated:index/applib/value/Markup.adoc[Markup]`
-+
---
-syntactic sugar
---
-
diff --git a/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/PermissionsEvaluationService.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/PermissionsEvaluationService.adoc
new file mode 100644
index 0000000..fa45461
--- /dev/null
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/PermissionsEvaluationService.adoc
@@ -0,0 +1,18 @@
+= PermissionsEvaluationService : _interface_
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
+
+Strategy for determining which permission should apply when there are multiple that apply for a particular target feature Id, and which may conflict with each other.
+
+All implementations of this interface must be _java.io.Serializable_ , because an instance is serialized into _org.apache.isis.extensions.secman.api.permission.ApplicationPermissionValueSet_ .
+
+.Java Sources
+[source,java]
+----
+interface PermissionsEvaluationService {
+
+  ApplicationPermissionValueSet.Evaluation evaluate(final ApplicationFeatureId targetMemberId, final ApplicationPermissionMode mode, final Collection<ApplicationPermissionValue> permissionValues) // <.>
+}
+----
+
+<.> `[teal]#*evaluate*#(ApplicationFeatureId targetMemberId, ApplicationPermissionMode mode, Collection<ApplicationPermissionValue> permissionValues)` : `Evaluation`
+
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/PermissionsEvaluationServiceAbstract.adoc
similarity index 73%
copy from antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/PermissionsEvaluationServiceAbstract.adoc
index 98310a4..e63af6f 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/EntityPropertyChange.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/PermissionsEvaluationServiceAbstract.adoc
@@ -1,14 +1,12 @@
-= EntityPropertyChange : _class_
+= PermissionsEvaluationServiceAbstract : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable data record for xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] s.
-
 .Java Sources
 [source,java]
 ----
-class EntityPropertyChange {
+class PermissionsEvaluationServiceAbstract {
 
-  String toString()
+  ApplicationPermissionValueSet.Evaluation evaluate(final ApplicationFeatureId targetMemberId, final ApplicationPermissionMode mode, final Collection<ApplicationPermissionValue> permissionValues)
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/PermissionsEvaluationServiceAllowBeatsVeto.adoc
similarity index 79%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/PermissionsEvaluationServiceAllowBeatsVeto.adoc
index 78f204d..1c6ec0e 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/PermissionsEvaluationServiceAllowBeatsVeto.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= PermissionsEvaluationServiceAllowBeatsVeto : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+An implementation whereby a VETO permission for a feature overrides an ALLOW (for same scope).
+
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class PermissionsEvaluationServiceAllowBeatsVeto {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/PermissionsEvaluationServiceVetoBeatsAllow.adoc
similarity index 79%
copy from antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/PermissionsEvaluationServiceVetoBeatsAllow.adoc
index 78f204d..069b990 100644
--- a/antora/components/system/modules/generated/pages/index/commons/resource/ResourceCoordinates.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/permission/PermissionsEvaluationServiceVetoBeatsAllow.adoc
@@ -1,12 +1,12 @@
-= ResourceCoordinates : _class_
+= PermissionsEvaluationServiceVetoBeatsAllow : _class_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
+An implementation whereby a VETO permission for a feature overrides an ALLOW (for same scope).
+
 .Java Sources
 [source,java]
 ----
-class ResourceCoordinates {
-
-  int compareTo(final ResourceCoordinates other)
+class PermissionsEvaluationServiceVetoBeatsAllow {
 }
 ----
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/role/ApplicationRole.adoc
similarity index 59%
copy from antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/secman/api/role/ApplicationRole.adoc
index bfc7391..ef2e629 100644
--- a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/role/ApplicationRole.adoc
@@ -1,36 +1,32 @@
-= Markup : _class_
+= ApplicationRole : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable value type holding pre-rendered HTML.
-
 .Java Sources
 [source,java]
 ----
-class Markup {
-
-  Markup()
+interface ApplicationRole {
 
-  Markup(String html)
+  public static final int MAX_LENGTH_NAME;
 
-  String asHtml()
+  public static final int TYPICAL_LENGTH_NAME;
 
-  boolean isEqualTo(final Markup other)
+  public static final int TYPICAL_LENGTH_DESCRIPTION;
 
-  String title()
+  String title() // <.>
 
-  boolean equals(final Object obj)
+  String getName()
 
-  int hashCode()
+  void setName(String name)
 
-  String toString()
+  String getDescription()
 
-  Markup valueOfHtml(String html) // <.>
+  void setDescription(String description)
 }
 ----
 
-<.> `[teal]#*_valueOfHtml_*#(String html)` : `xref:system:generated:index/applib/value/Markup.adoc[Markup]`
+<.> `[teal]#*title*#()` : `String`
 +
 --
-syntactic sugar
+having a title() method (rather than using @Title annotation) is necessary as a workaround to be able to use wrapperFactory#unwrap(...) method, which is otherwise broken in Isis 1.6.0
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/role/ApplicationRoleRepository.adoc
similarity index 51%
copy from antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/secman/api/role/ApplicationRoleRepository.adoc
index bfc7391..079df6b 100644
--- a/antora/components/system/modules/generated/pages/index/applib/value/Markup.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/role/ApplicationRoleRepository.adoc
@@ -1,36 +1,41 @@
-= Markup : _class_
+= ApplicationRoleRepository : _interface_
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 
-Immutable value type holding pre-rendered HTML.
-
 .Java Sources
 [source,java]
 ----
-class Markup {
+interface ApplicationRoleRepository {
+
+  R newApplicationRole() // <.>
+
+  Collection<R> allRoles()
+
+  R newRole(String name, String description)
 
-  Markup()
+  Collection<R> findNameContaining(String search)
 
-  Markup(String html)
+  Collection<R> getRoles(ApplicationUser user)
 
-  String asHtml()
+  Collection<R> findMatching(String search) // <.>
 
-  boolean isEqualTo(final Markup other)
+  Optional<R> findByName(String roleName)
 
-  String title()
+  Optional<R> findByNameCached(String roleName)
 
-  boolean equals(final Object obj)
+  void addRoleToUser(ApplicationRole role, ApplicationUser user)
 
-  int hashCode()
+  void removeRoleFromUser(ApplicationRole role, ApplicationUser user)
 
-  String toString()
+  boolean isAdminRole(ApplicationRole role)
 
-  Markup valueOfHtml(String html) // <.>
+  void deleteRole(ApplicationRole holder)
 }
 ----
 
-<.> `[teal]#*_valueOfHtml_*#(String html)` : `xref:system:generated:index/applib/value/Markup.adoc[Markup]`
+<.> `[teal]#*newApplicationRole*#()` : `R`
+<.> `[teal]#*findMatching*#(String search)` : `Collection<R>`
 +
 --
-syntactic sugar
+auto-complete support
 --
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc b/antora/components/system/modules/generated/pages/index/extensions/secman/api/tenancy/ApplicationTenancy.adoc
similarity index 72%
copy from antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
copy to antora/components/system/modules/generated/pages/index/extensions/secman/api/tenancy/ApplicationTenancy.adoc
index dcdaf9a..39b8d80 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/repository/EntityState.adoc
+++ b/antora/components/system/modules/generated/pages/index/extensions/secman/api/tenancy/ApplicationTenancy.adoc
@@ -1,28 +1,26 @@
-= EntityState : _enum_
+= ApplicationTenancy : _interface_
... 13948 lines suppressed ...