You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2021/02/21 13:03:00 UTC

[isis] branch ISIS-2444 updated: ISIS-2444: updates xref's to use system generated index files for services

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

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


The following commit(s) were added to refs/heads/ISIS-2444 by this push:
     new 0a4a015  ISIS-2444: updates xref's to use system generated index files for services
0a4a015 is described below

commit 0a4a015bf1f7bde6fda51c39b7736332f7e0b24d
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Feb 21 13:02:39 2021 +0000

    ISIS-2444: updates xref's to use system generated index files for services
---
 .../pages/what-is-apache-isis/screencasts.adoc     |   2 +-
 .../hooks/Action_010-examples-and-usage.adoc       |  10 +-
 .../DomainObjectLayout_010-examples-and-usage.adoc |   2 +-
 .../hooks/DomainObject_010-examples-and-usage.adoc |  14 +--
 .../InteractionScope_010-examples-and-usage.adoc   |   4 +-
 ...AcceptHeaderService_020-examples-and-usage.adoc |   4 +-
 .../BookmarkService_020-examples-and-usage.adoc    |   2 +-
 ...DtoProcessorService_020-examples-and-usage.adoc |   2 +-
 .../ConfigurationMenu_020-examples-and-usage.adoc  |   2 +-
 ...gurationViewService_020-examples-and-usage.adoc |   2 +-
 ...ntentMappingService_020-examples-and-usage.adoc |   2 +-
 .../hooks/EmailService_020-examples-and-usage.adoc |   2 +-
 .../EventBusService_020-examples-and-usage.adoc    |   6 +-
 .../hooks/GridService_020-examples-and-usage.adoc  |   6 +-
 .../GridSystemService_020-examples-and-usage.adoc  |   2 +-
 ...PageResolverService_020-examples-and-usage.adoc |   2 +-
 .../TranslationService_020-examples-and-usage.adoc |   2 +-
 ...ranslationsResolver_020-examples-and-usage.adoc |   2 +-
 .../InteractionContext_020-examples-and-usage.adoc |   2 +-
 .../ServiceInjector_020-examples-and-usage.adoc    |   2 +-
 .../LayoutService_020-examples-and-usage.adoc      |   6 +-
 .../hooks/DeepLinkService_010-implementation.adoc  |   2 +-
 .../DeepLinkService_020-examples-and-usage.adoc    |   2 +-
 .../hooks/MenuBarsService_010-implementation.adoc  |   2 +-
 ...ExecutionSubscriber_020-examples-and-usage.adoc |   2 +-
 .../QueryResultsCache_020-examples-and-usage.adoc  |   2 +-
 .../hooks/RoutingService_010-implementation.adoc   |   2 +-
 .../RoutingService_020-examples-and-usage.adoc     |   2 +-
 .../hooks/Scratchpad_020-examples-and-usage.adoc   |   2 +-
 .../hooks/SudoService_020-examples-and-usage.adoc  |   4 +-
 ...NotificationService_020-examples-and-usage.adoc |   8 +-
 ...RegistrationService_020-examples-and-usage.adoc |   2 +-
 .../XmlSnapshotService_020-examples-and-usage.adoc |   4 +-
 .../how-to-handle-void-and-null-results.adoc       |   2 +-
 .../how-to-implement-a-spellchecker.adoc           |   2 +-
 .../replacing-default-service-implementations.adoc |   2 +-
 .../hints-and-tips/transactions-and-errors.adoc    |   6 +-
 .../pages/hints-and-tips/vetoing-visibility.adoc   |   2 +-
 .../hints-and-tips/view-model-instantiation.adoc   |   2 +-
 .../apache-isis-vs-cqrs-and-event-sourcing.adoc    |   4 +-
 .../fun/pages/concepts-patterns/architecture.adoc  |   2 +-
 .../fun/pages/concepts-patterns/core-values.adoc   |   2 +-
 .../pages/domain-entities-and-services/crud.adoc   |  18 ++--
 .../domain-entities.adoc                           |   2 +-
 .../domain-services.adoc                           |   6 +-
 .../inject-services.adoc                           |   4 +-
 api/adoc/userguide/modules/fun/pages/mixins.adoc   |   2 +-
 .../modules/fun/pages/overview/events.adoc         |   6 +-
 .../modules/fun/pages/overview/identifiers.adoc    |   8 +-
 .../modules/fun/pages/overview/modules.adoc        |   2 +-
 .../modules/fun/pages/ui/menubars-layout.adoc      |   2 +-
 .../modules/fun/pages/ui/object-layout.adoc        |   4 +-
 .../modules/fun/pages/ui/table-columns.adoc        |   2 +-
 .../userguide/modules/fun/pages/view-models.adoc   |   8 +-
 .../modules/fun/pages/view-models/UNUSED-dto.adoc  |   4 +-
 .../modules/fun/partials/_deployment-options.adoc  |   2 +-
 .../Collection/_summary.adoc                       |   2 +-
 .../Collection/domainEvent.adoc                    |   6 +-
 .../DomainObject/createdLifecycleEvent.adoc        |   6 +-
 .../DomainObject/entityChangePublishing.adoc       |   2 +-
 .../DomainObject/loadedLifecycleEvent.adoc         |   4 +-
 .../DomainObject/objectType.adoc                   |   4 +-
 .../DomainObject/persistedLifecycleEvent.adoc      |   4 +-
 .../DomainObject/persistingLifecycleEvent.adoc     |   4 +-
 .../DomainObject/removingLifecycleEvent.adoc       |   4 +-
 .../DomainObject/updatedLifecycleEvent.adoc        |   4 +-
 .../DomainObject/updatingLifecycleEvent.adoc       |   4 +-
 .../DomainObjectLayout/cssClassUiEvent.adoc        |   6 +-
 .../DomainObjectLayout/iconUiEvent.adoc            |   6 +-
 .../DomainObjectLayout/layoutUiEvent.adoc          |   6 +-
 .../DomainObjectLayout/titleUiEvent.adoc           |   6 +-
 .../DomainService/objectType.adoc                  |   2 +-
 .../Property/_summary.adoc                         |   4 +-
 .../Property/commandPublishing.adoc                |   2 +-
 .../Property/domainEvent.adoc                      |   4 +-
 .../Property/snapshot.adoc                         |   2 +-
 .../modules/applib-ant/pages/Discriminator.adoc    |   4 +-
 .../applib-ant/pages/PersistenceCapable.adoc       |   4 +-
 .../applib-ant/pages/XmlJavaTypeAdapter.adoc       |   2 +-
 .../modules/applib-ant/pages/XmlRootElement.adoc   |   4 +-
 .../adoc/modules/applib-ant/pages/about/jee.adoc   |   2 +-
 .../applib-classes/pages/events/domainevent.adoc   |   2 +-
 .../pages/events/lifecycleevent.adoc               |  10 +-
 .../lifecycleevent/ObjectPersistedEvent.adoc       |   2 +-
 .../lifecycleevent/ObjectPersistingEvent.adoc      |   2 +-
 .../events/lifecycleevent/ObjectRemovingEvent.adoc |   2 +-
 .../events/lifecycleevent/ObjectUpdatedEvent.adoc  |   2 +-
 .../events/lifecycleevent/ObjectUpdatingEvent.adoc |   2 +-
 .../applib-classes/pages/events/uievent.adoc       |   2 +-
 .../applib-classes/pages/layout/menubars.adoc      |   2 +-
 .../applib-classes/pages/layout/object-layout.adoc |   2 +-
 .../roles-mixins-contributees/mixins/Dto.adoc      |   2 +-
 .../roles-mixins-contributees/mixins/Object.adoc   |  10 +-
 .../roles/HoldsUpdatedAt.adoc                      |   2 +-
 .../modules/applib-methods/pages/lifecycle.adoc    |   2 +-
 .../applib-methods/pages/prefixes/default.adoc     |   4 +-
 .../pages/reserved/deprecated/getId.adoc           |   2 +-
 .../modules/applib-svc/pages/ServiceRegistry.adoc  |   2 +-
 .../main/adoc/modules/applib-svc/pages/about.adoc  |  30 +++---
 .../partials/_application-layer-api.adoc           |  10 +-
 .../partials/_application-layer-spi.adoc           |  10 +-
 .../applib-svc/partials/_core-domain-api.adoc      |  16 +--
 .../applib-svc/partials/_integration-api.adoc      |   8 +-
 .../applib-svc/partials/_integration-spi.adoc      |  10 +-
 .../modules/applib-svc/partials/_metadata-api.adoc |  12 +--
 .../modules/applib-svc/partials/_metadata-spi.adoc |  18 ++--
 .../partials/_persistence-layer-api.adoc           |  10 +-
 .../partials/_persistence-layer-spi.adoc           |   4 +-
 .../partials/_presentation-layer-api.adoc          |   6 +-
 .../partials/_presentation-layer-spi.adoc          |  34 +++----
 .../modules/applib-svc/partials/_security-spi.adoc |   6 +-
 .../modules/applib-svc/partials/module-nav.adoc    | 111 +++++++++++----------
 .../src/main/adoc/modules/schema/pages/common.adoc |   2 +-
 .../pages/AuthenticationSessionProvider.adoc       |   2 +-
 .../pages/CommandDtoServiceInternal.adoc           |   2 +-
 .../runtime-services/pages/CommandPublisher.adoc   |   4 +-
 .../pages/ContentNegotiationService.adoc           |   6 +-
 .../pages/EntityChangeTracker.adoc                 |   2 +-
 .../pages/EntityChangesPublisher.adoc              |   2 +-
 .../pages/EntityPropertyChangePublisher.adoc       |   4 +-
 .../pages/RepresentationService.adoc               |   4 +-
 .../partials/_persistence-layer.adoc               |   2 +-
 .../partials/_presentation-layer.adoc              |   2 +-
 .../adoc/modules/command-log/pages/about.adoc      |   9 --
 .../adoc/modules/audit-trail/pages/about.adoc      |   9 +-
 .../ROOT/pages/services/IsisJdoSupport.adoc        |   4 +-
 security/adoc/modules/ROOT/pages/about.adoc        |  14 ++-
 .../domain-services-api-for-applications.adoc      |   2 +-
 .../adoc/modules/starters/pages/simpleapp.adoc     |   2 +-
 .../pages/fixture-scripts/mocking-the-clock.adoc   |   6 +-
 .../fixtures/pages/services/FixtureScripts.adoc    |   2 +-
 .../adoc/modules/integtestsupport/pages/about.adoc |  10 +-
 .../integtestsupport/pages/swagger-exporter.adoc   |   4 +-
 .../adoc/modules/specsupport/pages/about.adoc      |   6 +-
 .../adoc/modules/ROOT/pages/architecture.adoc      |   2 +-
 .../adoc/modules/ROOT/pages/health-check.adoc      |   2 +-
 .../adoc/modules/ROOT/pages/layout-resources.adoc  |   8 +-
 .../adoc/modules/ROOT/pages/ro-spec.adoc           |   2 +-
 .../modules/ROOT/pages/extending/custom-pages.adoc |   4 +-
 .../ROOT/pages/features/user-registration.adoc     |  12 +--
 .../i18n-label-in-wicket-viewer.adoc               |   2 +-
 .../ROOT/partials/security/user-registration.adoc  |   2 +-
 142 files changed, 380 insertions(+), 395 deletions(-)

diff --git a/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc b/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
index 738311d..23418c5 100644
--- a/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
+++ b/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
@@ -332,7 +332,7 @@ How to validate action parameters using the xref:system:generated:index/applib/a
 
 
 |link:https://www.youtube.com/watch?v=fYJjXAepWAs[032^] +
-How to instantiate/initialize objects using xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`], xref:refguide:applib-svc:ServiceRegistry.adoc[`ServiceRegistry`] and/or xref:system:generated:index/applib/services/factory/FactoryService.adoc[`FactoryService`].
+How to instantiate/initialize objects using xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`], xref:system:generated:index/applib/services/registry/ServiceRegistry.adoc[`ServiceRegistry`] and/or xref:system:generated:index/applib/services/factory/FactoryService.adoc[`FactoryService`].
 |x||||||||x||
 
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/Action_010-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/Action_010-examples-and-usage.adoc
index b10fe66..396d2e5 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/Action_010-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/Action_010-examples-and-usage.adoc
@@ -120,7 +120,7 @@ The main uses cases are:
 
 * as a means to allow asynchronous child commands to be executed, using the xref:system:generated:index/applib/services/wrapper/WrapperFactory.adoc[WrapperFactory] service;
 
-* as a means to audit (persist) commands, by implementing the xref:refguide:applib-svc:CommandSubscriber.adoc[CommandSubscriber] SPI.
+* as a means to audit (persist) commands, by implementing the xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber] SPI.
 +
 The xref:extensions:command-log:about.adoc[Command Log] extension _does_ provide such an implementation.
 +
@@ -254,7 +254,7 @@ In the cases of the domain object's actions, the events that are fired are:
 * pre-execute phase: before the invocation of the action
 * post-execute: after the invocation of the action
 
-Subscribers subscribe through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] and can influence each of these phases.
+Subscribers subscribe through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] and can influence each of these phases.
 
 By default the event raised is `ActionDomainEvent.Default`.
 For example:
@@ -294,7 +294,7 @@ This substantially reduces the boilerplate required in subclasses because no exp
 
 ==== Subscribers
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
@@ -564,7 +564,7 @@ public class Customer {
 }
 ----
 
-Actions that are safe and request-cacheable automatically use the xref:refguide:applib-svc:QueryResultsCache.adoc[`QueryResultsCache`] service to cache the result of the method.
+Actions that are safe and request-cacheable automatically use the xref:system:generated:index/applib/services/queryresultscache/QueryResultsCache.adoc[`QueryResultsCache`] service to cache the result of the method.
 Note though that the results of this caching will only be apparent if the action is invoked from another method using the xref:system:generated:index/applib/services/wrapper/WrapperFactory.adoc[WrapperFactory] service.
 
 
@@ -615,6 +615,6 @@ for actions where xref:system:generated:index/applib/annotation/Action.adoc#exec
 
 == See also
 
-* xref:refguide:applib-svc:EventBusService.adoc[EventBusService]
+* xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[EventBusService]
 +
 which broadcast the action's domain event -- as specified by xref:system:generated:index/applib/annotation/Action.adoc#domainEvent[domainEvent()] --  for business rule checking (hide, disable, validate) and its invocation (pre-execute and post-execute).
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/DomainObjectLayout_010-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/DomainObjectLayout_010-examples-and-usage.adoc
index c612bdc..71ca771 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/DomainObjectLayout_010-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/DomainObjectLayout_010-examples-and-usage.adoc
@@ -52,7 +52,7 @@
 //----
 //<.> xref:system:generated:index/applib/annotation/DomainObjectLayout.adoc#cssClassUiEvent[`cssClassUiEvent`]
 //+
-//The event type to be posted to the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] to obtain a CSS class for the domain object.
+//The event type to be posted to the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] to obtain a CSS class for the domain object.
 //
 //<.> xref:system:generated:index/applib/annotation/DomainObjectLayout.adoc#iconUiEvent[`iconUiEvent`]
 //+
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/DomainObject_010-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/DomainObject_010-examples-and-usage.adoc
index 853b852..21910e7 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/DomainObject_010-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/DomainObject_010-examples-and-usage.adoc
@@ -27,8 +27,8 @@
 //<.> xref:system:generated:index/applib/annotation/DomainObject.adoc#entityChangePublishing[`entityChangePublishing()`]
 //+
 //Indicates whether each of the changed properties of an object should be submitted to the registered
-//xref:refguide:applib-svc:EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber](s) and
-//whether entity changes, captured as `ChangingEntities` should be published to xref:refguide:applib-svc:EntityChangesSubscriber.adoc[`EntityChangesSubscriber`](s). (Does only apply to entity objects.)
+//xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber](s) and
+//whether entity changes, captured as `ChangingEntities` should be published to xref:system:generated:index/applib/services/publishing/spi/EntityChangesSubscriber.adoc[`EntityChangesSubscriber`](s). (Does only apply to entity objects.)
 //
 //<.> xref:system:generated:index/applib/annotation/DomainObject.adoc#mixinMethod[`mixinMethod()`]
 //+
@@ -57,7 +57,7 @@
 //----
 //<.> xref:system:generated:index/applib/annotation/DomainObject.adoc#createdLifecycleEvent[`createdLifecycleEvent()`]
 //+
-//The event type to be posted to the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] whenever an instance is created
+//The event type to be posted to the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] whenever an instance is created
 //
 //<.> xref:system:generated:index/applib/annotation/DomainObject.adoc#persistingLifecycleEvent[`persistingLifecycleEvent()`]
 //+
@@ -97,15 +97,15 @@
 //----
 //<.> `actionDomainEvent()`
 //+
-//The event type to be posted to the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] whenever an action of the domain object is interacted with (if not overridden using xref:system:generated:index/applib/annotation/Action.adoc#domainEvent[`@Action#domainEvent()]`).
+//The event type to be posted to the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] whenever an action of the domain object is interacted with (if not overridden using xref:system:generated:index/applib/annotation/Action.adoc#domainEvent[`@Action#domainEvent()]`).
 //
 //<.> `propertyDomainEvent()`
 //+
-//The event type to be posted to the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] whenever a property of the domain object is interacted with (if not overridden using xref:system:generated:index/applib/annotation/Property.adoc#domainEvent[`@Property#domainEvent()]`).
+//The event type to be posted to the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] whenever a property of the domain object is interacted with (if not overridden using xref:system:generated:index/applib/annotation/Property.adoc#domainEvent[`@Property#domainEvent()]`).
 //
 //<.> `collectionDomainEvent()`
 //+
-//The event type to be posted to the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] whenever a collection of the domain object is interacted with (if not overridden using xref:system:generated:index/applib/annotation/Collection.adoc#domainEvent[`@Collection#domainEvent()]`).
+//The event type to be posted to the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] whenever a collection of the domain object is interacted with (if not overridden using xref:system:generated:index/applib/annotation/Collection.adoc#domainEvent[`@Collection#domainEvent()]`).
 //
 //
 //// TODO: v2: currently missing subpages for these attributes.
@@ -152,7 +152,7 @@ public class CustomerViewModel {
 ----
 
 Although there are several ways to instantiate a view model, we recommend that they are instantiated using an N-arg constructor that initializes all relevant state.
-The xref:refguide:applib-svc:ServiceRegistry.adoc[`ServiceRegistry`] can then be used to inject dependencies into the view model.
+The xref:system:generated:index/applib/services/registry/ServiceRegistry.adoc[`ServiceRegistry`] can then be used to inject dependencies into the view model.
 For example:
 
 [source,java]
diff --git a/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/InteractionScope_010-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/InteractionScope_010-examples-and-usage.adoc
index 2bf4e89..dae43fe 100644
--- a/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/InteractionScope_010-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/annotation/hooks/InteractionScope_010-examples-and-usage.adoc
@@ -1,7 +1,7 @@
 // TODO: v2 - this may no longer be true.
 
-//A number of the built-in domain services uses this annotation, including xref:refguide:applib-svc:Scratchpad.adoc[`Scratchpad`] and
-//xref:refguide:applib-svc:QueryResultsCache.adoc[`QueryResultsCache`].
+//A number of the built-in domain services uses this annotation, including xref:system:generated:index/applib/services/scratchpad/Scratchpad.adoc[`Scratchpad`] and
+//xref:system:generated:index/applib/services/queryresultscache/QueryResultsCache.adoc[`QueryResultsCache`].
 //
 //One small wrinkle: these session-scoped services must be injected using the `Provider` idiom, not directly.
 //For example:
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/acceptheader/hooks/AcceptHeaderService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/acceptheader/hooks/AcceptHeaderService_020-examples-and-usage.adoc
index 2f11309..b720b71 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/acceptheader/hooks/AcceptHeaderService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/acceptheader/hooks/AcceptHeaderService_020-examples-and-usage.adoc
@@ -26,6 +26,6 @@ The option is to use the media type's type/subtype, eg `application/vnd.myrestap
 
 == Alternatives
 
-As an alternative to performing content negotiation within the domain classes, the xref:refguide:applib-svc:ContentMappingService.adoc[`ContentMappingService`] SPI domain service allows the framework to perform the content negotiation responsibility.
+As an alternative to performing content negotiation within the domain classes, the xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[`ContentMappingService`] SPI domain service allows the framework to perform the content negotiation responsibility.
 
-The Restful Objects specification supports this with its own `x-ro-domain-type` media type parameter; this is used by the xref:refguide:applib-svc:ContentMappingService.adoc[`ContentMappingService`] to determine how to map domain objects to view models/DTOs.
+The Restful Objects specification supports this with its own `x-ro-domain-type` media type parameter; this is used by the xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[`ContentMappingService`] to determine how to map domain objects to view models/DTOs.
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/bookmark/hooks/BookmarkService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/bookmark/hooks/BookmarkService_020-examples-and-usage.adoc
index 9cc41d9..06d1836 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/bookmark/hooks/BookmarkService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/bookmark/hooks/BookmarkService_020-examples-and-usage.adoc
@@ -29,7 +29,7 @@ Either of these can be suppressed, if required, using a vetoing subscriber that
 //Bookmarks are useful to store a reference to an arbitrary object, although be aware that there is no referential integrity.
 //
 //Several of the extension libraries use bookmarks.
-//For example the xref:refguide:applib-svc:EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] uses bookmarks to identify the object that is being modified.
+//For example the xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] uses bookmarks to identify the object that is being modified.
 //
 //Serialized form of bookmarks also appear within  xref:refguide:schema:about.adoc[schema] instances, for example as used by xref:refguide:applib-svc:CommandServiceInternal.adoc[`CommandService`] and the xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber].
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/commanddto/processor/hooks/CommandDtoProcessorService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/commanddto/processor/hooks/CommandDtoProcessorService_020-examples-and-usage.adoc
index 6790e21..92b81dc 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/commanddto/processor/hooks/CommandDtoProcessorService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/commanddto/processor/hooks/CommandDtoProcessorService_020-examples-and-usage.adoc
@@ -6,7 +6,7 @@
 
 Having a DTO representation of ``Command``s (or more precisely, any object implementing `HasCommandDto` offers the ability to move or copy it across the network, for example to support replay scenarios.
 This is used for example by xref:extensions:command-log:about.adoc[Command Log] extension to return persisted representations of commands.
-The conversion is performed by an in-built implementation of the xref:refguide:applib-svc:ContentMappingService.adoc[`ContentMappingService`] SPI.
+The conversion is performed by an in-built implementation of the xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[`ContentMappingService`] SPI.
 
 The `CommandDtoProcessorService` SPI provides a mechanism to post-process the `CommandDto` of any objects being serialized across the network.
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/confview/hooks/ConfigurationMenu_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/confview/hooks/ConfigurationMenu_020-examples-and-usage.adoc
index 1535df4..52e00eb 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/confview/hooks/ConfigurationMenu_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/confview/hooks/ConfigurationMenu_020-examples-and-usage.adoc
@@ -4,4 +4,4 @@
 
 == Related Services
 
-This service is the front-end UI (and delegates to) xref:refguide:applib-svc:ConfigurationViewService.adoc[`ConfigurationViewService`].
+This service is the front-end UI (and delegates to) xref:system:generated:index/applib/services/confview/ConfigurationViewService.adoc[`ConfigurationViewService`].
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/confview/hooks/ConfigurationViewService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/confview/hooks/ConfigurationViewService_020-examples-and-usage.adoc
index c38b971..aa94be0 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/confview/hooks/ConfigurationViewService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/confview/hooks/ConfigurationViewService_020-examples-and-usage.adoc
@@ -22,5 +22,5 @@ To use it therefore requires this dependency:
 ----
 ====
 
-* The xref:refguide:applib-svc:ConfigurationMenu.adoc[ `ConfigurationMenu`] provides a UI to access this service.
+* The xref:system:generated:index/applib/services/confview/ConfigurationMenu.adoc[ `ConfigurationMenu`] provides a UI to access this service.
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/conmap/hooks/ContentMappingService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/conmap/hooks/ContentMappingService_020-examples-and-usage.adoc
index 86a24fa..ffbdfa5b 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/conmap/hooks/ContentMappingService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/conmap/hooks/ContentMappingService_020-examples-and-usage.adoc
@@ -17,4 +17,4 @@ The mapped object used will be the first non-`null` result returned by an implem
 
 This service is a companion to the default implementation of the xref:core:runtime-services:ContentNegotiationService.adoc[`ContentNegotiationService`].
 
-The framework implementations of `ContentMappingService` use the xref:refguide:applib-svc:MetamodelService.adoc[`MetaModelService`] to lookup any custom implementations of `CommandDtoProcessor`.
+The framework implementations of `ContentMappingService` use the xref:system:generated:index/applib/services/metamodel/MetaModelService.adoc[`MetaModelService`] to lookup any custom implementations of `CommandDtoProcessor`.
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/email/hooks/EmailService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/email/hooks/EmailService_020-examples-and-usage.adoc
index 644b9de..4e912d8 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/email/hooks/EmailService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/email/hooks/EmailService_020-examples-and-usage.adoc
@@ -9,4 +9,4 @@ If you wish to write an alternative implementation, be aware that it should proc
 
 == Related Services
 
-The email service is used by the xref:refguide:applib-svc:EmailNotificationService.adoc[`EmailNotificationService`] which is, in turn, used by xref:refguide:applib-svc:UserRegistrationService.adoc[`UserRegistrationService`].
+The email service is used by the xref:system:generated:index/applib/services/userreg/EmailNotificationService.adoc[`EmailNotificationService`] which is, in turn, used by xref:system:generated:index/applib/services/userreg/UserRegistrationService.adoc[`UserRegistrationService`].
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/eventbus/hooks/EventBusService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/eventbus/hooks/EventBusService_020-examples-and-usage.adoc
index d8acd99..fd58cb9 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/eventbus/hooks/EventBusService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/eventbus/hooks/EventBusService_020-examples-and-usage.adoc
@@ -71,7 +71,7 @@ public class LibraryMember {
     ...
 }
 ----
-<1> `LibraryMemberLeaveEvent` is a subclass of `o.a.i.applib.eventbus.ActionDomainEvent`.The topic of subclassing is discussed in more detail xref:refguide:applib-svc:EventBusService.adoc#event-hierarchy[below].
+<1> `LibraryMemberLeaveEvent` is a subclass of `o.a.i.applib.eventbus.ActionDomainEvent`.The topic of subclassing is discussed in more detail xref:system:generated:index/applib/services/eventbus/EventBusService.adoc#event-hierarchy[below].
 
 Meanwhile, in the `BookRepository` domain service, we subscribe to the event and act upon it.
 For example:
@@ -258,7 +258,7 @@ There are several mechanisms to suport coarse-grained publish/subscribe for syst
 +
 These events apply to actions annotated with xref:system:generated:index/applib/annotation/Action.adoc#commandPublishing[`@Action#commandPublishing()`]) and to properties properties annotated with xref:system:generated:index/applib/annotation/Property.adoc#commandPublishing[`@Property#commandPublishing`]).
 +
-The events are received by any/all xref:refguide:applib-svc:CommandSubscriber.adoc[`CommandSubscriber`]s.
+The events are received by any/all xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[`CommandSubscriber`]s.
 
 * Execution publishing, representing the _completion_ of an action invocation or property edit.
 +
@@ -270,4 +270,4 @@ The events are received by any/all xref:system:generated:index/applib/services/p
 +
 These events apply to objects annotated with xref:system:generated:index/applib/annotation/DomainObject.adoc#entityChangePublishing[`@DomainObject#entityChangePublishing()`]).
 +
-The events are received by any/all xref:refguide:applib-svc:EntityChangesSubscriber.adoc[`EntityChangesSubscriber`]s
+The events are received by any/all xref:system:generated:index/applib/services/publishing/spi/EntityChangesSubscriber.adoc[`EntityChangesSubscriber`]s
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/grid/hooks/GridService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/grid/hooks/GridService_020-examples-and-usage.adoc
index 0ac6237..b845506 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/grid/hooks/GridService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/grid/hooks/GridService_020-examples-and-usage.adoc
@@ -12,14 +12,14 @@ Dynamic reloading is disabled in production mode.
 
 == See also
 
-This service is called by xref:refguide:applib-svc:LayoutService.adoc[`LayoutService`], exposed in the UI through `LayoutServiceMenu` (to download the layout XML as a zip file for all domain objects) and the xref:applib-classes:roles-mixins-contributees/mixins.adoc#Object[`downloadLayoutXml()`] mixin (to download the layout XML for a single domain
+This service is called by xref:system:generated:index/applib/services/layout/LayoutService.adoc[`LayoutService`], exposed in the UI through `LayoutServiceMenu` (to download the layout XML as a zip file for all domain objects) and the xref:applib-classes:roles-mixins-contributees/mixins.adoc#Object[`downloadLayoutXml()`] mixin (to download the layout XML for a single domain
 object).
 
 This service delegates to:
 
-* to xref:refguide:applib-svc:GridLoaderService.adoc[`GridLoaderService`] to load a pre-existing layout for the domain class, if possible
+* to xref:system:generated:index/applib/services/grid/GridLoaderService.adoc[`GridLoaderService`] to load a pre-existing layout for the domain class, if possible
 
-* to xref:refguide:applib-svc:GridSystemService.adoc[`GridSystemService`] to normalize the grid with respect to Apache Isis' internal metamodel, in other words to ensure that all of the domain objects' properties, collections and actions are associated with regions of the grid.
+* to xref:system:generated:index/applib/services/grid/GridSystemService.adoc[`GridSystemService`] to normalize the grid with respect to Apache Isis' internal metamodel, in other words to ensure that all of the domain objects' properties, collections and actions are associated with regions of the grid.
 
 
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/grid/hooks/GridSystemService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/grid/hooks/GridSystemService_020-examples-and-usage.adoc
index efc6deb..aff3623 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/grid/hooks/GridSystemService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/grid/hooks/GridSystemService_020-examples-and-usage.adoc
@@ -11,4 +11,4 @@ This is therefore a highly specialized and very deep customisation of the framew
 
 == See also
 
-This service is used by xref:refguide:applib-svc:GridService.adoc[`GridService`].
+This service is used by xref:system:generated:index/applib/services/grid/GridService.adoc[`GridService`].
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/homepage/hooks/HomePageResolverService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/homepage/hooks/HomePageResolverService_020-examples-and-usage.adoc
index 40c2d3f..6f4ec0b 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/homepage/hooks/HomePageResolverService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/homepage/hooks/HomePageResolverService_020-examples-and-usage.adoc
@@ -4,4 +4,4 @@
 
 == Notes
 
-This service was originally introduced to support the default implementation of xref:refguide:applib-svc:RoutingService.adoc[`RoutingService`], but was factored out to support alternative implementations of that service (and may be useful for other use cases).
+This service was originally introduced to support the default implementation of xref:system:generated:index/applib/services/routing/RoutingService.adoc[`RoutingService`], but was factored out to support alternative implementations of that service (and may be useful for other use cases).
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/i18n/hooks/TranslationService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/i18n/hooks/TranslationService_020-examples-and-usage.adoc
index 2207d26..7520583 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/i18n/hooks/TranslationService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/i18n/hooks/TranslationService_020-examples-and-usage.adoc
@@ -13,7 +13,7 @@ For the "big picture" and further details on the framework's support, see xref:u
 +
 enumerates the mode that the translation service is currently in, as per xref:TranslationService.adoc#getMode__[getMode()].
 
-* xref:refguide:applib-svc:LocaleProvider.adoc[`LocaleProvider`]
+* xref:system:generated:index/applib/services/i18n/LocaleProvider.adoc[`LocaleProvider`]
 +
 Used by the default implementation (`TranslationServicePo`) to return the `Locale` of the current user.
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/i18n/hooks/TranslationsResolver_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/i18n/hooks/TranslationsResolver_020-examples-and-usage.adoc
index 2b27a8f..b01258e 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/i18n/hooks/TranslationsResolver_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/i18n/hooks/TranslationsResolver_020-examples-and-usage.adoc
@@ -9,6 +9,6 @@ For the "big picture" and further details on Apache Isis' i18n support, see xref
 
 == See Also
 
-This service works in conjunction with xref:refguide:applib-svc:LocaleProvider.adoc[`LocaleProvider`] and xref:refguide:applib-svc:TranslationService.adoc[`TranslationService`] in order to provide i18n support.
+This service works in conjunction with xref:system:generated:index/applib/services/i18n/LocaleProvider.adoc[`LocaleProvider`] and xref:system:generated:index/applib/services/i18n/TranslationService.adoc[`TranslationService`] in order to provide i18n support.
 
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/iactn/hooks/InteractionContext_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/iactn/hooks/InteractionContext_020-examples-and-usage.adoc
index 694719b..b88db51 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/iactn/hooks/InteractionContext_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/iactn/hooks/InteractionContext_020-examples-and-usage.adoc
@@ -7,7 +7,7 @@
 == Usage Notes
 
 Typically domain objects will have little need to interact with the `InteractionContext` and `Interaction` directly.
-The services are used within the framework however, primarily to support the xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber] SPI, and to emit domain events over the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+The services are used within the framework however, primarily to support the xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber] SPI, and to emit domain events over the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 
 
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/inject/hooks/ServiceInjector_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/inject/hooks/ServiceInjector_020-examples-and-usage.adoc
index 7f929b9..6a7bbe7 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/inject/hooks/ServiceInjector_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/inject/hooks/ServiceInjector_020-examples-and-usage.adoc
@@ -18,7 +18,7 @@ repositoryService.persist(cust);
 
 == Related Services
 
-* xref:refguide:applib-svc:ServiceRegistry.adoc[`ServiceRegistry`]
+* xref:system:generated:index/applib/services/registry/ServiceRegistry.adoc[`ServiceRegistry`]
 +
 to just lookup existing domain services by type.
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/layout/hooks/LayoutService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/layout/hooks/LayoutService_020-examples-and-usage.adoc
index d07aecb..d7944b6 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/layout/hooks/LayoutService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/layout/hooks/LayoutService_020-examples-and-usage.adoc
@@ -68,11 +68,11 @@ The grid regions will be empty in this version, and the framework will use the `
 
 == See also
 
-The functionality of `LayoutService` is surfaced in the user interface through a related xref:refguide:applib-svc:LayoutService.adoc#related-mixins-and-menus[mixin and menu action].
+The functionality of `LayoutService` is surfaced in the user interface through a related xref:system:generated:index/applib/services/layout/LayoutService.adoc#related-mixins-and-menus[mixin and menu action].
 See also xref:system:generated:index/applib/services/layout/Style.adoc[Style], which determines how much data is included in the downloaded XML.
 
-The xref:refguide:applib-svc:GridService.adoc[`GridService`] is responsible for loading and normalizing layout XML for a domain class.
-It in turn uses the xref:refguide:applib-svc:GridLoaderService.adoc[`GridLoaderService`] and  xref:refguide:applib-svc:GridSystemService.adoc[`GridSystemService`]
+The xref:system:generated:index/applib/services/grid/GridService.adoc[`GridService`] is responsible for loading and normalizing layout XML for a domain class.
+It in turn uses the xref:system:generated:index/applib/services/grid/GridLoaderService.adoc[`GridLoaderService`] and  xref:system:generated:index/applib/services/grid/GridSystemService.adoc[`GridSystemService`]
 services.
 
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/linking/hooks/DeepLinkService_010-implementation.adoc b/antora/components/system/modules/generated/pages/index/applib/services/linking/hooks/DeepLinkService_010-implementation.adoc
index f30d649..568dbfc 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/linking/hooks/DeepLinkService_010-implementation.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/linking/hooks/DeepLinkService_010-implementation.adoc
@@ -8,6 +8,6 @@
 The xref:vw:ROOT:about.adoc[Wicket viewer] provides an implementation of this service `o.a.i.viewer.wicket.viewer.services.DeepLinkServiceWicket`.
 
 There is no domain service to support deep links to the URLs of the xref:vro:ROOT:about.adoc[RestfulObjects viewer].
-However, a URL can be constructed easily enough according to the link:http://www.restfulobjects.org[Restful Objects spec] in conjunction with a `Bookmark` obtained via the xref:refguide:applib-svc:BookmarkService.adoc[`BookmarkService`].
+However, a URL can be constructed easily enough according to the link:http://www.restfulobjects.org[Restful Objects spec] in conjunction with a `Bookmark` obtained via the xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[`BookmarkService`].
 
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/linking/hooks/DeepLinkService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/linking/hooks/DeepLinkService_020-examples-and-usage.adoc
index 7d61247..4febc6f 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/linking/hooks/DeepLinkService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/linking/hooks/DeepLinkService_020-examples-and-usage.adoc
@@ -4,7 +4,7 @@
 
 == Usage within the framework
 
-The xref:refguide:applib-svc:EmailNotificationService.adoc[`EmailNotificationService`] uses this service in order to generate emails as part of xref:vw:ROOT:features.adoc#user-registration[user registration].
+The xref:system:generated:index/applib/services/userreg/EmailNotificationService.adoc[`EmailNotificationService`] uses this service in order to generate emails as part of xref:vw:ROOT:features.adoc#user-registration[user registration].
 
 
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/menu/hooks/MenuBarsService_010-implementation.adoc b/antora/components/system/modules/generated/pages/index/applib/services/menu/hooks/MenuBarsService_010-implementation.adoc
index 697b23a..cb9cbfc 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/menu/hooks/MenuBarsService_010-implementation.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/menu/hooks/MenuBarsService_010-implementation.adoc
@@ -7,4 +7,4 @@
 
 The framework provides a default implementation of this service, namely `o.a.i.core.runtimeservices.menu.MenuBarsServiceDefault`.
 
-This uses the xref:refguide:applib-svc:MenuBarsLoaderService.adoc[MenuBarsLoaderService] to load a serialized form of `MenuBars` instance, called `menubars.layout.xml`, from the classpath.
+This uses the xref:system:generated:index/applib/services/menu/MenuBarsLoaderService.adoc[MenuBarsLoaderService] to load a serialized form of `MenuBars` instance, called `menubars.layout.xml`, from the classpath.
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/hooks/ExecutionSubscriber_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/hooks/ExecutionSubscriber_020-examples-and-usage.adoc
index 7c26c8f..942ebd7 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/hooks/ExecutionSubscriber_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/publishing/spi/hooks/ExecutionSubscriber_020-examples-and-usage.adoc
@@ -19,7 +19,7 @@ See also:
 
 * the xref:system:generated:index/applib/services/publishing/spi/EntityChangesSubscriber.adoc[EntityChangesSubscriber] is used to obtain the set of objects modified within the interaction
 
-* the xref:refguide:applib-svc:MetricsService.adoc[`MetricsService`] is used to obtain the objects that are loaded throughout the transaction; this info is used in order to instantiate the xref:system:generated:index/applib/services/publishing/spi/EntityChanges.adoc[EntityChanges] object passed through to the xref:system:generated:index/applib/services/publishing/spi/EntityChangesSubscriber.adoc[EntityChangesSubscriber].
+* the xref:system:generated:index/applib/services/metrics/MetricsService.adoc[`MetricsService`] is used to obtain the objects that are loaded throughout the transaction; this info is used in order to instantiate the xref:system:generated:index/applib/services/publishing/spi/EntityChanges.adoc[EntityChanges] object passed through to the xref:system:generated:index/applib/services/publishing/spi/EntityChangesSubscriber.adoc[EntityChangesSubscriber].
 
 * The services provided by this module combine very well with the xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber] and with xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber].
 +
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/queryresultscache/hooks/QueryResultsCache_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/queryresultscache/hooks/QueryResultsCache_020-examples-and-usage.adoc
index e322f0f..625c811 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/queryresultscache/hooks/QueryResultsCache_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/queryresultscache/hooks/QueryResultsCache_020-examples-and-usage.adoc
@@ -52,4 +52,4 @@ If however every order is for a different product, then no benefit will be gaine
 
 == Related Services
 
-The xref:refguide:applib-svc:Scratchpad.adoc[Scratchpad] service is also intended for actions that are called many times, allowing arbitrary information to be shared between them.
+The xref:system:generated:index/applib/services/scratchpad/Scratchpad.adoc[Scratchpad] service is also intended for actions that are called many times, allowing arbitrary information to be shared between them.
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/routing/hooks/RoutingService_010-implementation.adoc b/antora/components/system/modules/generated/pages/index/applib/services/routing/hooks/RoutingService_010-implementation.adoc
index 72bfc2e..2ee3816 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/routing/hooks/RoutingService_010-implementation.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/routing/hooks/RoutingService_010-implementation.adoc
@@ -7,4 +7,4 @@
 
 
 The framework provides a default implementation - `o.a.i.runtimeservices.routing.RoutingServiceDefault` - which will always return the original object provided, or the home page if a `null` or `void` was provided.
-Under the covers this implementation uses the xref:refguide:applib-svc:HomePageResolverService.adoc[`HomePageResolverService`].
+Under the covers this implementation uses the xref:system:generated:index/applib/services/homepage/HomePageResolverService.adoc[`HomePageResolverService`].
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/routing/hooks/RoutingService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/routing/hooks/RoutingService_020-examples-and-usage.adoc
index 2049759..7563b1b 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/routing/hooks/RoutingService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/routing/hooks/RoutingService_020-examples-and-usage.adoc
@@ -13,7 +13,7 @@ The route used will be the result of the first implementation checked that decla
 
 == Related Services
 
-* xref:refguide:applib-svc:HomePageResolverService.adoc[`HomePageResolverService`]
+* xref:system:generated:index/applib/services/homepage/HomePageResolverService.adoc[`HomePageResolverService`]
 +
 Used by the default implementation of this service uses the
  to determine where to route actions that return `null` or are declared as `void`.
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/scratchpad/hooks/Scratchpad_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/scratchpad/hooks/Scratchpad_020-examples-and-usage.adoc
index 086ccb5..ae753ce 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/scratchpad/hooks/Scratchpad_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/scratchpad/hooks/Scratchpad_020-examples-and-usage.adoc
@@ -4,7 +4,7 @@
 
 == Related Services
 
-* xref:refguide:applib-svc:QueryResultsCache.adoc[`QueryResultsCache`]
+* xref:system:generated:index/applib/services/queryresultscache/QueryResultsCache.adoc[`QueryResultsCache`]
 +
 is useful for caching the results of expensive method calls.
 It is also
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/sudo/hooks/SudoService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/sudo/hooks/SudoService_020-examples-and-usage.adoc
index ce9edf1..abec672 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/sudo/hooks/SudoService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/sudo/hooks/SudoService_020-examples-and-usage.adoc
@@ -27,11 +27,11 @@ protected void execute(final ExecutionContext ec) {
 
 == Interaction with Shiro
 
-When `sudo(...)` is called the "effective user" is reported by  xref:refguide:applib-svc:UserService.adoc[`UserService`].
+When `sudo(...)` is called the "effective user" is reported by  xref:system:generated:index/applib/services/user/UserService.adoc[`UserService`].
 However, it does _not_ propagate through to the xref:security:ROOT:about.adoc[Shiro security mechanism], which continue to be evaluated according to the permissions of the current user.
 
 This can be a problem in certain use cases.
-For example if running a fixture script (which uses the xref:system:generated:index/applib/services/wrapper/WrapperFactory.adoc[WrapperFactory]) from within an implementation of xref:refguide:applib-svc:UserRegistrationService.adoc[`UserRegistrationService`], this is likely to result in ``HiddenException``s being thrown because there is no effective user.
+For example if running a fixture script (which uses the xref:system:generated:index/applib/services/wrapper/WrapperFactory.adoc[WrapperFactory]) from within an implementation of xref:system:generated:index/applib/services/userreg/UserRegistrationService.adoc[`UserRegistrationService`], this is likely to result in ``HiddenException``s being thrown because there is no effective user.
 
 In such cases, permission checking can simply be disabled by specifying `SudoService.ACCESS_ALL_ROLE` as one of the roles.
 For example:
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/userreg/hooks/EmailNotificationService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/userreg/hooks/EmailNotificationService_020-examples-and-usage.adoc
index 0173d07..7c61331 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/userreg/hooks/EmailNotificationService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/userreg/hooks/EmailNotificationService_020-examples-and-usage.adoc
@@ -17,7 +17,7 @@ If necessary, one can be created on the fly using the `InteractionFactory#runAut
 
 The `EmailNotificationService` supports the xref:vw:ROOT:features.adoc#user-registration[user registration] (self sign-up) features of the xref:vw:ROOT:about.adoc[Wicket viewer] whereby a user can sign-up to access an application by providing a valid email address.
 
-* The Wicket viewer will check whether an implementation of this service (and also the xref:refguide:applib-svc:UserRegistrationService.adoc[`UserRegistrationService`]) is available, and if so will (unless configured not to) expose a sign-up page where the user enters their email address.
+* The Wicket viewer will check whether an implementation of this service (and also the xref:system:generated:index/applib/services/userreg/UserRegistrationService.adoc[`UserRegistrationService`]) is available, and if so will (unless configured not to) expose a sign-up page where the user enters their email address.
 
 * A verification email is sent using this service; the email includes a link back to the running application.
 
@@ -25,14 +25,14 @@ The `EmailNotificationService` supports the xref:vw:ROOT:features.adoc#user-regi
 
 * The role of this service in all of this is to format and send out emails for the initial registration, or for password resets.
 
-The default implementation of this service uses the xref:refguide:applib-svc:EmailService.adoc[`EmailService`], which must be configured in order for user registration to be enabled.
+The default implementation of this service uses the xref:system:generated:index/applib/services/email/EmailService.adoc[`EmailService`], which must be configured in order for user registration to be enabled.
 
 
 == Related Services
 
-The default implementation of this service uses xref:refguide:applib-svc:EmailService.adoc[`EmailService`], which must have been configured/initialized correctly.
+The default implementation of this service uses xref:system:generated:index/applib/services/email/EmailService.adoc[`EmailService`], which must have been configured/initialized correctly.
 
-This service is used by (Apache Isis' default implementation of) xref:refguide:applib-svc:UserRegistrationService.adoc[`UserRegistrationService`].
+This service is used by (Apache Isis' default implementation of) xref:system:generated:index/applib/services/userreg/UserRegistrationService.adoc[`UserRegistrationService`].
 
 
 == Related Event Classes
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/userreg/hooks/UserRegistrationService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/userreg/hooks/UserRegistrationService_020-examples-and-usage.adoc
index 02237ae..16c541f 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/userreg/hooks/UserRegistrationService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/userreg/hooks/UserRegistrationService_020-examples-and-usage.adoc
@@ -14,7 +14,7 @@ The email service (`EmailServiceDefault`) _does_ require a couple of configurati
 
 === User sign-up
 
-For user sign-up, the xref:vw:ROOT:about.adoc[Wicket viewer] will check whether an implementation of this service (and also the xref:refguide:applib-svc:EmailNotificationService.adoc[`EmailNotificationService`]) is available, and if so will render a sign-up page where the user enters their email address.
+For user sign-up, the xref:vw:ROOT:about.adoc[Wicket viewer] will check whether an implementation of this service (and also the xref:system:generated:index/applib/services/userreg/EmailNotificationService.adoc[`EmailNotificationService`]) is available, and if so will render a sign-up page where the user enters their email address.
 A verification email is sent (using the aforementioned `EmailNotificationService`) which includes a link back to the running application; this allows the user then to complete their registration process (choose user name, password and so on).
 When the user has provided the additional details, the Wicket viewer calls _this_ service in order to create an account for them, and then logs the user on.
 
diff --git a/antora/components/system/modules/generated/pages/index/applib/services/xmlsnapshot/hooks/XmlSnapshotService_020-examples-and-usage.adoc b/antora/components/system/modules/generated/pages/index/applib/services/xmlsnapshot/hooks/XmlSnapshotService_020-examples-and-usage.adoc
index e13948f..fc2f5a8 100644
--- a/antora/components/system/modules/generated/pages/index/applib/services/xmlsnapshot/hooks/XmlSnapshotService_020-examples-and-usage.adoc
+++ b/antora/components/system/modules/generated/pages/index/applib/services/xmlsnapshot/hooks/XmlSnapshotService_020-examples-and-usage.adoc
@@ -125,11 +125,11 @@ One reason for doing this is to provide a stable API between the domain model an
 * xref:system:generated:index/applib/services/xmlsnapshot/XmlSnapshotService~Snapshot.adoc[Snapshot]
 ** xref:system:generated:index/applib/services/xmlsnapshot/XmlSnapshotService~Snapshot~Builder.adoc[Snapshot.Builder]
 
-* xref:refguide:applib-svc:BookmarkService.adoc[BookmarkService]
+* xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[BookmarkService]
 +
 provides a mechanism for obtaining a string representations of a single domain object.
 
-* xref:refguide:applib-svc:JaxbService.adoc[JaxbService]
+* xref:system:generated:index/applib/services/jaxb/JaxbService.adoc[JaxbService]
 +
 is a simple wrapper around standard JAXB functionality for generating both XMLs and XSDs from JAXB-annotated classes.
 +
diff --git a/api/adoc/userguide/modules/btb/pages/hints-and-tips/how-to-handle-void-and-null-results.adoc b/api/adoc/userguide/modules/btb/pages/hints-and-tips/how-to-handle-void-and-null-results.adoc
index e771622..04709e1 100644
--- a/api/adoc/userguide/modules/btb/pages/hints-and-tips/how-to-handle-void-and-null-results.adoc
+++ b/api/adoc/userguide/modules/btb/pages/hints-and-tips/how-to-handle-void-and-null-results.adoc
@@ -21,7 +21,7 @@ When clicking the back button in the browser the user sees "Object not found" (s
 And refresh the current page when receiving a null response or invoking a void action.
 But how to implement this?_
 
-One way to implement this idea is to provide a custom implementation of the xref:refguide:applib-svc:RoutingService.adoc[`RoutingService`] SPI domain service.
+One way to implement this idea is to provide a custom implementation of the xref:system:generated:index/applib/services/routing/RoutingService.adoc[`RoutingService`] SPI domain service.
 The default implementation will either return the current object (if not null), else the home page (as defined by xref:system:generated:index/applib/annotation/HomePage.adoc[`@HomePage`]) if one exists.
 
 The following custom implementation refines this to use the breadcrumbs (available in the Wicket viewer) to return the first non-deleted domain object found in the list of breadcrumbs:
diff --git a/api/adoc/userguide/modules/btb/pages/hints-and-tips/how-to-implement-a-spellchecker.adoc b/api/adoc/userguide/modules/btb/pages/hints-and-tips/how-to-implement-a-spellchecker.adoc
index 7900ff5..82fc0bc 100644
--- a/api/adoc/userguide/modules/btb/pages/hints-and-tips/how-to-implement-a-spellchecker.adoc
+++ b/api/adoc/userguide/modules/btb/pages/hints-and-tips/how-to-implement-a-spellchecker.adoc
@@ -11,7 +11,7 @@ From this link:http://isis.markmail.org/thread/dduarjscrbnodfsi[thread] on the A
 * _What is the easiest way to add a spell checker to the text written in a field in
    a domain object, for instance to check English syntax?_
 
-One way to implement is to use the xref:refguide:applib-svc:EventBusService.adoc[event bus]:
+One way to implement is to use the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[event bus]:
 
 * Set up a xref:refguide:applib-cm:classes/domainevent.adoc[domain event] subscriber that can veto the changes.
 
diff --git a/api/adoc/userguide/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc b/api/adoc/userguide/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc
index 1ac4f2b..8fe323c 100644
--- a/api/adoc/userguide/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc
+++ b/api/adoc/userguide/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc
@@ -9,7 +9,7 @@
 The framework provides default implementations for many of the xref:refguide:applib-svc:about.adoc[domain services].
 This is convenient, but sometimes you will want to replace the default implementation with your own service implementation.
 
-For example, suppose you wanted to provide your own implementation of xref:refguide:applib-svc:LocaleProvider.adoc[`LocaleProvider`].
+For example, suppose you wanted to provide your own implementation of xref:system:generated:index/applib/services/i18n/LocaleProvider.adoc[`LocaleProvider`].
 The trick is to use the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation or equivalent mechanism.
 
 Here's how:
diff --git a/api/adoc/userguide/modules/btb/pages/hints-and-tips/transactions-and-errors.adoc b/api/adoc/userguide/modules/btb/pages/hints-and-tips/transactions-and-errors.adoc
index 7e718ed..8c0e3bf 100644
--- a/api/adoc/userguide/modules/btb/pages/hints-and-tips/transactions-and-errors.adoc
+++ b/api/adoc/userguide/modules/btb/pages/hints-and-tips/transactions-and-errors.adoc
@@ -11,7 +11,7 @@ Indeed, if you do try to manage transactions (eg by reaching into the JDO `Persi
 
 However, you can complete a given transaction and start a new one.
 This is sometimes useful if writing a xref:testing:fixtures:about.adoc#fixture-scripts[fixture script] which is going to perform some sort of bulk migration of data from an old system.
-For this use case, use the xref:refguide:applib-svc:TransactionService.adoc[`TransactionService`].
+For this use case, use the xref:system:generated:index/applib/services/xactn/TransactionService.adoc[`TransactionService`].
 
 For example:
 
@@ -35,7 +35,7 @@ public class SomeLongRunningFixtureScript extends FixtureScript
 
 == Raise message in the UI
 
-The framework provides the xref:refguide:applib-svc:MessageService.adoc[`MessageService`] as a means to return an out-of-band message to the end-user.
+The framework provides the xref:system:generated:index/applib/services/message/MessageService.adoc[`MessageService`] as a means to return an out-of-band message to the end-user.
 In the xref:vw:ROOT:about.adoc[Wicket viewer] these are shown as "toast" pop-ups; the
 xref:vro:ROOT:about.adoc[Restful Objects viewer] returns an HTTP header.
 
@@ -64,7 +64,7 @@ If however you want to indicate that the exception is in some sense "expected",
 Another way in which exceptions might be considered "expected" could be as the result of attempting to persist an object which then violates some type of database constraint.
 Even if the domain application checks beforehand, it could be that another user operating on the object at the same moment of time might result in the conflict.
 
-To handle this the xref:refguide:applib-svc:ExceptionRecognizerService.adoc[`ExceptionRecognizer`] SPI can be used.
+To handle this the xref:system:generated:index/applib/services/exceprecog/ExceptionRecognizerService.adoc[`ExceptionRecognizer`] SPI can be used.
 The framework provides a number of implementations out-of-the-box; whenever an exception is thrown it is passed to each known recognizer implementation to see if it recognizes the exception and can return a user-meaningful error message.
 For example, `ExceptionRecognizerForSQLIntegrityConstraintViolationUniqueOrIndexException` checks if the exception inherits from `java.sql.SQLIntegrityConstraintViolationException`, and if so, constructs a suitable message.
 
diff --git a/api/adoc/userguide/modules/btb/pages/hints-and-tips/vetoing-visibility.adoc b/api/adoc/userguide/modules/btb/pages/hints-and-tips/vetoing-visibility.adoc
index cabf7e2..60ec495 100644
--- a/api/adoc/userguide/modules/btb/pages/hints-and-tips/vetoing-visibility.adoc
+++ b/api/adoc/userguide/modules/btb/pages/hints-and-tips/vetoing-visibility.adoc
@@ -5,7 +5,7 @@
 :page-partial:
 
 
-NOTE: FIXME - a write-up of the "vetoing subscriber" design pattern, eg as described in the  xref:refguide:applib-svc:BookmarkService.adoc[`BookmarkService`]
+NOTE: FIXME - a write-up of the "vetoing subscriber" design pattern, eg as described in the  xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[`BookmarkService`]
 
 
 eg if included an addon such as auditing or security.
diff --git a/api/adoc/userguide/modules/btb/pages/hints-and-tips/view-model-instantiation.adoc b/api/adoc/userguide/modules/btb/pages/hints-and-tips/view-model-instantiation.adoc
index 0b937b0..3049971 100644
--- a/api/adoc/userguide/modules/btb/pages/hints-and-tips/view-model-instantiation.adoc
+++ b/api/adoc/userguide/modules/btb/pages/hints-and-tips/view-model-instantiation.adoc
@@ -28,7 +28,7 @@ If it is, then we should probably remove FactoryService#create(...) for view mod
 With view models, some care must be taken in how they are instantiated.
 Specifically, it's important that the framework doesn't "know" about the view model until its state is "sufficiently" populated to distinguish from other view models.
 
-In practical terms, this means that view models should be instantiated using a constructor, and then injecting services (if required) using the xref:refguide:applib-svc:ServiceRegistry.adoc[`ServiceRegistry`] service:
+In practical terms, this means that view models should be instantiated using a constructor, and then injecting services (if required) using the xref:system:generated:index/applib/services/registry/ServiceRegistry.adoc[`ServiceRegistry`] service:
 
 [source,java]
 ----
diff --git a/api/adoc/userguide/modules/fun/pages/concepts-patterns/apache-isis-vs-cqrs-and-event-sourcing.adoc b/api/adoc/userguide/modules/fun/pages/concepts-patterns/apache-isis-vs-cqrs-and-event-sourcing.adoc
index 0b3cee8..748c676 100644
--- a/api/adoc/userguide/modules/fun/pages/concepts-patterns/apache-isis-vs-cqrs-and-event-sourcing.adoc
+++ b/api/adoc/userguide/modules/fun/pages/concepts-patterns/apache-isis-vs-cqrs-and-event-sourcing.adoc
@@ -54,7 +54,7 @@ Here, Apache Isis would be used to provide the UI for the _read_ model, with the
 Mixins would decorate these entities, but would act upon a write model whose persistence is handled outside of Apache Isis, probably using Spring Boot directly to provide a datasource.
 To synchronise the write- and read- model, the events emitted by xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber] could be used.
 
-With respect to commands, Apache Isis provides the xref:refguide:applib-svc:CommandServiceInternal.adoc[`CommandService`] which allows each business action to be reified into a `Command`.
+With respect to commands, Apache Isis provides the xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber] which allows each business action to be reified into a `Command`.
 However, names are misleading here: Apache Isis' commands are relatively passive, merely recording the intent of the user to invoke some operation.
 In a CQRS architecture, commands take a more active role, locating and acting upon the domain objects.
 More significantly, in CQRS each command has its own class, such as `PlaceOrderCommand`, instantiated by the client and then executed.
@@ -87,7 +87,7 @@ But in any case the roadmap is to support JPA as well as JDO, indeed as you read
 
 As with a CQRS architecture, Apache xref:userguide:fun:mixins.adoc[mixins] would be the obvious way to associate behaviour with an event sourced entity.
 These mixins would most likely delegate to an event sourcing framework such as link:https://axoniq.io/[Axon] to do the work.
-Also, in Apache Isis every business action (and indeed, property and collection) emits domain events through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`], and can optionally also be published through the xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber].
+Also, in Apache Isis every business action (and indeed, property and collection) emits domain events through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`], and can optionally also be published through the xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber].
 These features could also have a role to play in an event sourced system.
 
 
diff --git a/api/adoc/userguide/modules/fun/pages/concepts-patterns/architecture.adoc b/api/adoc/userguide/modules/fun/pages/concepts-patterns/architecture.adoc
index f5fb66d..9a9eb99 100644
--- a/api/adoc/userguide/modules/fun/pages/concepts-patterns/architecture.adoc
+++ b/api/adoc/userguide/modules/fun/pages/concepts-patterns/architecture.adoc
@@ -94,4 +94,4 @@ Apache Isis' support for contributions (not only contributed actions, but also c
 And again, to loop back to the topic of this section, it's an AOP concept that being implemented by the framework.
 
 The nice thing about aspect orientation is that for the most part you can ignore these cross-cutting concerns and - at least initially - just focus on implementing your domain object.
-Later when your app starts to grow and you start to break it out into smaller modules, you can leverage Apache Isis' AOP support for xref:userguide:fun:overview.adoc#mixins[mixins] and interceptors (using the xref:refguide:applib-svc:EventBusService.adoc[event bus]) to ensure that your codebase remains maintainable.
+Later when your app starts to grow and you start to break it out into smaller modules, you can leverage Apache Isis' AOP support for xref:userguide:fun:overview.adoc#mixins[mixins] and interceptors (using the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[event bus]) to ensure that your codebase remains maintainable.
diff --git a/api/adoc/userguide/modules/fun/pages/concepts-patterns/core-values.adoc b/api/adoc/userguide/modules/fun/pages/concepts-patterns/core-values.adoc
index f84b625..fae1715 100644
--- a/api/adoc/userguide/modules/fun/pages/concepts-patterns/core-values.adoc
+++ b/api/adoc/userguide/modules/fun/pages/concepts-patterns/core-values.adoc
@@ -82,7 +82,7 @@ To support the business domain being split into separate modules, the framework
 
 For those cases where a module needs to interact with other modules but does not know about their implementations, the module can either define its own link:https://en.wikipedia.org/wiki/Service_provider_interface[SPI] domain services or it can define custom domain events and fire them.
 This technique is also used extensively by the framework itself.
-For example, the xref:refguide:applib-svc:EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] SPI enables custom auditing, and the xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber] SPI enables custom publishing.
+For example, the xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] SPI enables custom auditing, and the xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber] SPI enables custom publishing.
 
 When building a modular application, it's important to consider the logical layering of the modules: we don't need every module to be completely decoupled from every other.
 The most important requirement is that there are no cyclic dependencies, because otherwise we run the risk of the application degrading into a link:https://en.wikipedia.org/wiki/Big_ball_of_mud["big ball of mud"].
diff --git a/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/crud.adoc b/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/crud.adoc
index 238d452..905a52d 100644
--- a/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/crud.adoc
+++ b/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/crud.adoc
@@ -6,7 +6,7 @@
 
 
 This chapter shows the idioms for creating, reading, updating and deleting xref:userguide:fun:overview.adoc#domain-entities[domain entities].
-The main domain services used for this are xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`] and xref:system:generated:index/applib/services/factory/FactoryService.adoc[`FactoryService`].
+The main domain services used for this are xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`] and xref:system:generated:index/applib/services/factory/FactoryService.adoc[`FactoryService`].
 
 
 [[instantiating]]
@@ -40,7 +40,7 @@ public class Customer {
 ----
 
 In such cases, the domain object cannot be instantiated using xref:system:generated:index/applib/services/factory/FactoryService.adoc[`FactoryService`].
-Instead the xref:refguide:applib-svc:ServiceInjector.adoc[`ServiceInjector`] service can be used to inject services:
+Instead the xref:system:generated:index/applib/services/inject/ServiceInjector.adoc[`ServiceInjector`] service can be used to inject services:
 
 [source,java]
 ----
@@ -62,7 +62,7 @@ Note though that this does _not_ raise any lifecycle event.
 [[persisting]]
 == Persisting
 
-Once a domain entity has been instantiated and initialized, it can be persisted using the xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`].
+Once a domain entity has been instantiated and initialized, it can be persisted using the xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`].
 
 For example:
 
@@ -100,7 +100,7 @@ Note that the `persist()` returns the object passed to it.
 
 It's worth being aware that the framework does _not_ eagerly persist the object.
 Rather, it queues up an internal command structure representing the object persistence request.
-This is then executed either at the end of the transaction, or if a xref:userguide:fun:domain-entities-and-services.adoc#finding[query is run], or if the internal queue is manually flushed using xref:refguide:applib-svc:TransactionService.adoc[`TransactionService`]'s `flush()` method.
+This is then executed either at the end of the transaction, or if a xref:userguide:fun:domain-entities-and-services.adoc#finding[query is run], or if the internal queue is manually flushed using xref:system:generated:index/applib/services/xactn/TransactionService.adoc[`TransactionService`]'s `flush()` method.
 Flushing also happens when a repository query is executed, so that the pending persist operation is performed first.
 Generally therefore the lazy persistence approach works well enough.
 
@@ -134,7 +134,7 @@ One downside is that the code is arguably less easy to debug.
 
 Retrieving domain entities depends on the ORM.
 In the case of xref:pjdo:ROOT:about.adoc[JDO/DataNucleus], it typically requires a JDOQL query defined on the domain entity, and a corresponding repository service for that domain entity type.
-This repository calls the framework-provided xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`] to actually submit the query.
+This repository calls the framework-provided xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`] to actually submit the query.
 
 For example:
 
@@ -182,7 +182,7 @@ public class CustomerRepository {
 
 }
 ----
-<1>    The xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`] is a generic facade over the JDO/DataNucleus API.
+<1>    The xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`] is a generic facade over the JDO/DataNucleus API.
 <2> Specifies the class that is annotated with @Query
 <3> Corresponds to the `@Query#name` attribute
 <4> Corresponds to the `:name` parameter in the query JDOQL string
@@ -206,7 +206,7 @@ Rather, the ORM (DataNucleus) automatically keeps track of the state of each obj
 
 That said, it is possible to "flush" pending changes:
 
-* xref:refguide:applib-svc:TransactionService.adoc[`TransactionService`] acts at the Apache Isis layer, and flushes any pending object persistence or object deletions
+* xref:system:generated:index/applib/services/xactn/TransactionService.adoc[`TransactionService`] acts at the Apache Isis layer, and flushes any pending object persistence or object deletions
 
 * (if using xref:pjdo:ROOT:about.adoc[JDO/DataNucleus]), the xref:pjdo:ROOT:services/IsisJdoSupport.adoc[`IsisJdoSupport`] domain service can be used reach down to the underlying JDO API, and perform a flush of pending object updates also.
 
@@ -218,7 +218,7 @@ When an object is updated the framework will emit `ObjectUpdatingEvent` and `Obj
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 :page-partial:
 
-Domain entities can be deleted using xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`].
+Domain entities can be deleted using xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`].
 For example:
 
 [source,java]
@@ -229,7 +229,7 @@ repositoryService.remove(customer);
 
 It's worth being aware that (as for persisting new entities) the framework does _not_ eagerly delete the object.
 Rather, it queues up an internal command structure representing the object deletion request.
-This is then executed either at the end of the transaction, or if a xref:userguide:fun:domain-entities-and-services.adoc#finding[query is run], or if the internal queue is manually flushed using xref:refguide:applib-svc:TransactionService.adoc[`TransactionService`]'s `flush()` method.
+This is then executed either at the end of the transaction, or if a xref:userguide:fun:domain-entities-and-services.adoc#finding[query is run], or if the internal queue is manually flushed using xref:system:generated:index/applib/services/xactn/TransactionService.adoc[`TransactionService`]'s `flush()` method.
 
 Alternatively, you can use:
 
diff --git a/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/domain-entities.adoc b/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/domain-entities.adoc
index 21d5b64..8dab70f 100644
--- a/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/domain-entities.adoc
+++ b/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/domain-entities.adoc
@@ -155,7 +155,7 @@ Must correspond to the class on which the annotation is defined (the framework c
 
 JDO/DataNucleus provides several APIs for defining queries, including entirely programmatic and type-safe APIs; but JDOQL is very similar to SQL and so easily learnt.
 
-To actually use the above definition, the framework provides the xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`].
+To actually use the above definition, the framework provides the xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`].
 This is a generic repository for any domain class.
 
 The corresponding repository method for the above query is:
diff --git a/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/domain-services.adoc b/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/domain-services.adoc
index 7e7c9cc..a4b922e 100644
--- a/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/domain-services.adoc
+++ b/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/domain-services.adoc
@@ -44,7 +44,7 @@ Such programmatic services are usually annotated with Spring's link:https://docs
 
 == Repository and Factory
 
-The repository/factory uses an injected xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`] to both instantiate new objects and to query the database for existing objects of a given entity type.
+The repository/factory uses an injected xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`] to both instantiate new objects and to query the database for existing objects of a given entity type.
 Generally these services are not visible in UI, and so are annotated with link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/stereotype/Repository.html[`@Repository`]
 
 For example:
@@ -79,7 +79,7 @@ public CustomerRepository {
 }
 ----
 <.> Detected and managed by Spring Boot.
-<.> Lombok annotation for dependency injection of xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`] through generated constructor.
+<.> Lombok annotation for dependency injection of xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`] through generated constructor.
 <.> uses injected `RepositoryService` to query via JDOQL.
 <.> uses injected `RepositoryService` to instantiate a not-yet-persisted domain entity ...
 <.> \... and then save into the database a new `Customer` instance.
@@ -195,7 +195,7 @@ By default all domain services are application-scoped, in other words singletons
 Such domain services are required to be thread-safe, usually satisfied by being intrinsically stateless.
 
 Sometimes though a service's lifetime is applicable only to a single (http) request.
-The framework has a number of such services, including a xref:refguide:applib-svc:Scratchpad.adoc[`Scratchpad`] service (to share adhoc data between methods), and xref:refguide:applib-svc:QueryResultsCache.adoc[`QueryResultsCache`], which as its name suggests will cache query results.
+The framework has a number of such services, including a xref:system:generated:index/applib/services/scratchpad/Scratchpad.adoc[`Scratchpad`] service (to share adhoc data between methods), and xref:system:generated:index/applib/services/queryresultscache/QueryResultsCache.adoc[`QueryResultsCache`], which as its name suggests will cache query results.
 Such services _do_ hold state, but that state is scoped per (possibly concurrent) request and should be removed afterwards.
 
 The requirement for request-scoped services is supported using Apache Isis' own xref:system:generated:index/applib/annotation/InteractionScope.adoc[`@IsisSessionScope`] annotation (named because a short-lived `IsisSession` is created for each request).
diff --git a/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/inject-services.adoc b/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/inject-services.adoc
index 8b219d1..f172a4b 100644
--- a/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/inject-services.adoc
+++ b/api/adoc/userguide/modules/fun/pages/domain-entities-and-services/inject-services.adoc
@@ -5,7 +5,7 @@
 :page-partial:
 
 
-Apache Isis runs on top of Spring Boot, and uses Spring Boot for dependency injection, both the application's own domain services and also the many additional services defined by the framework (such as xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`]).
+Apache Isis runs on top of Spring Boot, and uses Spring Boot for dependency injection, both the application's own domain services and also the many additional services defined by the framework (such as xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`]).
 
 Since this is a core capability of Spring, it's worth checking out Spring's link:https://docs.spring.io/spring/docs/current/spring-framework-reference/core.html#beans-factory-collaborators[documentation] on the topic.
 
@@ -179,7 +179,7 @@ Most domain services are application-scoped, in other words they are stateless g
 
 A small number of framework-provided services are annotated using xref:system:generated:index/applib/annotation/InteractionScope.adoc[`@IsisSessionScope`].
 This means that they are stateful and scoped with each isis session, in other words HTTP request.
-One such service is xref:refguide:applib-svc:QueryResultsCache.adoc[`QueryResultsCache`], used for performance caching.
+One such service is xref:system:generated:index/applib/services/queryresultscache/QueryResultsCache.adoc[`QueryResultsCache`], used for performance caching.
 
 These domain services must be requested using a slightly different idiom, using the `Provider` interface.
 For example:
diff --git a/api/adoc/userguide/modules/fun/pages/mixins.adoc b/api/adoc/userguide/modules/fun/pages/mixins.adoc
index a1ba98d..27772a0 100644
--- a/api/adoc/userguide/modules/fun/pages/mixins.adoc
+++ b/api/adoc/userguide/modules/fun/pages/mixins.adoc
@@ -168,7 +168,7 @@ DocumentHolder_documents mixin =
     factoryService.mixin(DocumentHolder_documents.class, customer);
 ----
 
-Alternatively, you can use xref:refguide:applib-svc:ServiceInjector.adoc[`ServiceInjector`] to inject domain services after the mixin has been instantiated.
+Alternatively, you can use xref:system:generated:index/applib/services/inject/ServiceInjector.adoc[`ServiceInjector`] to inject domain services after the mixin has been instantiated.
 You'll need to use this method if using nested non-static mixins:
 
 
diff --git a/api/adoc/userguide/modules/fun/pages/overview/events.adoc b/api/adoc/userguide/modules/fun/pages/overview/events.adoc
index d8fdfd1..7d887e5 100644
--- a/api/adoc/userguide/modules/fun/pages/overview/events.adoc
+++ b/api/adoc/userguide/modules/fun/pages/overview/events.adoc
@@ -4,10 +4,10 @@
 :page-partial:
 
 
-When the framework renders a domain object, and as the end-user interacts with the domain object, the framework it emits multiple events using the intra-process xref:refguide:applib-svc:EventBusService.adoc[event bus].
+When the framework renders a domain object, and as the end-user interacts with the domain object, the framework it emits multiple events using the intra-process xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[event bus].
 These events enable other domain services (possibly in other modules) to influence how the domain object is rendered, or to perform side-effects or even veto an action invocation.
 
-To receive the events, the domain service should subscribe to the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`], and implement an appropriately annotated method to receive the events.
+To receive the events, the domain service should subscribe to the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`], and implement an appropriately annotated method to receive the events.
 
 The framework has several categories of events: domain events, UI events and lifecycle events.
 These are explored in the sections below.
@@ -15,7 +15,7 @@ These are explored in the sections below.
 [#domain-events]
 == Domain Events
 
-Domain events are fired -- through the internal xref:refguide:applib-svc:EventBusService.adoc[event bus] -- for every user interaction with each object member (property, collection or action).
+Domain events are fired -- through the internal xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[event bus] -- for every user interaction with each object member (property, collection or action).
 
 By default, rendering a property causes a `PropertyDomainEvent` to be fired, though the xref:system:generated:index/applib/annotation/Property.adoc#domainEvent[`@Property#domainEvent()`] attribute allows a custom subclass to be specified if necessary.
 Similarly, rendering a collection causes a `CollectionDomainEvent` to be fired, and rendering an action causes an `ActionDomainEvent` to be fired.
diff --git a/api/adoc/userguide/modules/fun/pages/overview/identifiers.adoc b/api/adoc/userguide/modules/fun/pages/overview/identifiers.adoc
index b44c462..e8d33e0 100644
--- a/api/adoc/userguide/modules/fun/pages/overview/identifiers.adoc
+++ b/api/adoc/userguide/modules/fun/pages/overview/identifiers.adoc
@@ -58,17 +58,17 @@ Some examples:
 * the information within an OID could be converted into a barcode, and stamped onto a PDF form.
 When the PDF is scanned by the mail room, the barcode could be read to attach the correspondence to the relevant domain object.
 
-* as a handle to any object in an audit record, as used by xref:refguide:applib-svc:EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber];
+* as a handle to any object in an audit record, as used by xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber];
 
-* similarly within implementations of xref:refguide:applib-svc:CommandSubscriber.adoc[CommandSubscriber] to persist `Command` objects
+* similarly within implementations of xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber] to persist `Command` objects
 
 * similarly within implementations of xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber] to persist published action invocations
 
 * and of course both the xref:vro:ROOT:about.adoc[RestfulObjects viewer] and xref:vw:ROOT:about.adoc[Wicket viewer] use the oid tuple to look up, render and allow the user to interact with domain objects.
 
 Although the exact content of an OID should be considered opaque by domain objects, it is possible for domain objects to obtain OIDs.
-These are represented as ``Bookmark``s, obtained from the xref:refguide:applib-svc:BookmarkService.adoc[`BookmarkService`].
-Deep links meanwhile can be obtained from the xref:refguide:applib-svc:DeepLinkService.adoc[`DeepLinkService`].
+These are represented as ``Bookmark``s, obtained from the xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[`BookmarkService`].
+Deep links meanwhile can be obtained from the xref:system:generated:index/applib/services/linking/DeepLinkService.adoc[`DeepLinkService`].
 
 OIDs can also be converted into XML format, useful for integration scenarios.
 The xref:refguide:schema:common.adoc[common schema] XSD defines the `oidDto` complex type for precisely this purpose.
diff --git a/api/adoc/userguide/modules/fun/pages/overview/modules.adoc b/api/adoc/userguide/modules/fun/pages/overview/modules.adoc
index 25a45f4..37e396a 100644
--- a/api/adoc/userguide/modules/fun/pages/overview/modules.adoc
+++ b/api/adoc/userguide/modules/fun/pages/overview/modules.adoc
@@ -44,7 +44,7 @@ A mixin would allow the UI for a `Customer` to also display these attached ``Doc
 Dependencies are also injected into mixins.
 A common technique is to factor out from domain objects into mixins and then generalise.
 
-* the internal xref:refguide:applib-svc:EventBusService.adoc[event bus] allows modules to influence other modules.
+* the internal xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[event bus] allows modules to influence other modules.
 +
 A subscriber in one module can subscribe to events emitted by domain objects in another module.
 These events can affect both the UI (eg hiding or disabling xref:overview.adoc#object-members[object members], or allowing or vetoing interactions).
diff --git a/api/adoc/userguide/modules/fun/pages/ui/menubars-layout.adoc b/api/adoc/userguide/modules/fun/pages/ui/menubars-layout.adoc
index d270bf2..a55b1ec 100644
--- a/api/adoc/userguide/modules/fun/pages/ui/menubars-layout.adoc
+++ b/api/adoc/userguide/modules/fun/pages/ui/menubars-layout.adoc
@@ -175,7 +175,7 @@ Once the application has bootstrapped with a layout file, downloading the "Defau
 
 === Downloading the layout file
 
-The current `menubars.layout.xml` can be downloaded from the xref:refguide:applib-svc:MenuBarsService.adoc[`MenuBarsService`] (exposed on the prototyping menu):
+The current `menubars.layout.xml` can be downloaded from the xref:system:generated:index/applib/services/menu/MenuBarsService.adoc[`MenuBarsService`] (exposed on the prototyping menu):
 
 image::menubars/010-download.png[width="300px"]
 
diff --git a/api/adoc/userguide/modules/fun/pages/ui/object-layout.adoc b/api/adoc/userguide/modules/fun/pages/ui/object-layout.adoc
index 00d58cc..f571b6f 100644
--- a/api/adoc/userguide/modules/fun/pages/ui/object-layout.adoc
+++ b/api/adoc/userguide/modules/fun/pages/ui/object-layout.adoc
@@ -14,7 +14,7 @@ File-based layouts offer a number of benefits:
 
 * UI hints can be provided for xref:userguide:fun:mixins.adoc[mixin] contributions that are synthesised at runtime.
 
-It is also possible to download an initial `.layout.xml` - capturing any existing layout metadata - using the xref:refguide:applib-svc:LayoutService.adoc[`LayoutService`] (exposed on the prototyping menu) or using a xref:refguide:applib-cm:roles-mixins-contributees/mixins.adoc#Object[mixin action] contributed to every domain object.
+It is also possible to download an initial `.layout.xml` - capturing any existing layout metadata - using the xref:system:generated:index/applib/services/layout/LayoutService.adoc[`LayoutService`] (exposed on the prototyping menu) or using a xref:refguide:applib-cm:roles-mixins-contributees/mixins.adoc#Object[mixin action] contributed to every domain object.
 
 There are some downsides, though:
 
@@ -256,7 +256,7 @@ There is no way to specify these semantics in the `.layout.xml` file (action par
 
 === Layout file styles
 
-If you want to make your usage of layout files consistent, then the framework can help because it allows the layout XML files to be downloaded using the xref:refguide:applib-svc:LayoutService.adoc[`LayoutService`].
+If you want to make your usage of layout files consistent, then the framework can help because it allows the layout XML files to be downloaded using the xref:system:generated:index/applib/services/layout/LayoutService.adoc[`LayoutService`].
 This is exposed on the prototyping menu to allow you to download a ZIP file of layout XML files for all domain entities and view models.
 
 When downloading the layout files, there are four "styles" available:
diff --git a/api/adoc/userguide/modules/fun/pages/ui/table-columns.adoc b/api/adoc/userguide/modules/fun/pages/ui/table-columns.adoc
index 323da46..51fc07c 100644
--- a/api/adoc/userguide/modules/fun/pages/ui/table-columns.adoc
+++ b/api/adoc/userguide/modules/fun/pages/ui/table-columns.adoc
@@ -6,7 +6,7 @@
 
 
 
-The optional xref:refguide:applib-svc:TableColumnOrderService.adoc[`TableColumnOrderService`] SPI service can be used to reorder columns in a table, either for a parented collection (owned by parent domain object) or a standalone collection (returned from an action invocation).
+The optional xref:system:generated:index/applib/services/tablecol/TableColumnOrderService.adoc[`TableColumnOrderService`] SPI service can be used to reorder columns in a table, either for a parented collection (owned by parent domain object) or a standalone collection (returned from an action invocation).
 
 For example, suppose there is a `Customer` and an `Order`:
 
diff --git a/api/adoc/userguide/modules/fun/pages/view-models.adoc b/api/adoc/userguide/modules/fun/pages/view-models.adoc
index 4e3f655..97e54fe 100644
--- a/api/adoc/userguide/modules/fun/pages/view-models.adoc
+++ b/api/adoc/userguide/modules/fun/pages/view-models.adoc
@@ -77,10 +77,10 @@ The derived properties could also have been implemented using xref:userguide:fun
 
 [IMPORTANT]
 ====
-Be aware that all the state will ultimately converted into a URL-safe form (by way of the xref:refguide:applib-svc:UrlEncodingService.adoc[`UrlEncodingService`]).
+Be aware that all the state will ultimately converted into a URL-safe form (by way of the xref:system:generated:index/applib/services/urlencoding/UrlEncodingService.adoc[`UrlEncodingService`]).
 
 There are limits to the lengths of URLs, however.
-If the URL does exceed limits or contains invalid characters, then provide a custom implementation of xref:refguide:applib-svc:UrlEncodingService.adoc[`UrlEncodingService`] to handle the memento string in some other fashion (eg substituting it with a GUID, with the memento cached somehow on the server).
+If the URL does exceed limits or contains invalid characters, then provide a custom implementation of xref:system:generated:index/applib/services/urlencoding/UrlEncodingService.adoc[`UrlEncodingService`] to handle the memento string in some other fashion (eg substituting it with a GUID, with the memento cached somehow on the server).
 ====
 
 [#referencing-domain-entities]
@@ -91,10 +91,10 @@ For example, the `CompareCustomers` view model described xref:userguide:fun:view
 
 It wouldn't make sense to serialize out the state of a persistent entity.
 However, the identity of the underlying entity is well defined; Apache Isis defines the xref:refguide:schema:common.adoc[common schema] which defines the `<oid-dto>` element (and corresponding `OidDto` class): the object's type and its identifier.
-This is basically a formal XML equivalent to the `Bookmark` object obtained from the xref:refguide:applib-svc:BookmarkService.adoc[`BookmarkService`].
+This is basically a formal XML equivalent to the `Bookmark` object obtained from the xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[`BookmarkService`].
 
 There is only one requirement to make this work: every referenced domain entity must be annotated with xref:refguide:applib-ant:XmlJavaTypeAdapter.adoc[`@XmlJavaTypeAdapter`], specifying the framework-provided `PersistentEntityAdapter`.
-And this class is similar to the xref:refguide:applib-svc:BookmarkService.adoc[`BookmarkService`]: it knows how to create an `OidDto` from an object reference.
+And this class is similar to the xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[`BookmarkService`]: it knows how to create an `OidDto` from an object reference.
 
 Thus, in our view model we can legitimately write:
 
diff --git a/api/adoc/userguide/modules/fun/pages/view-models/UNUSED-dto.adoc b/api/adoc/userguide/modules/fun/pages/view-models/UNUSED-dto.adoc
index c7366ec..93e6e47 100644
--- a/api/adoc/userguide/modules/fun/pages/view-models/UNUSED-dto.adoc
+++ b/api/adoc/userguide/modules/fun/pages/view-models/UNUSED-dto.adoc
@@ -170,9 +170,9 @@ Alternatively, you might also consider simply editing the source file, ie renami
 The actual consumers of DTOs will generally obtain the XML of the view models either by requesting the XML directly, eg using the xref:vro:ROOT:about.adoc[RestfulObjects viewer], or may have the XML sent to them asynchronously using an ESB such as Apache Camel.
 
 In the former case, the consumer requests the DTO by calling the REST API with the appropriate HTTP `Accept` header.
-An appropriate implementation of xref:refguide:applib-svc:ContentMappingService.adoc[`ContentMappingService`] can then be used to return the appropriate DTO (as XML).
+An appropriate implementation of xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[`ContentMappingService`] can then be used to return the appropriate DTO (as XML).
 
-For the latter case, one design is simply for the application to instantiate the view model, then call the xref:refguide:applib-svc:JaxbService.adoc[`JaxbService`] to obtain its corresponding XML.  This can then be published onto the ESB, for example using an http://activemq.apache.org[Apache ActiveMQ (TM)] queue.
+For the latter case, one design is simply for the application to instantiate the view model, then call the xref:system:generated:index/applib/services/jaxb/JaxbService.adoc[`JaxbService`] to obtain its corresponding XML.  This can then be published onto the ESB, for example using an http://activemq.apache.org[Apache ActiveMQ (TM)] queue.
 
 However, rather than try to push all the data that might be needed by any of these external systems in a single XML event (which would require anticipating all the requirements, likely a hopeless task), a better design is to publish only the fact that something of note has changed - ie, that an action on a domain object has been invoked - and then let the consumers call back to obtain other information if required.
 This can once again be done by calling the REST API with an appropriate HTTP `Accept` header.
diff --git a/api/adoc/userguide/modules/fun/partials/_deployment-options.adoc b/api/adoc/userguide/modules/fun/partials/_deployment-options.adoc
index 1ddbec4..df77040 100644
--- a/api/adoc/userguide/modules/fun/partials/_deployment-options.adoc
+++ b/api/adoc/userguide/modules/fun/partials/_deployment-options.adoc
@@ -51,7 +51,7 @@ For example, using a Javascript framework such as Angular/Ionic/ReactJs/Vue etc,
 +
 REST is designed to be machine-readable, and so is an excellent choice for synchronous data interchange scenarios.
 +
-The framework provides xref:refguide:applib-svc:ContentMappingService.adoc[SPI]s to allow custom repreentations to be returned as required.
+The framework provides xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[SPI]s to allow custom repreentations to be returned as required.
 
 * as the basis for a generic UI.
 +
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Collection/_summary.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Collection/_summary.adoc
index 850af4d..8202eff 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Collection/_summary.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Collection/_summary.adoc
@@ -2,7 +2,7 @@
 
 //<.> xref:system:generated:index/applib/annotation/Collection.adoc#domainEvent[`domainEvent()`]
 //+
-//The event type to be posted to the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] to broadcast the collection's business rule checking (hide, disable, validate) and its modification (before and after).
+//The event type to be posted to the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] to broadcast the collection's business rule checking (hide, disable, validate) and its modification (before and after).
 //
 //<.> xref:system:generated:index/applib/annotation/Collection.adoc#hidden[`hidden()`]
 //+
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Collection/domainEvent.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Collection/domainEvent.adoc
index 642e0dd..d3b517f 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Collection/domainEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Collection/domainEvent.adoc
@@ -14,7 +14,7 @@ In the cases of the domain object's collections, the events that are fired are:
 * pre-execute phase: before the modification of the collection
 * post-execute: after the modification of the collection
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`], and can influence each of these phases.
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`], and can influence each of these phases.
 
 [WARNING]
 ====
@@ -75,7 +75,7 @@ This substantially reduces the boilerplate in the subclasses because no explicit
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
@@ -171,7 +171,7 @@ And, conversely, the framework also provides `CollectionDomainEvent.Noop`; if `d
 == Raising events programmatically
 
 Normally events are only raised for interactions through the UI.
-However, events can be raised programmatically either by calling the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] API directly, or by emulating the UI by wrapping the target object using the xref:system:generated:index/applib/services/wrapper/WrapperFactory.adoc[WrapperFactory] domain service.
+However, events can be raised programmatically either by calling the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] API directly, or by emulating the UI by wrapping the target object using the xref:system:generated:index/applib/services/wrapper/WrapperFactory.adoc[WrapperFactory] domain service.
 
 == See also
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/createdLifecycleEvent.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/createdLifecycleEvent.adoc
index f279b4d..cfcd029 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/createdLifecycleEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/createdLifecycleEvent.adoc
@@ -8,13 +8,13 @@
 Whenever a domain object is instantiated or otherwise becomes known to the framework, a "created" lifecycle event is fired.
 This is typically when the xref:system:generated:index/applib/services/factory/FactoryService.adoc[`FactoryService`]'s `viewModel(...)` method is called.
 
-Subscribers subscribe through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the object just created.
+Subscribers subscribe through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the object just created.
 The subscriber could then, for example, update the object, eg looking up state from some external datastore.
 
 [TIP]
 ====
 It's possible to instantiate objects without firing this lifecycle; just instantiate using its regular constructor, and then use the ``ServiceInjector``'s
-xref:refguide:applib-svc:ServiceInjector.adoc[`injectServicesInto(...)`] to manually inject any required domain services.
+xref:system:generated:index/applib/services/inject/ServiceInjector.adoc[`injectServicesInto(...)`] to manually inject any required domain services.
 ====
 
 By default the event raised is `ObjectCreatedEvent.Default`.
@@ -49,7 +49,7 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/entityChangePublishing.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/entityChangePublishing.adoc
index e13b018..a20f3b8 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/entityChangePublishing.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/entityChangePublishing.adoc
@@ -6,7 +6,7 @@
 
 CAUTION: TODO: v2 - publishing/auditing got a complete overhaul
 
-The `entityChangePublishing` attribute indicates that if the object is modified, then each of its changed properties should be submitted to the registered xref:refguide:applib-svc:EntityPropertyChangeSubscriber.adoc[`EntityPropertyChangeSubscriber`](s).
+The `entityChangePublishing` attribute indicates that if the object is modified, then each of its changed properties should be submitted to the registered xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[`EntityPropertyChangeSubscriber`](s).
 
 The default value for the attribute is `AS_CONFIGURED`, meaning that the xref:refguide:config:sections/isis.applib.adoc#isis.applib.annotation.domain-object.propertyChangePublishing[`isis.applib.annotation.domain-object.propertyChangePublishing`] configuration property is used to determine the whether the action is audited:
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/loadedLifecycleEvent.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/loadedLifecycleEvent.adoc
index 48d344e..fbaa09e 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/loadedLifecycleEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/loadedLifecycleEvent.adoc
@@ -7,7 +7,7 @@
 
 Whenever a persistent domain object is loaded from the database, a "loaded" lifecycle event is fired.
 
-Subscribers subscribe through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object just loaded.
+Subscribers subscribe through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object just loaded.
 The subscriber could then, for example, update or default values on the object (eg to support on-the-fly migration scenarios).
 
 By default the event raised is `ObjectLoadedEvent.Default`.
@@ -42,7 +42,7 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/objectType.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/objectType.adoc
index 64714c4..42aacea 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/objectType.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/objectType.adoc
@@ -11,11 +11,11 @@ This value is used internally to generate a string representation of an objects
 This can appear in several contexts, including:
 
 * as the value of `Bookmark#getObjectType()` and in the `toString()` value of `Bookmark`
-(see xref:refguide:applib-svc:BookmarkService.adoc[`BookmarkService`])
+(see xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[`BookmarkService`])
 * in the serialization of `OidDto` in the xref:refguide:schema:cmd[command] and xref:refguide:schema:ixn.adoc[interaction] schemas
 * in the URLs of the xref:vro:ROOT:about.adoc[RestfulObjects viewer]
 * in the URLs of the xref:vw:ROOT:about.adoc[Wicket viewer]
-* in XML snapshots generated by the xref:refguide:applib-svc:XmlSnapshotService.adoc[`XmlSnapshotService`]
+* in XML snapshots generated by the xref:system:generated:index/applib/services/xmlsnapshot/XmlSnapshotService.adoc[`XmlSnapshotService`]
 
 == Examples
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/persistedLifecycleEvent.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/persistedLifecycleEvent.adoc
index 4070a7a..b285b6c 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/persistedLifecycleEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/persistedLifecycleEvent.adoc
@@ -7,7 +7,7 @@
 
 Whenever a (just created, still transient) domain object has been saved (INSERTed in)to the database, a "persisted" lifecycle event is fired.
 
-Subscribers subscribe through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object.
+Subscribers subscribe through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object.
 The subscriber could then, for example, maintain an external datastore.
 
 [WARNING]
@@ -49,7 +49,7 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/persistingLifecycleEvent.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/persistingLifecycleEvent.adoc
index 68637ef..6f78dfb 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/persistingLifecycleEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/persistingLifecycleEvent.adoc
@@ -7,7 +7,7 @@
 
 Whenever a (just created, still transient) domain object is about to be saved (INSERTed in)to the database, a "persisting" lifecycle event is fired.
 
-Subscribers subscribe through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object.
+Subscribers subscribe through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object.
 The subscriber could then, for example, update the object, or it could use it maintain an external datastore.
 One possible application is to maintain a full-text search database using link:https://lucene.apache.org/[Apache Lucene] or similar.
 
@@ -51,7 +51,7 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/removingLifecycleEvent.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/removingLifecycleEvent.adoc
index f6de85f..43588a0 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/removingLifecycleEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/removingLifecycleEvent.adoc
@@ -7,7 +7,7 @@ r
 
 Whenever a (persistent) domain object is about to be removed (DELETEd) from the database, a "removing" lifecycle event is fired.
 
-Subscribers subscribe through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object.
+Subscribers subscribe through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object.
 The subscriber could then, for example, could use it maintain an external datastore.
 One possible application is to maintain a full-text search database using link:https://lucene.apache.org/[Apache Lucene] or similar.
 
@@ -51,7 +51,7 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/updatedLifecycleEvent.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/updatedLifecycleEvent.adoc
index e11e84e..bbf28d6 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/updatedLifecycleEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/updatedLifecycleEvent.adoc
@@ -7,7 +7,7 @@
 
 Whenever a (persistent) domain object has been modified and has been updated in the database, an "updated" lifecycle event is fired.
 
-Subscribers subscribe through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object.
+Subscribers subscribe through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object.
 
 [WARNING]
 ====
@@ -48,7 +48,7 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/updatingLifecycleEvent.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/updatingLifecycleEvent.adoc
index d3d6fc2..4ffb0d3 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/updatingLifecycleEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObject/updatingLifecycleEvent.adoc
@@ -7,7 +7,7 @@
 
 Whenever a (persistent) domain object has been modified and is about to be updated to the database, an "updating" lifecycle event is fired.
 
-Subscribers subscribe through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object.
+Subscribers subscribe through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] and can use the event to obtain a reference to the domain object.
 The subscriber could then, for example, update the object, or it could use it maintain an external datastore.
 One possible application is to maintain a full-text search database using link:https://lucene.apache.org/[Apache Lucene] or similar.
 
@@ -52,7 +52,7 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/cssClassUiEvent.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/cssClassUiEvent.adoc
index 608225f..fd8ddb1 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/cssClassUiEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/cssClassUiEvent.adoc
@@ -9,7 +9,7 @@ Whenever a domain object is to be rendered, the framework fires off an CSS class
 This is as an alternative to implementing xref:refguide:applib-methods:reserved.adoc#cssClass[`cssClass()`] reserved method.
 (If `cssClass()` is present, then it will take precedence).
 
-Subscribers subscribe through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] and can use obtain a reference to the domain object from the event.
+Subscribers subscribe through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] and can use obtain a reference to the domain object from the event.
 From this they can, if they wish, specify a CSS class for the domain object using the event's API.
 
 By default the event raised is `CssClassUiEvent.Default`.
@@ -44,7 +44,7 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
@@ -96,6 +96,6 @@ And, conversely, the framework also provides `CssClassUiEvent.Noop`; if `cssClas
 == Raising events programmatically
 
 Normally events are only raised for interactions through the UI.
-However, events can be raised programmatically either by calling the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] API directly.
+However, events can be raised programmatically either by calling the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] API directly.
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/iconUiEvent.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/iconUiEvent.adoc
index 0f28727..1f9d7b6 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/iconUiEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/iconUiEvent.adoc
@@ -9,7 +9,7 @@ Whenever a domain object is to be rendered, the framework fires off an icon UI e
 This is as an alternative to implementing xref:refguide:applib-methods:reserved.adoc#iconName[`iconName()`] reserved method.
 (If `iconName()` is present, then it will take precedence).
 
-Subscribers subscribe through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] and can use obtain a reference to the domain object from the event.
+Subscribers subscribe through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] and can use obtain a reference to the domain object from the event.
 From this they can, if they wish, specify an icon name for the domain object using the event's API.
 
 By default the event raised is `IconUiEvent.Default`.
@@ -44,7 +44,7 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
@@ -96,6 +96,6 @@ And, conversely, the framework also provides `IconUiEvent.Noop`; if `iconUiEvent
 == Raising events programmatically
 
 Normally events are only raised for interactions through the UI.
-However, events can be raised programmatically by calling the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] API directly.
+However, events can be raised programmatically by calling the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] API directly.
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/layoutUiEvent.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/layoutUiEvent.adoc
index 3a95fc3..5ebbc38 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/layoutUiEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/layoutUiEvent.adoc
@@ -9,7 +9,7 @@ Whenever a domain object is to be rendered, the framework fires off an layout UI
 This is as an alternative to implementing xref:refguide:applib-methods:reserved.adoc#layout[`layout()`] reserved method.
 (If `layout()` is present, then it will take precedence).
 
-Subscribers subscribe through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] and can use obtain a reference to the domain object from the event.
+Subscribers subscribe through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] and can use obtain a reference to the domain object from the event.
 From this they can, if they wish, specify a CSS class for the domain object using the event's API.
 
 By default the event raised is `LayoutUiEvent.Default`.
@@ -46,7 +46,7 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
@@ -98,7 +98,7 @@ And, conversely, the framework also provides `LayoutUiEvent.Noop`; if `layoutUiE
 == Raising events programmatically
 
 Normally events are only raised for interactions through the UI.
-However, events can be raised programmatically by calling the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] API directly.
+However, events can be raised programmatically by calling the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] API directly.
 
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/titleUiEvent.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/titleUiEvent.adoc
index fbfc0df..e065ad6 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/titleUiEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainObjectLayout/titleUiEvent.adoc
@@ -9,7 +9,7 @@ Whenever a domain object is to be rendered, the framework fires off a title UI e
 This is as an alternative to implementing xref:refguide:applib-methods:reserved.adoc#title[`title()`] reserved method, or using the xref:system:generated:index/applib/annotation/Title.adoc[`@Title`] annotation, within the class itself.
 (If either `title()` or `@Title` are present, then they will take precedence).
 
-Subscribers subscribe through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] and can use obtain a reference to the domain object from the event.
+Subscribers subscribe through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] and can use obtain a reference to the domain object from the event.
 From this they can, if they wish, specify a title for the domain object using the event's API.
 
 By default the event raised is `TitleUiEvent.Default`.
@@ -44,7 +44,7 @@ The benefit is that subscribers can be more targeted as to the events that they
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
@@ -96,6 +96,6 @@ And, conversely, the framework also provides `TitleUiEvent.Noop`; if `titleUiEve
 == Raising events programmatically
 
 Normally events are only raised for interactions through the UI.
-However, events can be raised programmatically either by calling the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] API directly, or as a result of calling the xref:refguide:applib-svc:TitleService.adoc[`TitleService`]'s `titleOf(...)` method.
+However, events can be raised programmatically either by calling the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] API directly, or as a result of calling the xref:system:generated:index/applib/services/title/TitleService.adoc[`TitleService`]'s `titleOf(...)` method.
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainService/objectType.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainService/objectType.adoc
index e567e94..59c8574 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainService/objectType.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/DomainService/objectType.adoc
@@ -11,7 +11,7 @@ This value is used internally to generate a string representation of an service
 This can appear in several contexts, including:
 
 * as the value of `Bookmark#getObjectType()` and in the `toString()` value of `Bookmark`
-(see xref:refguide:applib-svc:BookmarkService.adoc[`BookmarkService`])
+(see xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[`BookmarkService`])
 * in the serialization of `OidDto` in the xref:refguide:schema:cmd[command] and xref:refguide:schema:ixn.adoc[interaction] schemas
 * in the URLs of the xref:vro:ROOT:about.adoc[RestfulObjects viewer]
 * in the URLs of the xref:vw:ROOT:about.adoc[Wicket viewer] (specifically, for bookmarked actions)
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/_summary.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/_summary.adoc
index 5fd175e..9118712 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/_summary.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/_summary.adoc
@@ -6,11 +6,11 @@
 //
 //<.> xref:system:generated:index/applib/annotation/Property.adoc#commandPublishing[`commandPublishing()`]
 //+
-//Whether the editing of a property should be published to registered xref:refguide:applib-svc:CommandSubscriber.adoc[`CommandSubscriber`]s as a `Command` object, that captures the details of this edit. Typically so it can be logged using the xref:extensions:command-log:about.adoc[Command Log] extension (for auditing or for regression testing using xref:extensions:command-replay:about.adoc[Command Replay]).
+//Whether the editing of a property should be published to registered xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[`CommandSubscriber`]s as a `Command` object, that captures the details of this edit. Typically so it can be logged using the xref:extensions:command-log:about.adoc[Command Log] extension (for auditing or for regression testing using xref:extensions:command-replay:about.adoc[Command Replay]).
 //
 //<.> xref:system:generated:index/applib/annotation/Property.adoc#domainEvent[`domainEvent()`]
 //+
-//The event type to be posted to the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] to broadcast the property's business rule checking (hide, disable, validate) and its modification (before and after).
+//The event type to be posted to the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`] to broadcast the property's business rule checking (hide, disable, validate) and its modification (before and after).
 //
 //<.> xref:system:generated:index/applib/annotation/Property.adoc#editing[`editing()`]
 //+
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/commandPublishing.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/commandPublishing.adoc
index b0bb711..a352ba5 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/commandPublishing.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/commandPublishing.adoc
@@ -12,7 +12,7 @@ The main uses cases are:
 
 * as a means to allow asynchronous child commands to be executed, using the xref:system:generated:index/applib/services/wrapper/WrapperFactory.adoc[WrapperFactory] service;
 
-* as a means to audit (persist) commands, by implementing the xref:refguide:applib-svc:CommandSubscriber.adoc[CommandSubscriber] SPI.
+* as a means to audit (persist) commands, by implementing the xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber] SPI.
 +
 The xref:extensions:command-log:about.adoc[Command Log] extension _does_ provide such an implementation.
 +
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/domainEvent.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/domainEvent.adoc
index 06c63a7..3036e01 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/domainEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/domainEvent.adoc
@@ -14,7 +14,7 @@ In the cases of the domain object's properties, the events that are fired are:
 * pre-execute phase: before the modification of the property
 * post-execute: after the modification of the property
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`], and can influence each of these phases.
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`], and can influence each of these phases.
 
 By default the event raised is `PropertyDomainEvent.Default`.
 For example:
@@ -67,7 +67,7 @@ This substantially reduces the boilerplate in the subclasses because no explicit
 
 == Subscribers
 
-Subscribers (which must be domain services) subscribe to events posted through the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+Subscribers (which must be domain services) subscribe to events posted through the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 
 Subscribers can be either coarse-grained (if they subscribe to the top-level event type):
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/snapshot.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/snapshot.adoc
index 91ce4c7..7e694af 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/snapshot.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages-no-longer-referenced-since-projdoc-tooling/Property/snapshot.adoc
@@ -6,7 +6,7 @@
 
 CAUTION: this documentation may be inaccurate.
 
-The `snapshot` attribute indicates whether the property should be included/excluded from any snapshots generated by the xref:refguide:applib-svc:XmlSnapshotService.adoc[`XmlSnapshotService`].
+The `snapshot` attribute indicates whether the property should be included/excluded from any snapshots generated by the xref:system:generated:index/applib/services/xmlsnapshot/XmlSnapshotService.adoc[`XmlSnapshotService`].
 
 For example:
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages/Discriminator.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages/Discriminator.adoc
index 9693289..f5068ba 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages/Discriminator.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages/Discriminator.adoc
@@ -23,11 +23,11 @@ This value is used internally to generate a string representation of an objects
 This can appear in several contexts, including:
 
 * as the value of `Bookmark#getObjectType()` and in the `toString()` value of `Bookmark`
-(see xref:refguide:applib-svc:BookmarkService.adoc[`BookmarkService`])
+(see xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[`BookmarkService`])
 * in the serialization of `OidDto` in the xref:refguide:schema:cmd[command] and xref:refguide:schema:ixn.adoc[interaction] schemas
 * in the URLs of the xref:vro:ROOT:about.adoc[RestfulObjects viewer]
 * in the URLs of the xref:vw:ROOT:about.adoc[Wicket viewer]
-* in XML snapshots generated by the xref:refguide:applib-svc:XmlSnapshotService.adoc[`XmlSnapshotService`]
+* in XML snapshots generated by the xref:system:generated:index/applib/services/xmlsnapshot/XmlSnapshotService.adoc[`XmlSnapshotService`]
 
 == Examples
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages/PersistenceCapable.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages/PersistenceCapable.adoc
index 220c861..01e408b 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages/PersistenceCapable.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages/PersistenceCapable.adoc
@@ -22,11 +22,11 @@ This value is used internally to generate a string representation of an objects
 This can appear in several contexts, including:
 
 * as the value of `Bookmark#getObjectType()` and in the `toString()` value of `Bookmark`
-(see xref:refguide:applib-svc:BookmarkService.adoc[`BookmarkService`])
+(see xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[`BookmarkService`])
 * in the serialization of `OidDto` in the xref:refguide:schema:cmd[command] and xref:refguide:schema:ixn.adoc[interaction] schemas
 * in the URLs of the xref:vro:ROOT:about.adoc[RestfulObjects viewer]
 * in the URLs of the xref:vw:ROOT:about.adoc[Wicket viewer]
-* in XML snapshots generated by the xref:refguide:applib-svc:XmlSnapshotService.adoc[`XmlSnapshotService`]
+* in XML snapshots generated by the xref:system:generated:index/applib/services/xmlsnapshot/XmlSnapshotService.adoc[`XmlSnapshotService`]
 
 
 The actual format of the object type used by Apache Isis for the concatenation of `schema()` and `@PersistenceCapable#table()`.
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages/XmlJavaTypeAdapter.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages/XmlJavaTypeAdapter.adoc
index 1a9ff97..eeb1928 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages/XmlJavaTypeAdapter.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages/XmlJavaTypeAdapter.adoc
@@ -8,7 +8,7 @@ The JAXB `@XmlJavaTypeAdapter` annotation is used with the framework-provided
 `PersistentEntityAdapter` to instruct JAXB to serialize references to persistent entities using the canonical
 `OidDto` complex type: the object's type and its identifier.
 This is the formal XML equivalent to the `Bookmark`
-provided by the xref:refguide:applib-svc:BookmarkService.adoc[`BookmarkService`].
+provided by the xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[`BookmarkService`].
 
 For example:
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages/XmlRootElement.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages/XmlRootElement.adoc
index 32addea..5508283 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages/XmlRootElement.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages/XmlRootElement.adoc
@@ -16,7 +16,7 @@ xref:refguide:applib-ant:ViewModel.adoc[`@DomainObject(nature=VIEW_MODEL)`] anno
 using `@XmlRootElement` has a couple of significant advantages:
 
 * the view model can be used as a "canonical" DTO, for example when accessing data using the xref:vro:ROOT:about.adoc[RestfulObjects viewer] in combination with the
-xref:refguide:applib-svc:ContentMappingService.adoc[`ContentMappingService`].
+xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[`ContentMappingService`].
 +
 This provides a stable and versioned API to access data in XML format using whatever client-side technology may be appropriate.
 
@@ -31,7 +31,7 @@ This adapter converts any references to such domain entities using the `oidDto`
 [TIP]
 ====
 The memento string for view models is converted into a form compatible with use within a URL.
-This is performed by the xref:refguide:applib-svc:UrlEncodingService.adoc[`UrlEncodingService`], the default implementation of which simply encodes to base 64. If the view model XML graph is too large to be serialized to a string, then an alternative implementation (eg which maps XML strings to a GUID, say) can be configured using the technique described in xref:userguide:btb:about.adoc#replacing-default-service-implementations[here] in the user guide.
+This is performed by the xref:system:generated:index/applib/services/urlencoding/UrlEncodingService.adoc[`UrlEncodingService`], the default implementation of which simply encodes to base 64. If the view model XML graph is too large to be serialized to a string, then an alternative implementation (eg which maps XML strings to a GUID, say) can be configured using the technique described in xref:userguide:btb:about.adoc#replacing-default-service-implementations[here] in the user guide.
 ====
 
 == Example
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages/about/jee.adoc b/api/applib/src/main/adoc/modules/applib-ant/pages/about/jee.adoc
index 60afe72..ecc79cf 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages/about/jee.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages/about/jee.adoc
@@ -49,7 +49,7 @@ The table below lists the JEE annotations currently recognized.  Expect to see m
 |xref:refguide:applib-ant:XmlJavaTypeAdapter.adoc[`javax.xml.bind` +
 `.annotation` +
 `XmlJavaTypeAdapter`]
-|JAXB annotation defining how to serialize an entity.  Used in conjunction with the (framework provided) `PersistentEntityAdapter` class to serialize persistent entities into a canonical OID (equivalent to the `Bookmark` provided by the xref:refguide:applib-svc:BookmarkService.adoc[`BookmarkService`]).
+|JAXB annotation defining how to serialize an entity.  Used in conjunction with the (framework provided) `PersistentEntityAdapter` class to serialize persistent entities into a canonical OID (equivalent to the `Bookmark` provided by the xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[`BookmarkService`]).
 |Domain
 |
 
diff --git a/api/applib/src/main/adoc/modules/applib-classes/pages/events/domainevent.adoc b/api/applib/src/main/adoc/modules/applib-classes/pages/events/domainevent.adoc
index 639856c..2504d6d 100644
--- a/api/applib/src/main/adoc/modules/applib-classes/pages/events/domainevent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-classes/pages/events/domainevent.adoc
@@ -6,7 +6,7 @@
 
 This section catalogues the various domain event classes defined by Apache Isis.
 
-These events are broadcast on the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].
+These events are broadcast on the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].
 The domain events are broadcast as a result of being specified in the xref:system:generated:index/applib/annotation/Action.adoc#domainEvent[`@Action#domainEvent()`],  xref:system:generated:index/applib/annotation/Property.adoc#domainEvent[`@Property#domainEvent()`] or xref:system:generated:index/applib/annotation/Collection.adoc#domainEvent[`@Collection#domainEvent()`] attributes.
 
 They are listed in the table below.
diff --git a/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent.adoc b/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent.adoc
index b491c43..f2bd037 100644
--- a/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent.adoc
@@ -45,7 +45,7 @@ The lifecycle event classes are listed in the table below:
 `ObjectPersistedEvent`]
 |(abstract class). +
 `ObjectPersistedEvent.Default` is the concrete implementation that is used.
-|Broadcast when an object is first saved (inserted) into the database using the xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`]'s
+|Broadcast when an object is first saved (inserted) into the database using the xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`]'s
 `#persist(...)` method.
 
 
@@ -53,7 +53,7 @@ The lifecycle event classes are listed in the table below:
 `ObjectPersistingEvent`]
 |(abstract class). +
 `ObjectPersistingEvent.Default` is the concrete implementation that is used.
-|Broadcast when an object is about to be saved (inserted) into the database using the xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`]'s
+|Broadcast when an object is about to be saved (inserted) into the database using the xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`]'s
 `#persist(...)` method.
 
 
@@ -61,7 +61,7 @@ The lifecycle event classes are listed in the table below:
 `ObjectRemovingEvent`]
 |(abstract class). +
 `ObjectRemovingEvent.Default` is the concrete implementation that is used.
-|Broadcast when an object is about to be deleted from the database using the xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`]'s
+|Broadcast when an object is about to be deleted from the database using the xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`]'s
 `#remove(...)` method.
 
 
@@ -70,7 +70,7 @@ The lifecycle event classes are listed in the table below:
 |(abstract class). +
 `ObjectUpdatedEvent.Default` is the concrete implementation that is used.
 |Broadcast when an object has just been updated in the database.
-This is done either explicitly when the current transaction is flushed using the xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`]'s `#flush(...)` method, else is done implicitly when the transaction commits at the end of the user request.
+This is done either explicitly when the current transaction is flushed using the xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`]'s `#flush(...)` method, else is done implicitly when the transaction commits at the end of the user request.
 
 
 |xref:applib-classes:events.adoc#ObjectUpdatingEvent[`o.a.i.applib.` +
@@ -81,7 +81,7 @@ This is done either explicitly when the current transaction is flushed using the
 |(abstract class). +
 `ObjectUpdatingEvent.Default` is the concrete implementation that is used.
 |Broadcast when an object is about to be updated in the database.
-This is done either explicitly when the current transaction is flushed using the xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`]'s `#flush(...)` method, else is done implicitly when the transaction commits at the end of the user request.
+This is done either explicitly when the current transaction is flushed using the xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`]'s `#flush(...)` method, else is done implicitly when the transaction commits at the end of the user request.
 
 
 |===
diff --git a/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectPersistedEvent.adoc b/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectPersistedEvent.adoc
index ef0c0c8..4cee6d1 100644
--- a/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectPersistedEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectPersistedEvent.adoc
@@ -5,7 +5,7 @@
 :page-partial:
 
 
-Subclass of xref:applib-classes:events.adoc#AbstractLifecycleEvent[`AbstractLifecycleEvent`], broadcast when an object is first saved (inserted) into the database using the xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`]'s `#persist(...)` method.
+Subclass of xref:applib-classes:events.adoc#AbstractLifecycleEvent[`AbstractLifecycleEvent`], broadcast when an object is first saved (inserted) into the database using the xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`]'s `#persist(...)` method.
 
 
 `ObjectPersistedEvent.Default` is the implementation that is used by default, but this can be overridden using xref:system:generated:index/applib/annotation/DomainObject.adoc#persistedLifecycleEvent[`@DomainObject#persistedLifecycleEvent`].
diff --git a/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectPersistingEvent.adoc b/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectPersistingEvent.adoc
index bc0a143..e3c1ee9 100644
--- a/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectPersistingEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectPersistingEvent.adoc
@@ -5,7 +5,7 @@
 :page-partial:
 
 
-Subclass of xref:applib-classes:events.adoc#AbstractLifecycleEvent[`AbstractLifecycleEvent`], broadcast when an object is about to be saved (inserted) into the database using the xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`]'s `#persist(...)` method.
+Subclass of xref:applib-classes:events.adoc#AbstractLifecycleEvent[`AbstractLifecycleEvent`], broadcast when an object is about to be saved (inserted) into the database using the xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`]'s `#persist(...)` method.
 
 
 `ObjectPersistingEvent.Default` is the implementation that is used by default, but this can be overridden using xref:system:generated:index/applib/annotation/DomainObject.adoc#persistingLifecycleEvent[`@DomainObject#persistingLifecycleEvent`].
diff --git a/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectRemovingEvent.adoc b/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectRemovingEvent.adoc
index 42204c6..b511f5c 100644
--- a/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectRemovingEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectRemovingEvent.adoc
@@ -5,7 +5,7 @@
 :page-partial:
 
 
-Subclass of xref:applib-classes:events.adoc#AbstractLifecycleEvent[`AbstractLifecycleEvent`], broadcast when an object is about to be deleted from the database using the xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`]'s `#remove(...)` method.
+Subclass of xref:applib-classes:events.adoc#AbstractLifecycleEvent[`AbstractLifecycleEvent`], broadcast when an object is about to be deleted from the database using the xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`]'s `#remove(...)` method.
 
 
 `ObjectRemovingEvent.Default` is the implementation that is used by default, but this can be overridden using xref:system:generated:index/applib/annotation/DomainObject.adoc#removingLifecycleEvent[`@DomainObject#removingLifecycleEvent`].
diff --git a/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectUpdatedEvent.adoc b/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectUpdatedEvent.adoc
index 33ef831..288fcb9 100644
--- a/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectUpdatedEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectUpdatedEvent.adoc
@@ -7,7 +7,7 @@
 
 
 Subclass of xref:applib-classes:events.adoc#AbstractLifecycleEvent[`AbstractLifecycleEvent`], broadcast when an object has just been updated in the database.
-This is done either explicitly when the current transaction is flushed using the xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`]'s `#flush(...)` method, else is done implicitly when the transaction commits at the end of the user request.
+This is done either explicitly when the current transaction is flushed using the xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`]'s `#flush(...)` method, else is done implicitly when the transaction commits at the end of the user request.
 
 `ObjectUpdatedEvent.Default` is the implementation that is used by default, but this can be overridden using xref:system:generated:index/applib/annotation/DomainObject.adoc#updatedLifecycleEvent[`@DomainObject#updatedLifecycleEvent`].
 
diff --git a/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectUpdatingEvent.adoc b/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectUpdatingEvent.adoc
index d5f0e66..04bd829 100644
--- a/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectUpdatingEvent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-classes/pages/events/lifecycleevent/ObjectUpdatingEvent.adoc
@@ -7,7 +7,7 @@
 
 
 Subclass of xref:applib-classes:events.adoc#AbstractLifecycleEvent[`AbstractLifecycleEvent`], broadcast when an object is about to be updated in the database.
-This is done either explicitly when the current transaction is flushed using the xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`]'s `#flush(...)` method, else is done implicitly when the transaction commits at the end of the user request.
+This is done either explicitly when the current transaction is flushed using the xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`]'s `#flush(...)` method, else is done implicitly when the transaction commits at the end of the user request.
 
 
 `ObjectUpdatingEvent.Default` is the implementation that is used by default, but this can be overridden using xref:system:generated:index/applib/annotation/DomainObject.adoc#updatingLifecycleEvent[`@DomainObject#updatingLifecycleEvent`].
diff --git a/api/applib/src/main/adoc/modules/applib-classes/pages/events/uievent.adoc b/api/applib/src/main/adoc/modules/applib-classes/pages/events/uievent.adoc
index 06267c7..f089046 100644
--- a/api/applib/src/main/adoc/modules/applib-classes/pages/events/uievent.adoc
+++ b/api/applib/src/main/adoc/modules/applib-classes/pages/events/uievent.adoc
@@ -6,7 +6,7 @@
 
 This section catalogues the various UI event classes defined by Apache Isis.
 
-These events are broadcast on the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`].  The domain
+These events are broadcast on the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`].  The domain
 events are broadcast as a result of being specified in the xref:system:generated:index/applib/annotation/DomainObjectLayout.adoc#titleUiEvent[`@DomainObjectLayout#titleUiEvent()`],  xref:system:generated:index/applib/annotation/DomainObjectLayout.adoc#iconUiEvent[`@DomainObjectLayout#iconUiEvent()`] or xref:system:generated:index/applib/annotation/DomainObjectLayout.adoc#cssClassUiEvent[`@DomainObjectLayout#cssClassUiEvent()`] attributes.
 
 They are listed in the table below.
diff --git a/api/applib/src/main/adoc/modules/applib-classes/pages/layout/menubars.adoc b/api/applib/src/main/adoc/modules/applib-classes/pages/layout/menubars.adoc
index cf4f667..9789718 100644
--- a/api/applib/src/main/adoc/modules/applib-classes/pages/layout/menubars.adoc
+++ b/api/applib/src/main/adoc/modules/applib-classes/pages/layout/menubars.adoc
@@ -15,7 +15,7 @@ This is similar to the `ActionLayoutData` component class used for object layout
 Service actions are grouped into menu sections.
 
 All of the classes in this package are JAXB-annotated, meaning that they can be serialized to/from XML (in the `http://isis.apache.org/applib/layout/menubars/bootstrap3` XSD namespace).
-This ability to serialize to/from XML is used by the xref:refguide:applib-svc:MenuBarsLoaderService.adoc[`MenuBarsLoaderService`], the default implementation of which reads the grid layout for a domain class from a `.layout.xml` file on the classpath.
+This ability to serialize to/from XML is used by the xref:system:generated:index/applib/services/menu/MenuBarsLoaderService.adoc[`MenuBarsLoaderService`], the default implementation of which reads the grid layout for a domain class from a `.layout.xml` file on the classpath.
 It also allows the menu bars to be exposed through the REST API provided by the xref:vro:ROOT:about.adoc[Restful Objects viewer], as either XML or JSON.
 
 The service action component also allows a link to be associated with it.
diff --git a/api/applib/src/main/adoc/modules/applib-classes/pages/layout/object-layout.adoc b/api/applib/src/main/adoc/modules/applib-classes/pages/layout/object-layout.adoc
index a34cd13..6befbb0 100644
--- a/api/applib/src/main/adoc/modules/applib-classes/pages/layout/object-layout.adoc
+++ b/api/applib/src/main/adoc/modules/applib-classes/pages/layout/object-layout.adoc
@@ -20,7 +20,7 @@ The component classes, though, are intended to be reusable across all grid syste
 The component classes, meanwhile, are broadly equivalent to the "layout" annotations (xref:system:generated:index/applib/annotation/PropertyLayout.adoc[`@PropertyLayout`], xref:system:generated:index/applib/annotation/CollectionLayout.adoc[`@CollectionLayout`], xref:system:generated:index/applib/annotation/ActionLayout.adoc[`@ActionLayout`] and xref:system:generated:index/applib/annotation/DomainObjectLayout.adoc[`@DomainObjectLayout`]
 
 All of the classes in this package are JAXB-annotated, meaning that they can be serialized to/from XML (the `component` classes in the `http://isis.apache.org/applib/layout/component` XSD namespace, the bootstrap 3 grid classes in the `http://isis.apache.org/applib/layout/grid/bootstrap3` XSD namespace).
-This ability to serialize to/from XML is used by the xref:refguide:applib-svc:GridLoaderService.adoc[`GridLoaderService`], the default implementation of which reads the grid layout for a domain class from a `.layout.xml` file on the classpath.
+This ability to serialize to/from XML is used by the xref:system:generated:index/applib/services/grid/GridLoaderService.adoc[`GridLoaderService`], the default implementation of which reads the grid layout for a domain class from a `.layout.xml` file on the classpath.
 It also allows the grid to be exposed through the REST API provided by the xref:vro:ROOT:about.adoc[Restful Objects viewer], as either XML or JSON.
 
 The various components (properties, collections, actions and domain object) also allow a link to be associated with each.
diff --git a/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/mixins/Dto.adoc b/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/mixins/Dto.adoc
index 6b04c77..603c3be 100644
--- a/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/mixins/Dto.adoc
+++ b/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/mixins/Dto.adoc
@@ -63,4 +63,4 @@ The `IsisSchemas` parameter to the action can be used to optionally ignore the c
 
 == Related Services
 
-The `Dto_downloadXml` and `Dto_downloadXsd` delegate to the xref:refguide:applib-svc:JaxbService.adoc[`JaxbService`] to actually generate the XML/XSD.
+The `Dto_downloadXml` and `Dto_downloadXsd` delegate to the xref:system:generated:index/applib/services/jaxb/JaxbService.adoc[`JaxbService`] to actually generate the XML/XSD.
diff --git a/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/mixins/Object.adoc b/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/mixins/Object.adoc
index 59d35d3..708b91e 100644
--- a/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/mixins/Object.adoc
+++ b/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/mixins/Object.adoc
@@ -35,7 +35,7 @@ public void clearHints() {
 
 === Related Services
 
-This mixin uses the xref:refguide:applib-svc:HintStore.adoc[`HintStore`] service to store and retrieve UI hints for each rendered object, per user.
+This mixin uses the xref:system:generated:index/applib/services/hint/HintStore.adoc[`HintStore`] service to store and retrieve UI hints for each rendered object, per user.
 
 
 
@@ -60,12 +60,12 @@ public Object downloadLayoutXml(
 <1> either current, complete, normalized or minimal.
 
 See the documentation on xref:userguide:fun:ui.adoc#object-layout[layout XML] and also
-the xref:refguide:applib-svc:LayoutService.adoc[`LayoutService`] for more information on these styles
+the xref:system:generated:index/applib/services/layout/LayoutService.adoc[`LayoutService`] for more information on these styles
 
 
 === Related Services
 
-This mixin calls xref:refguide:applib-svc:LayoutService.adoc[`LayoutService`] to obtain the layout XML.
+This mixin calls xref:system:generated:index/applib/services/layout/LayoutService.adoc[`LayoutService`] to obtain the layout XML.
 
 
 
@@ -88,7 +88,7 @@ public void rebuildMetamodel() {
 
 === Related Services
 
-This mixin calls xref:refguide:applib-svc:MetamodelService.adoc[`MetaModelService`] and the xref:refguide:applib-svc:GridService.adoc[`GridService`] to invalidate their caches.
+This mixin calls xref:system:generated:index/applib/services/metamodel/MetaModelService.adoc[`MetaModelService`] and the xref:system:generated:index/applib/services/grid/GridService.adoc[`GridService`] to invalidate their caches.
 
 
 
@@ -109,7 +109,7 @@ public URL openRestApi() { /* ... */ }
 
 === Related Services
 
-This mixin calls xref:refguide:applib-svc:BookmarkService.adoc[`BookmarkService`] to build the URL.
+This mixin calls xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[`BookmarkService`] to build the URL.
 
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/roles/HoldsUpdatedAt.adoc b/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/roles/HoldsUpdatedAt.adoc
index abe0a28..1e8a605 100644
--- a/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/roles/HoldsUpdatedAt.adoc
+++ b/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/roles/HoldsUpdatedAt.adoc
@@ -18,7 +18,7 @@ public interface HoldsUpdatedAt {
 }
 ----
 
-The current time is obtained from the xref:refguide:applib-svc:ClockService.adoc[`ClockService`].
+The current time is obtained from the xref:system:generated:index/applib/services/clock/ClockService.adoc[`ClockService`].
 
 Entities that implement this interface often also implement xref:applib-classes:about.adoc#HoldsUpdatedBy[`HoldsUpdatedBy`] role interface; as a convenience the xref:applib-classes:about.adoc#Timestampable[`Timestampable`] interface combines the two roles.
 
diff --git a/api/applib/src/main/adoc/modules/applib-methods/pages/lifecycle.adoc b/api/applib/src/main/adoc/modules/applib-methods/pages/lifecycle.adoc
index 3f5ee2a..882555f 100644
--- a/api/applib/src/main/adoc/modules/applib-methods/pages/lifecycle.adoc
+++ b/api/applib/src/main/adoc/modules/applib-methods/pages/lifecycle.adoc
@@ -20,7 +20,7 @@ The lifecycle callback methods supported by Apache Isis are:
 equivalent
 
 |created()
-|called when an object has just been created using xref:system:generated:index/applib/services/factory/FactoryService.adoc[`FactoryService#create(..)`] or xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService#detachedEntity(...)`]
+|called when an object has just been created using xref:system:generated:index/applib/services/factory/FactoryService.adoc[`FactoryService#create(..)`] or xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService#detachedEntity(...)`]
 |xref:applib-classes:events.adoc#ObjectCreatedEvent[ObjectCreatedEvent]
 
 |loaded()
diff --git a/api/applib/src/main/adoc/modules/applib-methods/pages/prefixes/default.adoc b/api/applib/src/main/adoc/modules/applib-methods/pages/prefixes/default.adoc
index f8a49be..7d7406b 100644
--- a/api/applib/src/main/adoc/modules/applib-methods/pages/prefixes/default.adoc
+++ b/api/applib/src/main/adoc/modules/applib-methods/pages/prefixes/default.adoc
@@ -8,7 +8,7 @@
 The `default...()` supporting method is called for action parameters to return the initial argument value.
 This may be some sensible default (eg today's date, or 0 or 1), or -- for an action that is modifying the state of an object -- might default to the current value of a corresponding property.
 
-The method is _also_ called for properties in the case when an object is newly instantiated using xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService#detachedEntity(...)`] or xref:system:generated:index/applib/services/factory/FactoryService.adoc[`FactoryService#create(...)`].
+The method is _also_ called for properties in the case when an object is newly instantiated using xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService#detachedEntity(...)`] or xref:system:generated:index/applib/services/factory/FactoryService.adoc[`FactoryService#create(...)`].
 This is a much less common use case.
 If a default is not specified then properties are initialized to a default based on their type (eg 0 or `false`).
 
@@ -153,7 +153,7 @@ public class ShoppingCartItem {
 
 There are, in fact, two other ways to set properties of a newly instantiated object to default values.
 
-The first is to use the xref:refguide:applib-methods:lifecycle.adoc#created[`created()`] callback, called by the framework when xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService#detachedEntity(...)`] or xref:system:generated:index/applib/services/factory/FactoryService.adoc[`FactoryService#create(...)`] is called.
+The first is to use the xref:refguide:applib-methods:lifecycle.adoc#created[`created()`] callback, called by the framework when xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService#detachedEntity(...)`] or xref:system:generated:index/applib/services/factory/FactoryService.adoc[`FactoryService#create(...)`] is called.
 This method is called after any services have been injected into the domain object.
 
 The second is more straightforward: simply initialize properties in the constructor.
diff --git a/api/applib/src/main/adoc/modules/applib-methods/pages/reserved/deprecated/getId.adoc b/api/applib/src/main/adoc/modules/applib-methods/pages/reserved/deprecated/getId.adoc
index 8bef8c5..91d7e64 100644
--- a/api/applib/src/main/adoc/modules/applib-methods/pages/reserved/deprecated/getId.adoc
+++ b/api/applib/src/main/adoc/modules/applib-methods/pages/reserved/deprecated/getId.adoc
@@ -10,7 +10,7 @@ This value is used internally to generate a string representation of an service
 This can appear in several contexts, including:
 
 * as the value of `Bookmark#getObjectType()` and in the `toString()` value of `Bookmark`
- (see xref:refguide:applib-svc:BookmarkService.adoc[`BookmarkService`])
+ (see xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[`BookmarkService`])
 * in the serialization of `OidDto` in the xref:refguide:schema:cmd[command] and xref:refguide:schema:ixn.adoc[interaction] schemas
 * in the URLs of the xref:vro:ROOT:about.adoc[RestfulObjects viewer]
 * in the URLs of the xref:vw:ROOT:about.adoc[Wicket viewer] (specifically, for bookmarked actions)
diff --git a/api/applib/src/main/adoc/modules/applib-svc/pages/ServiceRegistry.adoc b/api/applib/src/main/adoc/modules/applib-svc/pages/ServiceRegistry.adoc
index abd371e..689d8ef 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/pages/ServiceRegistry.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/pages/ServiceRegistry.adoc
@@ -14,7 +14,7 @@ include::ServiceRegistry/hooks/examples_and_usage.adoc[]
 
 == Related Services
 
-* xref:refguide:applib-svc:ServiceInjector.adoc[ServiceInjector]
+* xref:system:generated:index/applib/services/inject/ServiceInjector.adoc[ServiceInjector]
 +
 to inject domain services rather than just look them up.
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/pages/about.adoc b/api/applib/src/main/adoc/modules/applib-svc/pages/about.adoc
index 1bcc45e..c6d966c 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/pages/about.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/pages/about.adoc
@@ -16,17 +16,17 @@ image::reference-services/categories.png[width="600px"]
 What distinguishes API from SPI is primarily whether it is called by the domain application itself, or is called by the framework:
 
 * All of the API domain services provide a default implementation, and so can always be called by domain objects.
-* Most of the SPI domain services also have a default implementation, although in many cases this is a fallback implementation (such as ``AuditerServiceLogging`` for the xref:refguide:applib-svc:EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber]).
+* Most of the SPI domain services also have a default implementation, although in many cases this is a fallback implementation (such as ``AuditerServiceLogging`` for the xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber]).
 
 In one sense all API domain services are also SPI, in that they can be overridden by the domain programmer providing another domain service implementing the same type.
-For example, the framework-provided implementation of xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`] could be overridden this way, perhaps for more monitoring or caching purposes.
+For example, the framework-provided implementation of xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`] could be overridden this way, perhaps for more monitoring or caching purposes.
 This is most easily done using the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation.
 Generally speaking in such cases higher precedence implementation will be used instead of the framework-provided implementation.
 For a small number of services, though, _all_ available implementations are delegated to.
-One example is the (aforementioned) xref:refguide:applib-svc:EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] - all configured implementations will be delegated to.
+One example is the (aforementioned) xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] - all configured implementations will be delegated to.
 
-A small number of domain services can be considered both API and SPI; a good example is the xref:refguide:applib-svc:EmailService.adoc[`EmailService`] that is of direct use for domain objects wishing to send out emails, but is also used by the framework to support the xref:vw:ROOT:features.adoc#user-registration[user registration] functionality supported by the xref:vw:ROOT:about.adoc[Wicket viewer].
-The same is true of the xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`]; this can be used by domain objects to broadcast arbitrary events, but is also used by the framework to automatically emit events for
+A small number of domain services can be considered both API and SPI; a good example is the xref:system:generated:index/applib/services/email/EmailService.adoc[`EmailService`] that is of direct use for domain objects wishing to send out emails, but is also used by the framework to support the xref:vw:ROOT:features.adoc#user-registration[user registration] functionality supported by the xref:vw:ROOT:about.adoc[Wicket viewer].
+The same is true of the xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[`EventBusService`]; this can be used by domain objects to broadcast arbitrary events, but is also used by the framework to automatically emit events for
 xref:system:generated:index/applib/annotation/Action.adoc#domainEvent[`@Action#domainEvent()`] etc.
 For these hybrid services we have categorized the service as an API service.
 
@@ -87,9 +87,9 @@ public class Customer {
 
 For objects that are already persisted, the service is automatically injected just after the object is rehydrated by JDO/DataNucleus.
 
-For transient objects (instantiated programmatically), the xref:system:generated:index/applib/services/factory/FactoryService.adoc[`FactoryService#viewModel(...)`] or the xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService#detachedEntity(...)`]'s will automatically inject the services.
+For transient objects (instantiated programmatically), the xref:system:generated:index/applib/services/factory/FactoryService.adoc[`FactoryService#viewModel(...)`] or the xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService#detachedEntity(...)`]'s will automatically inject the services.
 
-Alternatively the object can be instantiated simply using `new`, then services injected using xref:refguide:applib-svc:ServiceInjector.adoc[`ServiceInjector`]'s ``injectServicesInto(...)`` method.
+Alternatively the object can be instantiated simply using `new`, then services injected using xref:system:generated:index/applib/services/inject/ServiceInjector.adoc[`ServiceInjector`]'s ``injectServicesInto(...)`` method.
 
 [#overriding-the-services]
 == Overriding the services
@@ -110,11 +110,11 @@ Spring offers a number of other mechanisms to specify the ordering; these can al
 For some domain services, all framework will delegate to all available implementation, using a chain-of-responsibility pattern):
 These include:
 
-xref:refguide:applib-svc:ContentMappingService.adoc[`ContentMappingService`],
-xref:refguide:applib-svc:GridSystemService.adoc[`GridSystemService`], and
-xref:refguide:applib-svc:RoutingService.adoc[`RoutingService`].
+xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[`ContentMappingService`],
+xref:system:generated:index/applib/services/grid/GridSystemService.adoc[`GridSystemService`], and
+xref:system:generated:index/applib/services/routing/RoutingService.adoc[`RoutingService`].
 
-For example, suppose you wanted to provide your own implementation of xref:refguide:applib-svc:LocaleProvider.adoc[`LocaleProvider`].
+For example, suppose you wanted to provide your own implementation of xref:system:generated:index/applib/services/i18n/LocaleProvider.adoc[`LocaleProvider`].
 The default implementation has these annotations:
 
 [source,java]
@@ -163,7 +163,7 @@ Whether this occurs depends on whether the action/property has been annotated (u
 (Note that subscribers will also receive events for vetoing the action/property; this is not shown on the diagram).
 
 * As each execution progresses, and objects that are modified are "enlisted" into the (internal) xref:core:runtime-services:ChangedObjectsService.adoc[`ChangedObjectsServiceInternal`] domain service.
-Metrics as to which objects are merely loaded into memory are also captured using the xref:refguide:applib-svc:MetricsService.adoc[`MetricsService`] (not shown on the diagram).
+Metrics as to which objects are merely loaded into memory are also captured using the xref:system:generated:index/applib/services/metrics/MetricsService.adoc[`MetricsService`] (not shown on the diagram).
 
 * At the end of each execution, details of that execution are published through the (internal)
 xref:core:runtime-services:ExecutionPublisher.adoc[`ExecutionPublisher`] domain service.
@@ -177,16 +177,16 @@ Only domain objects specified to be published with xref:system:generated:index/a
 +
 [NOTE]
 ====
-Note that it's possible for there to be more than one transaction per top-level interaction, by virtue of the xref:refguide:applib-svc:TransactionService.adoc[`TransactionService`].
+Note that it's possible for there to be more than one transaction per top-level interaction, by virtue of the xref:system:generated:index/applib/services/xactn/TransactionService.adoc[`TransactionService`].
 ====
 
-* At the end of the entire interaction footnote:[although rare, there can be multiple transactions in a single interaction], details of the top-level `Command` are sent to each xref:refguide:applib-svc:CommandSubscriber.adoc[CommandSubscriber].
+* At the end of the entire interaction footnote:[although rare, there can be multiple transactions in a single interaction], details of the top-level `Command` are sent to each xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber].
 This captures whether the command succeeded or failed.
 +
 The xref:extensions:command-log:about.adoc[Command Log] extension uses this to persist a log of commands, for auditing or to support regression testing with the xref:extensions:command-replay:about.adoc[Command Replay] extension.
 
 
-Implementations of xref:refguide:applib-svc:CommandServiceInternal.adoc[`CommandService`] can use the `Command#getMemento()` method to obtain a XML equivalent of that `Command`, reified using the xref:refguide:schema:cmd.adoc[`cmd.xsd`] schema.
+Implementations of xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber] can use the `Command#getMemento()` method to obtain a XML equivalent of that `Command`, reified using the xref:refguide:schema:cmd.adoc[`cmd.xsd`] schema.
 This can be converted back into a `CommandDto` using the `CommandDtoUtils` utility class (part of the applib).
 
 Similarly, implementations of xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber] can use the `InteractionDtoUtils` utility class to obtain a `InteractionDto` representing the interaction, either just for a single execution or for the entire call-graph.
diff --git a/api/applib/src/main/adoc/modules/applib-svc/partials/_application-layer-api.adoc b/api/applib/src/main/adoc/modules/applib-svc/partials/_application-layer-api.adoc
index 2fd019f..6b8c345 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/partials/_application-layer-api.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/partials/_application-layer-api.adoc
@@ -19,7 +19,7 @@ Domain service APIs for the application layer allow the domain objects to contro
 //NOTE: TODO: v2: this has been replaced by `WrapperFactory#async(...)`
 
 
-|xref:refguide:applib-svc:CommandExecutorService.adoc[CommandExecutorService]
+|xref:system:generated:index/applib/services/command/CommandExecutorService.adoc[CommandExecutorService]
 |Executes the specified `Command`.
 
 
@@ -29,21 +29,21 @@ Domain service APIs for the application layer allow the domain objects to contro
 
 
 
-|xref:refguide:applib-svc:MessageService.adoc[MessageService]
+|xref:system:generated:index/applib/services/message/MessageService.adoc[MessageService]
 |Methods to inform or warn the user, or to raise errors.
 
 
-|xref:refguide:applib-svc:SudoService.adoc[SudoService]
+|xref:system:generated:index/applib/services/sudo/SudoService.adoc[SudoService]
 |Typically for use in testing while running xref:testing:fixtures:services/FixtureScripts.adoc[fixture scripts], allows a block of code to run as a specified user account.
 
 
 
-|xref:refguide:applib-svc:TitleService.adoc[TitleService]
+|xref:system:generated:index/applib/services/title/TitleService.adoc[TitleService]
 |Methods to programmatically obtain the title or icon of a domain object.
 
 
 
-|xref:refguide:applib-svc:TransactionService.adoc[TransactionService]
+|xref:system:generated:index/applib/services/xactn/TransactionService.adoc[TransactionService]
 |Methods for managing transactions.
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/partials/_application-layer-spi.adoc b/api/applib/src/main/adoc/modules/applib-svc/partials/_application-layer-spi.adoc
index 483d3b3..e78ce7c 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/partials/_application-layer-spi.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/partials/_application-layer-spi.adoc
@@ -15,21 +15,21 @@ Domain service SPIs influence how the framework handles application layer concer
 
 //|xref:refguide:applib-svc:BackgroundCommandService.adoc[BackgroundCommandService]
 //|Persisted a memento of an action invocation such that it can be executed asynchronously ("in the background") eg by a scheduler.
-//TODO: v2: probably in core extensions
+//TODO: v2: replaced by WrapperFactory#async
 
 
 
-|xref:refguide:applib-svc:CommandServiceInternal.adoc[CommandService]
-|Service to act as a factory and repository (create and save) of command instances, ie representations of an action invocation.
+|xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber]
+|SPI service to listen on command instances, ie representations of an action invocation or property edit.
 Used for command/auditing and background services.
 
 
 
-|xref:refguide:applib-svc:HealthCheckService.adoc[HealthCheckService]
+|xref:system:generated:index/applib/services/health/HealthCheckService.adoc[HealthCheckService]
 |Performs a health check so that the runtime infrastructure can determine if the application is still healthy (and perform remedial action, such as restarting the app, if not).
 
 
-|xref:refguide:applib-svc:HomePageResolverService.adoc[HomePageResolverService]
+|xref:system:generated:index/applib/services/homepage/HomePageResolverService.adoc[HomePageResolverService]
 |Returns the home page object, if any is defined.
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/partials/_core-domain-api.adoc b/api/applib/src/main/adoc/modules/applib-svc/partials/_core-domain-api.adoc
index 3b6771f..49e1192 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/partials/_core-domain-api.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/partials/_core-domain-api.adoc
@@ -13,15 +13,15 @@ The core/domain APIs provide general-purpose services to the domain objects, for
 |Description
 
 
-|xref:refguide:applib-svc:ClockService.adoc[ClockService]
+|xref:system:generated:index/applib/services/clock/ClockService.adoc[ClockService]
 |Access the current time (and for testing, allow the time to be changed)
 
 
-|xref:refguide:applib-svc:ConfigurationViewService.adoc[ConfigurationViewService] & xref:refguide:applib-svc:ConfigurationMenu.adoc[ConfigurationMenu]
-|Backing service which creates the list of configuration properties for xref:refguide:applib-svc:ConfigurationMenu.adoc[ConfigurationMenu].
+|xref:system:generated:index/applib/services/confview/ConfigurationViewService.adoc[ConfigurationViewService] & xref:system:generated:index/applib/services/confview/ConfigurationMenu.adoc[ConfigurationMenu]
+|Backing service which creates the list of configuration properties for xref:system:generated:index/applib/services/confview/ConfigurationMenu.adoc[ConfigurationMenu].
 
 
-|xref:refguide:applib-svc:EventBusService.adoc[EventBusService]
+|xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[EventBusService]
 |Programmatically post events to the internal event bus.  Also used by Apache Isis itself to broadcast domain, UI and lifecycle events.
 
 
@@ -29,19 +29,19 @@ The core/domain APIs provide general-purpose services to the domain objects, for
 |Methods to instantiate and initialize domain objects
 
 
-|xref:refguide:applib-svc:Scratchpad.adoc[Scratchpad]
+|xref:system:generated:index/applib/services/scratchpad/Scratchpad.adoc[Scratchpad]
 |Request-scoped service for interchanging information between and aggregating over multiple method calls.
 
 
-|xref:refguide:applib-svc:ServiceInjector.adoc[ServiceInjector]
+|xref:system:generated:index/applib/services/inject/ServiceInjector.adoc[ServiceInjector]
 |Programmatically inject services into arbitrary objects.
 
 
-|xref:refguide:applib-svc:ServiceRegistry.adoc[ServiceRegistry]
+|xref:system:generated:index/applib/services/registry/ServiceRegistry.adoc[ServiceRegistry]
 |Registry of all domain services, for service locator pattern.
 
 
-|xref:refguide:applib-svc:UserService.adoc[UserService]
+|xref:system:generated:index/applib/services/user/UserService.adoc[UserService]
 |Methods to access the currently-logged on user.
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/partials/_integration-api.adoc b/api/applib/src/main/adoc/modules/applib-svc/partials/_integration-api.adoc
index ec4a7ef..2fc3428 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/partials/_integration-api.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/partials/_integration-api.adoc
@@ -15,23 +15,23 @@ TIP: see also the xref:mappings:ROOT:about.adoc[Bounded Context Mappings] catalo
 |Description
 
 
-|xref:refguide:applib-svc:BookmarkService.adoc[BookmarkService]
+|xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[BookmarkService]
 |Convert object reference to a serializable "bookmark", and vice versa.
 
 
 
-|xref:refguide:applib-svc:EmailService.adoc[EmailService]
+|xref:system:generated:index/applib/services/email/EmailService.adoc[EmailService]
 |Send a HTML email, optionally with attachments.
 
 
 
-|xref:refguide:applib-svc:JaxbService.adoc[JaxbService]
+|xref:system:generated:index/applib/services/jaxb/JaxbService.adoc[JaxbService]
 |Marshal and unmarshal JAXB-annotated view models to/from XML.
 
 
 
 
-|xref:refguide:applib-svc:XmlSnapshotService.adoc[XmlSnapshotService]
+|xref:system:generated:index/applib/services/xmlsnapshot/XmlSnapshotService.adoc[XmlSnapshotService]
 |Generate an XML representation of an object and optionally a graph of related objects.
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/partials/_integration-spi.adoc b/api/applib/src/main/adoc/modules/applib-svc/partials/_integration-spi.adoc
index ae22e9f..4d4f8e3 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/partials/_integration-spi.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/partials/_integration-spi.adoc
@@ -16,25 +16,25 @@ TIP: see also the xref:mappings:ROOT:about.adoc[Bounded Context Mappings] catalo
 
 
 
-|xref:refguide:applib-svc:CommandDtoProcessorService.adoc.adoc[CommandDtoProcessorService]
+|xref:system:generated:index/applib/services/commanddto/processor/spi/CommandDtoProcessorService.adoc.adoc[CommandDtoProcessorService]
 |SPI to support representation of commands as XML over REST, in particular to support master/slave replay of commands.
 
 
-|xref:refguide:applib-svc:CommandExecutorService.adoc[CommandExecutorService]
+|xref:system:generated:index/applib/services/command/CommandExecutorService.adoc[CommandExecutorService]
 |Service used to execute commands.
 One use case is to replay commands from a primary onto a secondary (see xref:extensions:command-replay:about.adoc[Command Replay] ; another is in support of async commands (using
 xref:system:generated:index/applib/services/wrapper/WrapperFactory.adoc[WrapperFactory] ).
 
 
-|xref:refguide:applib-svc:CommandSubscriber.adoc[CommandSubscriber]
+|xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber]
 |SPI to allow commands to be processed on completion.
 The xref:extensions:command-log:about.adoc[Command Log] extension implements the SPI in order to persists commands for audit or replay.
 
 
-|xref:refguide:applib-svc:EntityChangesSubscriber.adoc[EntityChangesSubscriber]
+|xref:system:generated:index/applib/services/publishing/spi/EntityChangesSubscriber.adoc[EntityChangesSubscriber]
 |Summarises changes made to entities within an interaction.
 
-|xref:refguide:applib-svc:EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber]
+|xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber]
 |Publish the changes to all changed properties of all domain object within an interaction.
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/partials/_metadata-api.adoc b/api/applib/src/main/adoc/modules/applib-svc/partials/_metadata-api.adoc
index 082f161..8b659bf 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/partials/_metadata-api.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/partials/_metadata-api.adoc
@@ -15,30 +15,30 @@ These are generally of use to support development-time activities, for example c
 |Description
 
 
-|xref:refguide:applib-svc:ApplicationFeatureRepository.adoc[ApplicationFeatureRepository]
+|xref:system:generated:index/applib/services/appfeat/ApplicationFeatureRepository.adoc[ApplicationFeatureRepository]
 |Provides access to string representations of the features (package, class, class members) of the domain classes
 within the metamodel.
 
 
 
-|xref:refguide:applib-svc:LayoutService.adoc[LayoutService] &
-xref:refguide:applib-svc:LayoutServiceMenu.adoc[LayoutServiceMenu]
+|xref:system:generated:index/applib/services/layout/LayoutService.adoc[LayoutService] &
+xref:system:generated:index/applib/services/layout/LayoutServiceMenu.adoc[LayoutServiceMenu]
 |Use to obtain the resolved `Xxx.layout.xml` for a class, and the top-level `menubars.layout.xml` files.
 
 
 
 
 
-|xref:refguide:applib-svc:MetamodelService.adoc[MetaModelService] & xref:refguide:applib-svc:MetaModelServiceMenu.adoc[MetaModelServiceMenu]
+|xref:system:generated:index/applib/services/metamodel/MetaModelService.adoc[MetaModelService] & xref:system:generated:index/applib/services/metamodel/MetaModelServiceMenu.adoc[MetaModelServiceMenu]
 |Access to certain information from the Apache Isis metamodel.
 
 
-|xref:refguide:applib-svc:ServiceRegistry.adoc[ServiceRegistry]
+|xref:system:generated:index/applib/services/registry/ServiceRegistry.adoc[ServiceRegistry]
 |Methods to access and use other domain services.
 
 
 
-|xref:refguide:applib-svc:SwaggerService.adoc[SwaggerService]
+|xref:system:generated:index/applib/services/swagger/SwaggerService.adoc[SwaggerService]
 |Exports link:http://swagger.io/[Swagger] spec files, eg to generate link:http://swagger.io/swagger-codegen/[client-side stubs] for use in a custom REST client.
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/partials/_metadata-spi.adoc b/api/applib/src/main/adoc/modules/applib-svc/partials/_metadata-spi.adoc
index 2c4772e..04778cf 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/partials/_metadata-spi.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/partials/_metadata-spi.adoc
@@ -17,32 +17,32 @@ The metadata SPIs allow the framework to obtain metadata from alternative locati
 
 
 
-|xref:refguide:applib-svc:GridLoaderService.adoc[GridLoaderService]
+|xref:system:generated:index/applib/services/grid/GridLoaderService.adoc[GridLoaderService]
 |Responsible for loading a grid layout for a domain class, eg from a `layout.xml` file.
 
 
-|xref:refguide:applib-svc:GridService.adoc[GridService]
-|A facade on top of both xref:refguide:applib-svc:GridLoaderService.adoc[`GridLoaderService`] and
-xref:refguide:applib-svc:GridSystemService.adoc[`GridSystemService`], thus being able to return normalized grids for any domain class.
+|xref:system:generated:index/applib/services/grid/GridService.adoc[GridService]
+|A facade on top of both xref:system:generated:index/applib/services/grid/GridLoaderService.adoc[`GridLoaderService`] and
+xref:system:generated:index/applib/services/grid/GridSystemService.adoc[`GridSystemService`], thus being able to return normalized grids for any domain class.
 
 
 
-|xref:refguide:applib-svc:GridSystemService.adoc[GridSystemService]
+|xref:system:generated:index/applib/services/grid/GridSystemService.adoc[GridSystemService]
 |Validates and normalizes the grid layout for a domain class (with respect to a particular grid system such as Bootstrap3), also providing a default grid (for those domain classes where there is no grid layout).
 
 
 
-|xref:refguide:applib-svc:MenuBarsLoaderService.adoc[MenuBarsLoaderService]
+|xref:system:generated:index/applib/services/menu/MenuBarsLoaderService.adoc[MenuBarsLoaderService]
 |Low-level SPI to load the serialized form of the menubars (normally: the `menubars.layout.xml`) into memory.
 Used by
 
 
-|xref:refguide:applib-svc:MenuBarsService.adoc[MenuBarsService]
+|xref:system:generated:index/applib/services/menu/MenuBarsService.adoc[MenuBarsService]
 |Constructs and normalizes the in-memory representation of the menubars.
 
 
-|xref:refguide:applib-svc:TranslationsResolver.adoc[TranslationsResolver]
-|Obtain translations for a particuar phrase and locale, in support of i18n (ie so that the app's UI, messages and exceptions can be translated to the required locale by the xref:refguide:applib-svc:TranslationService.adoc[`TranslationService`]
+|xref:system:generated:index/applib/services/i18n/TranslationsResolver.adoc[TranslationsResolver]
+|Obtain translations for a particuar phrase and locale, in support of i18n (ie so that the app's UI, messages and exceptions can be translated to the required locale by the xref:system:generated:index/applib/services/i18n/TranslationService.adoc[`TranslationService`]
 
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/partials/_persistence-layer-api.adoc b/api/applib/src/main/adoc/modules/applib-svc/partials/_persistence-layer-api.adoc
index 20db022..315c561 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/partials/_persistence-layer-api.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/partials/_persistence-layer-api.adoc
@@ -15,24 +15,24 @@ The persistence layer APIs provide domain objects with tools to manage the inter
 |Description
 
 
-|xref:refguide:applib-svc:MetricsService.adoc[MetricsService]
+|xref:system:generated:index/applib/services/metrics/MetricsService.adoc[MetricsService]
 |Gathers and provides metrics on the numbers of objects used within a transaction.
 
 
-|xref:refguide:applib-svc:QueryResultsCache.adoc[QueryResultsCache]
+|xref:system:generated:index/applib/services/queryresultscache/QueryResultsCache.adoc[QueryResultsCache]
 |Request-scoped caching of the results of queries (or any data set generated by a given set of input arguments).
 
 
 
-|xref:refguide:applib-svc:RepositoryService.adoc[RepositoryService]
+|xref:system:generated:index/applib/services/repository/RepositoryService.adoc[RepositoryService]
 |Methods to help implement repositories: query for existing objects, persist new or delete existing objects
 
 
-|xref:refguide:applib-svc:TransactionalProcessor/[TransactionalProcessor]
+|xref:system:generated:index/applib/services/xactn/TransactionalProcessor.adoc[TransactionalProcessor]
 |Running commands within a transaction
 
 
-|xref:refguide:applib-svc:TransactionService.adoc[TransactionService]
+|xref:system:generated:index/applib/services/xactn/TransactionService.adoc[TransactionService]
 |Transaction management
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/partials/_persistence-layer-spi.adoc b/api/applib/src/main/adoc/modules/applib-svc/partials/_persistence-layer-spi.adoc
index 05f456a..610ab57 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/partials/_persistence-layer-spi.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/partials/_persistence-layer-spi.adoc
@@ -15,8 +15,8 @@ The persistence layer SPIs are to control persistence and caching of domain obje
 |Description
 
 
-|xref:refguide:applib-svc:QueryResultsCacheControl.adoc[QueryResultsCacheControl]
-|Controls whether the xref:refguide:applib-svc:QueryResultsCache.adoc[QueryResultsCache] is enabled.
+|xref:system:generated:index/applib/services/queryresultscache/QueryResultsCacheControl.adoc[QueryResultsCacheControl]
+|Controls whether the xref:system:generated:index/applib/services/queryresultscache/QueryResultsCache.adoc[QueryResultsCache] is enabled.
 
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/partials/_presentation-layer-api.adoc b/api/applib/src/main/adoc/modules/applib-svc/partials/_presentation-layer-api.adoc
index 8290479..b95b1cd 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/partials/_presentation-layer-api.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/partials/_presentation-layer-api.adoc
@@ -15,14 +15,14 @@ Domain service APIs for the presentation layer allow the domain objects to contr
 |Description
 
 
-|xref:refguide:applib-svc:AcceptHeaderService.adoc[AcceptHeaderService]
+|xref:system:generated:index/applib/services/acceptheader/AcceptHeaderService.adoc[AcceptHeaderService]
 |Request-scoped access to HTTP Accept headers.
 
-|xref:refguide:applib-svc:BookmarkUiService.adoc[BookmarkUiService]
+|xref:system:generated:index/applib/services/bookmarkui/BookmarkUiService.adoc[BookmarkUiService]
 |Manage bookmarks and breadcrumbs.
 
 
-|xref:refguide:applib-svc:DeepLinkService.adoc[DeepLinkService]
+|xref:system:generated:index/applib/services/linking/DeepLinkService.adoc[DeepLinkService]
 |Obtain a URL to a domain object (eg for use within an email or report)
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/partials/_presentation-layer-spi.adoc b/api/applib/src/main/adoc/modules/applib-svc/partials/_presentation-layer-spi.adoc
index 109988b..2e707b8 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/partials/_presentation-layer-spi.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/partials/_presentation-layer-spi.adoc
@@ -15,61 +15,57 @@ The persistence layer SPIs influence how the framework persists domain objects,
 |Description
 
 
-|xref:refguide:applib-svc:ContentMappingService.adoc[ContentMappingService]
+|xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[ContentMappingService]
 |(Attempt to) map the returned data into the representation required by the client's HTTP `Accept` header.
 
 The framework will call all available implementations until a mapping is made (chain of responsibility pattern).
 
 
-|xref:refguide:applib-svc:EmailNotificationService.adoc[EmailNotificationService]
-|Notify a user during xref:refguide:applib-svc:UserRegistrationService.adoc[self-registration] of users.
+|xref:system:generated:index/applib/services/userreg/EmailNotificationService.adoc[EmailNotificationService]
+|Notify a user during xref:system:generated:index/applib/services/userreg/UserRegistrationService.adoc[self-registration] of users.
 
 
-|xref:refguide:applib-svc:ErrorReportingService.adoc[ErrorReportingService]
+|xref:system:generated:index/applib/services/error/ErrorReportingService.adoc[ErrorReportingService]
 |Record details of an error occurring in the system (eg in an external incident recording system such as JIRA), and return a more friendly (jargon-free) message to display to the end user, with optional reference (eg `XXX-1234`).
 
 
-|xref:refguide:applib-svc:ExceptionRecognizer.adoc[ExceptionRecognizerService]
-|Convert certain exceptions (eg foreign or unique key violation in the database) into a format that can be rendered to the end-user.
-
-
-|xref:refguide:applib-svc:ExceptionRecognizerService.adoc[ExceptionRecognizerService]
+|xref:system:generated:index/applib/services/exceprecog/ExceptionRecognizerService.adoc[ExceptionRecognizerService]
 |Convert certain exceptions (eg foreign or unique key violation in the database) into a format that can be rendered to the end-user.
 
 
 
-|xref:refguide:applib-svc:HintStore.adoc[HintIdProvider]
+|xref:system:generated:index/applib/services/hint/HintStore.adoc[HintIdProvider]
 |Provide a "logical" identity for view models such that UI hints can be stored for them.
 
 
-|xref:refguide:applib-svc:HintStore.adoc[HintStore]
+|xref:system:generated:index/applib/services/hint/HintStore.adoc[HintStore]
 |Stores UI hints on a per-object basis.
 For example, the viewer remembers which tabs are selected, and for collections which view is selected (eg table or hidden), which page of a table to render, or whether "show all" (rows) is toggled.
 
 
-|xref:refguide:applib-svc:LocaleProvider.adoc[LocaleProvider]
-|Request-scoped service to return the locale of the current user, in support of i18n (ie so that the app's UI, messages and exceptions can be translated to the required locale by the xref:refguide:applib-svc:TranslationService.adoc[`TranslationService`].
+|xref:system:generated:index/applib/services/i18n/LocaleProvider.adoc[LocaleProvider]
+|Request-scoped service to return the locale of the current user, in support of i18n (ie so that the app's UI, messages and exceptions can be translated to the required locale by the xref:system:generated:index/applib/services/i18n/TranslationService.adoc[`TranslationService`].
 
 
-|xref:refguide:applib-svc:RoutingService.adoc[RoutingService]
+|xref:system:generated:index/applib/services/routing/RoutingService.adoc[RoutingService]
 |Return an alternative object than that returned by an action.
 
 
 
-|xref:refguide:applib-svc:TableColumnOrderService.adoc[TableColumnOrderService]
+|xref:system:generated:index/applib/services/tablecol/TableColumnOrderService.adoc[TableColumnOrderService]
 |Allows the columns of a parented or standalone table to be reordered, based upon the parent object, collection id and type of object in the collection.
 
 
-|xref:refguide:applib-svc:TranslationService.adoc[TranslationService]
-|Translate an app's UI, messages and exceptions for the current user (as per the locale provided by xref:refguide:applib-svc:LocaleProvider.adoc[`LocalProvider`].
+|xref:system:generated:index/applib/services/i18n/TranslationService.adoc[TranslationService]
+|Translate an app's UI, messages and exceptions for the current user (as per the locale provided by xref:system:generated:index/applib/services/i18n/LocaleProvider.adoc[`LocalProvider`].
 
 
-|xref:refguide:applib-svc:UrlEncodingService.adoc[UrlEncodingService]
+|xref:system:generated:index/applib/services/urlencoding/UrlEncodingService.adoc[UrlEncodingService]
 |Converts strings into a form safe for use within a URL.
 Used to convert view models mementos into usable URL form.
 
 
-|xref:refguide:applib-svc:UserProfileService.adoc[UserProfileService]
+|xref:system:generated:index/applib/services/userprof/UserProfileService.adoc[UserProfileService]
 |Obtain an alternative (usually enriched/customized) name for the current user, to render in the UI.
 
 |===
diff --git a/api/applib/src/main/adoc/modules/applib-svc/partials/_security-spi.adoc b/api/applib/src/main/adoc/modules/applib-svc/partials/_security-spi.adoc
index a90f760..d1ec02c 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/partials/_security-spi.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/partials/_security-spi.adoc
@@ -18,18 +18,18 @@ TIP: see also the xref:security:ROOT:about.adoc[Security Guide].
 
 
 
-|xref:refguide:applib-svc:EntityPropertyChangeSubscriber.adoc[EntityPropertyChangesSubscriber]
+|xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangesSubscriber]
 |Create an audit record for every changed property of every changed object within a transaction.
 
 
 
-|xref:refguide:applib-svc:SessionLoggingService.adoc[SessionLoggingService]
+|xref:system:generated:index/applib/services/session/SessionLoggingService.adoc[SessionLoggingService]
 |Records each login and logout by end-users.
 |
 * xref:security:session-log:about.adoc[Session Log +
 (Security Guide)]
 
-|xref:refguide:applib-svc:UserRegistrationService.adoc[UserRegistrationService]
+|xref:system:generated:index/applib/services/userreg/UserRegistrationService.adoc[UserRegistrationService]
 |Create a new user account with the configured security mechanism.
 
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/partials/module-nav.adoc b/api/applib/src/main/adoc/modules/applib-svc/partials/module-nav.adoc
index a3c7a04..300e08f 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/partials/module-nav.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/partials/module-nav.adoc
@@ -3,63 +3,64 @@
 
 * xref:refguide:applib-svc:about.adoc[Domain Services]
 
-** xref:refguide:applib-svc:AcceptHeaderService.adoc[AcceptHeaderService]
-** xref:refguide:applib-svc:ApplicationFeatureRepository.adoc[ApplicationFeatureRepository]
-** xref:refguide:applib-svc:BookmarkService.adoc[BookmarkService]
-** xref:refguide:applib-svc:BookmarkUiService.adoc[BookmarkUiService]
-** xref:refguide:applib-svc:ClockService.adoc[ClockService]
-** xref:refguide:applib-svc:CommandDtoProcessorService.adoc[CommandDtoProcessorService]
-** xref:refguide:applib-svc:CommandExecutorService.adoc[CommandExecutorService]
-** xref:refguide:applib-svc:CommandSubscriber.adoc[CommandSubscriber]
-** xref:refguide:applib-svc:ConfigurationMenu.adoc[ConfigurationMenu]
-** xref:refguide:applib-svc:ConfigurationViewService.adoc[ConfigurationViewService]
-** xref:refguide:applib-svc:ContentMappingService.adoc[ContentMappingService]
-** xref:refguide:applib-svc:DeepLinkService.adoc[DeepLinkService]
-** xref:refguide:applib-svc:EmailNotificationService.adoc[EmailNotificationService]
-** xref:refguide:applib-svc:EmailService.adoc[EmailService]
-** xref:refguide:applib-svc:EntityChangesSubscriber.adoc[EntityChangesSubscriber]
-** xref:refguide:applib-svc:EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber]
-** xref:refguide:applib-svc:ErrorReportingService.adoc[ErrorReportingService]
-** xref:refguide:applib-svc:EventBusService.adoc[EventBusService]
-** xref:refguide:applib-svc:ExceptionRecognizerService.adoc[ExceptionRecognizerService]
+** xref:system:generated:index/applib/services/acceptheader/AcceptHeaderService.adoc[AcceptHeaderService]
+** xref:system:generated:index/applib/services/appfeat/ApplicationFeatureRepository.adoc[ApplicationFeatureRepository]
+** xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[BookmarkService]
+** xref:system:generated:index/applib/services/bookmarkui/BookmarkUiService.adoc[BookmarkUiService]
+** xref:system:generated:index/applib/services/clock/ClockService.adoc[ClockService]
+** xref:system:generated:index/applib/services/commanddto/processor/spi/CommandDtoProcessorService.adoc[CommandDtoProcessorService]
+** xref:system:generated:index/applib/services/command/CommandExecutorService.adoc[CommandExecutorService]
+** xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber]
+** xref:system:generated:index/applib/services/confview/ConfigurationMenu.adoc[ConfigurationMenu]
+** xref:system:generated:index/applib/services/confview/ConfigurationViewService.adoc[ConfigurationViewService]
+** xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[ContentMappingService]
+** xref:system:generated:index/applib/services/linking/DeepLinkService.adoc[DeepLinkService]
+** xref:system:generated:index/applib/services/userreg/EmailNotificationService.adoc[EmailNotificationService]
+** xref:system:generated:index/applib/services/email/EmailService.adoc[EmailService]
+** xref:system:generated:index/applib/services/publishing/spi/EntityChangesSubscriber.adoc[EntityChangesSubscriber]
+** xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber]
+** xref:system:generated:index/applib/services/error/ErrorReportingService.adoc[ErrorReportingService]
+** xref:system:generated:index/applib/services/eventbus/EventBusService.adoc[EventBusService]
+** xref:system:generated:index/applib/services/exceprecog/ExceptionRecognizerService.adoc[ExceptionRecognizerService]
 ** xref:system:generated:index/applib/services/factory/FactoryService.adoc[FactoryService]
-** xref:refguide:applib-svc:GridLoaderService.adoc[GridLoaderService]
-** xref:refguide:applib-svc:GridService.adoc[GridService]
-** xref:refguide:applib-svc:GridSystemService.adoc[GridSystemService]
-** xref:refguide:applib-svc:HealthCheckService.adoc[HealthCheckService]
-** xref:refguide:applib-svc:HintStore.adoc[HintStore]
-** xref:refguide:applib-svc:HomePageResolverService.adoc[HomePageResolverService]
+** xref:system:generated:index/applib/services/grid/GridLoaderService.adoc[GridLoaderService]
+** xref:system:generated:index/applib/services/grid/GridService.adoc[GridService]
+** xref:system:generated:index/applib/services/grid/GridSystemService.adoc[GridSystemService]
+** xref:system:generated:index/applib/services/health/HealthCheckService.adoc[HealthCheckService]
+** xref:system:generated:index/applib/services/hint/HintStore.adoc[HintStore]
+** xref:system:generated:index/applib/services/homepage/HomePageResolverService.adoc[HomePageResolverService]
 ** xref:system:generated:index/applib/services/iactn/InteractionContext.adoc[InteractionContext]
-** xref:refguide:applib-svc:JaxbService.adoc[JaxbService]
-** xref:refguide:applib-svc:LayoutService.adoc[LayoutService]
-** xref:refguide:applib-svc:LayoutServiceMenu.adoc[LayoutServiceMenu]
-** xref:refguide:applib-svc:LocaleProvider.adoc[LocaleProvider]
-** xref:refguide:applib-svc:MenuBarsLoaderService.adoc[MenuBarsLoaderService]
-** xref:refguide:applib-svc:MenuBarsService.adoc[MenuBarsService]
-** xref:refguide:applib-svc:MessageService.adoc[MessageService]
-** xref:refguide:applib-svc:MetaModelService.adoc[MetamodelService]
-** xref:refguide:applib-svc:MetaModelServiceMenu.adoc[MetamodelServiceMenu]
-** xref:refguide:applib-svc:MetricsService.adoc[MetricsService]
+** xref:system:generated:index/applib/services/jaxb/JaxbService.adoc[JaxbService]
+** xref:system:generated:index/applib/services/layout/LayoutService.adoc[LayoutService]
+** xref:system:generated:index/applib/services/layout/LayoutServiceMenu.adoc[LayoutServiceMenu]
+** xref:system:generated:index/applib/services/i18n/LocaleProvider.adoc[LocaleProvider]
+** xref:system:generated:index/applib/services/menu/MenuBarsLoaderService.adoc[MenuBarsLoaderService]
+** xref:system:generated:index/applib/services/menu/MenuBarsService.adoc[MenuBarsService]
+** xref:system:generated:index/applib/services/message/MessageService.adoc[MessageService]
+** xref:system:generated:index/applib/services/metamodel/MetaModelService.adoc[MetamodelService]
+** xref:system:generated:index/applib/services/metamodel/MetaModelServiceMenu.adoc[MetamodelServiceMenu]
+** xref:system:generated:index/applib/services/metrics/MetricsService.adoc[MetricsService]
 ** xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber]
-** xref:refguide:applib-svc:QueryResultsCache.adoc[QueryResultsCache]
-** xref:refguide:applib-svc:RepositoryService.adoc[RepositoryService]
-** xref:refguide:applib-svc:RoutingService.adoc[RoutingService]
-** xref:refguide:applib-svc:Scratchpad.adoc[Scratchpad]
-** xref:refguide:applib-svc:ServiceInjector.adoc[ServiceInjector]
-** xref:refguide:applib-svc:ServiceRegistry.adoc[ServiceRegistry]
-** xref:refguide:applib-svc:SessionLoggingService.adoc[SessionLoggingService]
-** xref:refguide:applib-svc:SudoService.adoc[SudoService]
-** xref:refguide:applib-svc:SwaggerService.adoc[SwaggerService]
-** xref:refguide:applib-svc:TableColumnOrderService.adoc[TableColumnOrderService]
-** xref:refguide:applib-svc:TitleService.adoc[TitleService]
-** xref:refguide:applib-svc:TranslationService.adoc[TranslationService]
-** xref:refguide:applib-svc:TranslationsResolver.adoc[TranslationsResolver]
-** xref:refguide:applib-svc:TransactionService.adoc[TransactionService]
-** xref:refguide:applib-svc:UrlEncodingService.adoc[UrlEncodingService]
-** xref:refguide:applib-svc:UserProfileService.adoc[UserProfileService]
-** xref:refguide:applib-svc:UserRegistrationService.adoc[UserRegistrationService]
-** xref:refguide:applib-svc:UserService.adoc[UserService]
+** xref:system:generated:index/applib/services/queryresultscache/QueryResultsCache.adoc[QueryResultsCache]
+** xref:system:generated:index/applib/services/repository/RepositoryService.adoc[RepositoryService]
+** xref:system:generated:index/applib/services/routing/RoutingService.adoc[RoutingService]
+** xref:system:generated:index/applib/services/scratchpad/Scratchpad.adoc[Scratchpad]
+** xref:system:generated:index/applib/services/inject/ServiceInjector.adoc[ServiceInjector]
+** xref:system:generated:index/applib/services/registry/ServiceRegistry.adoc[ServiceRegistry]
+** xref:system:generated:index/applib/services/session/SessionLoggingService.adoc[SessionLoggingService]
+** xref:system:generated:index/applib/services/sudo/SudoService.adoc[SudoService]
+** xref:system:generated:index/applib/services/swagger/SwaggerService.adoc[SwaggerService]
+** xref:system:generated:index/applib/services/tablecol/TableColumnOrderService.adoc[TableColumnOrderService]
+** xref:system:generated:index/applib/services/title/TitleService.adoc[TitleService]
+** xref:system:generated:index/applib/services/i18n/TranslationService.adoc[TranslationService]
+** xref:system:generated:index/applib/services/i18n/TranslationsResolver.adoc[TranslationsResolver]
+** xref:system:generated:index/applib/services/xactn/TransactionalProcessor.adoc[TransactionProcessor]
+** xref:system:generated:index/applib/services/xactn/TransactionService.adoc[TransactionService]
+** xref:system:generated:index/applib/services/urlencoding/UrlEncodingService.adoc[UrlEncodingService]
+** xref:system:generated:index/applib/services/userprof/UserProfileService.adoc[UserProfileService]
+** xref:system:generated:index/applib/services/userreg/UserRegistrationService.adoc[UserRegistrationService]
+** xref:system:generated:index/applib/services/user/UserService.adoc[UserService]
 ** xref:system:generated:index/applib/services/wrapper/WrapperFactory.adoc[WrapperFactory]
-** xref:refguide:applib-svc:XmlService.adoc[XmlService]
-** xref:refguide:applib-svc:XmlSnapshotService.adoc[XmlSnapshotService]
+** xref:system:generated:index/applib/services/xml/XmlService.adoc[XmlService]
+** xref:system:generated:index/applib/services/xmlsnapshot/XmlSnapshotService.adoc[XmlSnapshotService]
 
diff --git a/api/schema/src/main/adoc/modules/schema/pages/common.adoc b/api/schema/src/main/adoc/modules/schema/pages/common.adoc
index 30ce637..1ac060a 100644
--- a/api/schema/src/main/adoc/modules/schema/pages/common.adoc
+++ b/api/schema/src/main/adoc/modules/schema/pages/common.adoc
@@ -10,7 +10,7 @@ The "common" schema defines a number of complex types that are used by other hig
 == `oidDto`
 
 The `oidDto` complex type captures an object's type and its identifier.
-This is basically a formal XML equivalent to the `Bookmark` object obtained from the xref:refguide:applib-svc:BookmarkService.adoc[`BookmarkService`].
+This is basically a formal XML equivalent to the `Bookmark` object obtained from the xref:system:generated:index/applib/services/bookmark/BookmarkService.adoc[`BookmarkService`].
 
 Although simple, this is an enormously powerful concept, in that it represents a URI to any domain object managed by a given Apache Isis application.
 With it, we have the ability to lookup any arbitrary object.
diff --git a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/AuthenticationSessionProvider.adoc b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/AuthenticationSessionProvider.adoc
index df23506..b4d13d8 100644
--- a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/AuthenticationSessionProvider.adoc
+++ b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/AuthenticationSessionProvider.adoc
@@ -30,4 +30,4 @@ isisSessionFactory.getCurrentSession().getAuthenticationSession();
 ----
 
 
-If xref:refguide:applib-svc:SudoService.adoc[`SudoService`] has been used to temporarily override the user and/or roles, then this service will report the overridden values.
+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.
diff --git a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/CommandDtoServiceInternal.adoc b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/CommandDtoServiceInternal.adoc
index 312d04e..ff5b5fa 100644
--- a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/CommandDtoServiceInternal.adoc
+++ b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/CommandDtoServiceInternal.adoc
@@ -6,7 +6,7 @@ WARNING: TODO: this content has not yet been reviewed/updated for v2.0
 
 The `CommandDtoServiceInternal` is responsible for creating an memento of the current action invocation or property edit, to store in the `Command` object.
 This memento is a JAXB DTO being an instance of the
-xref:refguide:schema:cmd.adoc["cmd" schema], so can be reified either for persistence (through xref:refguide:applib-svc:CommandSubscriber.adoc[CommandSubscriber]) or async execution (through xref:system:generated:index/applib/services/wrapper/WrapperFactory.adoc[WrapperFactory].)
+xref:refguide:schema:cmd.adoc["cmd" schema], so can be reified either for persistence (through xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber]) or async execution (through xref:system:generated:index/applib/services/wrapper/WrapperFactory.adoc[WrapperFactory].)
 
 
 
diff --git a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/CommandPublisher.adoc b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/CommandPublisher.adoc
index ec5c9d7..b44cfbb 100644
--- a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/CommandPublisher.adoc
+++ b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/CommandPublisher.adoc
@@ -5,7 +5,7 @@
 
 WARNING: TODO: this content has not yet been reviewed/updated for v2.0
 
-The `CommandPublisher` service is an internal service whose responsibility is simply to notify all known xref:refguide:applib-svc:CommandSubscriber.adoc[`CommandSubscriber`] when the `Command` has completed.
+The `CommandPublisher` service is an internal service whose responsibility is simply to notify all known xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[`CommandSubscriber`] when the `Command` has completed.
 
 == Related Classes
 
@@ -13,4 +13,4 @@ In total there are 4 sorts of data the framework has publishers for ...
 . *EntityPropertyChanges*: published via `EntityPropertyChangePublisher` and subscribed to via `EntityPropertyChangeSubscriber` (SPI)
 . *EntityChanges*: published via `EntityChangesPublisher` and subscribed to via `EntityChangesSubscriber` (SPI)
 . *Execution*: published via `ExecutionPublisher` and subscribed to via `ExecutionSubscriber` (SPI)
-. *Command*: published via `CommandPublisher` and subscribed to via `CommandSubscriber` (SPI)
\ No newline at end of file
+. *Command*: published via `CommandPublisher` and subscribed to via `CommandSubscriber` (SPI)
diff --git a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ContentNegotiationService.adoc b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ContentNegotiationService.adoc
index e8acf0e..49df0b9 100644
--- a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ContentNegotiationService.adoc
+++ b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ContentNegotiationService.adoc
@@ -26,7 +26,7 @@ If the underlying tables change (as the result of a change in their correspondin
 +
 The `ContentNegotiationService` is responsible for inspecting the HTTP `Accept` header, and use this to select the correct representation to render.  +
 +
-The Apache Isis framework provides three implementations of `ContentNegotiationService` which inspects different elements of the HTTP `Accept` header.  One of these implementations, `ContentNegotiationServiceXRoDomainType` will further delegate down to the companion xref:refguide:applib-svc:ContentMappingService.adoc[`ContentMappingService`] service (if configured/available), based on the value of the "x-ro-domain-type" parameter of the header. +
+The Apache Isis framework provides three implementations of `ContentNegotiationService` which inspects different elements of the HTTP `Accept` header.  One of these implementations, `ContentNegotiationServiceXRoDomainType` will further delegate down to the companion xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[`ContentMappingService`] service (if configured/available), based on the value of the "x-ro-domain-type" parameter of the header. +
 +
 A typical implementation of `ContentMappingService` will convert the domain object into some sort of DTO (data transfer object) as specified by the "x-ro-domaintype".  If this DTO is annotated with JAXB or Jackson mappings, then the RO viewer (courtesy of the underlying link:http://resteasy.jboss.org/[RestEasy] framework) can serialize these directly. +
 +
@@ -113,7 +113,7 @@ As discussed in the introduction, the framework also provides three implementati
 ** `application/xml;profile=urn:org.restfulobjects:repr-types/action-result;x-ro-domain-type=...`
 
 
-The value of the `x-ro-domain-type` parameter corresponds to the DTO to be mapped into by the xref:refguide:applib-svc:ContentMappingService.adoc[`ContentMappingService`].
+The value of the `x-ro-domain-type` parameter corresponds to the DTO to be mapped into by the xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[`ContentMappingService`].
 
 If the DTO is annotated with JAXB, then also note that the runtime type must be annotated with the JAXB `javax.xml.bind.annotation.XmlRootElement` so that RestEasy is able to unambiguously serialize it.
 
@@ -201,6 +201,6 @@ To use an alternative implementation, use Spring's link:https://docs.spring.io/s
 
 == Related Services
 
-The default implementation of `ContentNegotiationService` delegates to xref:refguide:applib-svc:ContentMappingService.adoc[`ContentMappingService`] (if present) to convert domain entities into a stable form (eg DTO).
+The default implementation of `ContentNegotiationService` delegates to xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[`ContentMappingService`] (if present) to convert domain entities into a stable form (eg DTO).
 
 The `ContentNegotiationService` is itself called by the (default implementation of) xref:core:runtime-services:RepresentationService.adoc[`RepresentationService`].
diff --git a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityChangeTracker.adoc b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityChangeTracker.adoc
index 4078afd..b980fb1 100644
--- a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityChangeTracker.adoc
+++ b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityChangeTracker.adoc
@@ -33,7 +33,7 @@ public class ChangedObjectsService {
 }
 ----
 <.> Enlists an object that has just been created, updated or deleted, capturing the pre-modification values of the properties.
-<.> Used by the framework to determine whether to send the completed `Command` to xref:refguide:applib-svc:CommandSubscriber.adoc[CommandSubscriber], for example so that it can be persisted).
+<.> Used by the framework to determine whether to send the completed `Command` to xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber], for example so that it can be persisted).
 <.> Used by xref:core:runtime-services:PublisherDispatchService.adoc[`PublisherDispatchService`] to obtain details of and
 counters of all objects changed within the transaction.
 <.> Used by xref:core:runtime-services:AuditerDispatchService.adoc[`AuditerDispatchService`] to obtain all pairs of
diff --git a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityChangesPublisher.adoc b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityChangesPublisher.adoc
index c1b6a91..cb19807 100644
--- a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityChangesPublisher.adoc
+++ b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityChangesPublisher.adoc
@@ -4,7 +4,7 @@
 
 WARNING: TODO: this content has not yet been reviewed/updated for v2.0
 
-The (internal) `EntityChangesPublisher` service acts as an internal facade to any configured xref:refguide:applib-svc:EntityChangesSubscriber.adoc[`EntityChangesSubscriber`] domain service(s).
+The (internal) `EntityChangesPublisher` service acts as an internal facade to any configured xref:system:generated:index/applib/services/publishing/spi/EntityChangesSubscriber.adoc[`EntityChangesSubscriber`] domain service(s).
 
 For changing entities, it provides an API for the framework to call at the end of the interaction; it obtains details of the changed entities (from the xref:core:runtime-services:ChangedObjectsService.adoc[`ChangedObjectsService`]) and filters them to just those objects that are to be published; these are then passed through to any configured `EntityChangesSubscriber` implementations.
 
diff --git a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityPropertyChangePublisher.adoc b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityPropertyChangePublisher.adoc
index 6d38a5b..88c5d6e 100644
--- a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityPropertyChangePublisher.adoc
+++ b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityPropertyChangePublisher.adoc
@@ -4,7 +4,7 @@
 
 WARNING: TODO: this content has not yet been reviewed/updated for v2.0
 
-The (internal) `EntityPropertyChangePublisher` service acts as an internal facade to any registered xref:refguide:applib-svc:EntityPropertyChangeSubscriber.adoc[`EntityPropertyChangeSubscriber`] service(s).
+The (internal) `EntityPropertyChangePublisher` service acts as an internal facade to any registered xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[`EntityPropertyChangeSubscriber`] service(s).
 It is responsible for obtaining the details of all changes to domain objects within an interaction, and then to call the configured ``EntityPropertyChangeSubscriber``(s) to actually create audit entries of those changes.
 
 
@@ -20,7 +20,7 @@ public interface EntityPropertyChangePublisher {
     void publishEntityPropertyChanges(...);  // <1>
 }
 ----
-<1> uses the xref:core:runtime-services:ChangedObjectsService.adoc[`ChangedObjectsServiceInternal`] to obtain details of the changed properties, then call the configured xref:refguide:applib-svc:EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber](s).
+<1> uses the xref:core:runtime-services:ChangedObjectsService.adoc[`ChangedObjectsServiceInternal`] to obtain details of the changed properties, then call the configured xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber](s).
 
 == Registering the Service
 
diff --git a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/RepresentationService.adoc b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/RepresentationService.adoc
index 301a643..a693002 100644
--- a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/RepresentationService.adoc
+++ b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/RepresentationService.adoc
@@ -11,7 +11,7 @@ The default implementations ultimately generate representations according to the
 However, it also delegates to the xref:core:runtime-services:ContentNegotiationService.adoc[`ContentNegotiationService`] which provides a mechanism for altering representations according to the HTTP `Accept` header.
 This allows more flexible representations to be generated for REST clients that (perhaps through their use of a certain Javascript library, say) expect, or at least works best with, a certain style of representation.
 
-In all there are three domain services that can influence the representations generated: this service, xref:core:runtime-services:ContentNegotiationService.adoc[`ContentNegotiationService`] and the xref:refguide:applib-svc:ContentMappingService.adoc[`ContentMappingService`].
+In all there are three domain services that can influence the representations generated: this service, xref:core:runtime-services:ContentNegotiationService.adoc[`ContentNegotiationService`] and the xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[`ContentMappingService`].
 The diagram below shows how these collaborate:
 
 image::RepresentationService/service-collaborations.png[width="700px"]
@@ -90,4 +90,4 @@ Apache Isis' default implementation of `RepresentationService` service is automa
 
 == Related Services
 
-The default implementation delegates to xref:core:runtime-services:ContentNegotiationService.adoc[`ContentNegotiationService`], whose default implementation may delegate in turn to xref:refguide:applib-svc:ContentMappingService.adoc[`ContentMappingService`] (if present).
+The default implementation delegates to xref:core:runtime-services:ContentNegotiationService.adoc[`ContentNegotiationService`], whose default implementation may delegate in turn to xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[`ContentMappingService`] (if present).
diff --git a/core/runtimeservices/src/main/adoc/modules/runtime-services/partials/_persistence-layer.adoc b/core/runtimeservices/src/main/adoc/modules/runtime-services/partials/_persistence-layer.adoc
index 61fae10..43836aa 100644
--- a/core/runtimeservices/src/main/adoc/modules/runtime-services/partials/_persistence-layer.adoc
+++ b/core/runtimeservices/src/main/adoc/modules/runtime-services/partials/_persistence-layer.adoc
@@ -55,7 +55,7 @@ querying and for persisting objects.
 `PublisherDispatchService`]
 |Co-ordinates between
 xref:core:runtime-services:ChangedObjectsService.adoc[`ChangedObjectsServiceInternal`] and
-xref:refguide:applib-svc:MetricsService.adoc[`MetricsService`] and the SPI services, and the
+xref:system:generated:index/applib/services/metrics/MetricsService.adoc[`MetricsService`] and the SPI services, and the
 xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber].
 |`PublishingService-` +
 `InternalDefault` +
diff --git a/core/runtimeservices/src/main/adoc/modules/runtime-services/partials/_presentation-layer.adoc b/core/runtimeservices/src/main/adoc/modules/runtime-services/partials/_presentation-layer.adoc
index b80a253..ce9aaac 100644
--- a/core/runtimeservices/src/main/adoc/modules/runtime-services/partials/_presentation-layer.adoc
+++ b/core/runtimeservices/src/main/adoc/modules/runtime-services/partials/_presentation-layer.adoc
@@ -27,7 +27,7 @@ Impl'n (g: a:)
 |xref:core:runtime-services:ContentNegotiationService.adoc[`o.a.i.v.ro.` +
 `rendering.service.conneg.` +
 `ContentNegotiationService`]
-|Encodes the algorithm that delegates to any registered xref:refguide:applib-svc:ContentMappingService.adoc[`ContentMappingService`]s.
+|Encodes the algorithm that delegates to any registered xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[`ContentMappingService`]s.
 |`ContentNegotiationService-` +
 `XRoDomainType` +
 ``o.a.i.core`` +
diff --git a/extensions/core/command-log/adoc/modules/command-log/pages/about.adoc b/extensions/core/command-log/adoc/modules/command-log/pages/about.adoc
index d30b851..87d867e 100644
--- a/extensions/core/command-log/adoc/modules/command-log/pages/about.adoc
+++ b/extensions/core/command-log/adoc/modules/command-log/pages/about.adoc
@@ -12,21 +12,12 @@ It further provides a number of supporting services:
 
 * `org.isisaddons.module.command.dom.CommandServiceJdoContributions` contributes actions for searching for persisted child and sibling ``Command``s.
 
-//* implementation of the
-//xref:refguide:applib-svc:CommandServiceInternal.adoc[`BackgroundCommandService`].
-
 All of these can be activated by updating the `pom.xml` and updating the `AppManifest#getModules()` method.
 
 If contributions are not required in the UI, these can be suppressed either using security or by implementing a xref:userguide:btb:about.adoc#vetoing-visibility[vetoing subscriber].
 
 
 
-== Alternatives
-
-WARNING: TODO: v2 - this is to move into the xref:mappings:ROOT:about.adoc[mappings catalogue].
-
-The xref:extensions:command-log:about.adoc[Command Log] extension provides an implementation of the service (`CommandServiceListener`), and also provides a number of related domain services (`CommandJdoRepository` and `CommandServiceJdoContributions`).
-//This module also provides service implementations of the xref:refguide:applib-svc:CommandServiceInternal.adoc[`BackgroundCommandService`].
 
 
 
diff --git a/extensions/security/audit-trail/adoc/modules/audit-trail/pages/about.adoc b/extensions/security/audit-trail/adoc/modules/audit-trail/pages/about.adoc
index 46542cd..b6008a0 100644
--- a/extensions/security/audit-trail/adoc/modules/audit-trail/pages/about.adoc
+++ b/extensions/security/audit-trail/adoc/modules/audit-trail/pages/about.adoc
@@ -5,7 +5,7 @@
 WARNING: TODO: this content has not yet been reviewed/updated for v2.0
 
 
-The xref:security:audit-trail:about.adoc[Auditer] module provides an implementation of the xref:refguide:applib-svc:EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber], as well as a number of related domain services,
+The xref:security:audit-trail:about.adoc[Auditer] module provides an implementation of the xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber], as well as a number of related domain services,
 It creates an audit record for each changed property (ie every time that `AuditerService#audit(...)` is called.
 
 The module also provides:
@@ -29,10 +29,9 @@ The typical way to indicate that an object should be audited is to annotate it w
 
 == Related Services
 
-The auditing service works very well with implementations of xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber] that persist the ``Interaction.Execution`` objects obtained from the xref:system:generated:index/applib/services/iactn/InteractionContext.adoc[`InteractionContext`] service.
-The interaction execution captures the _cause_ of an interaction (an action was invoked, a property was edited), while the `AuditerService` audit entries capture the _effect_ of that interaction in terms of changed state.
+The auditing service works very well with implementations of xref:system:generated:index/applib/services/publishing/spi/ExecutionSubscriber.adoc[ExecutionSubscriber] that persist the ``Execution`` objects obtained from the xref:system:generated:index/applib/services/iactn/InteractionContext.adoc[`InteractionContext`] service.
+The interaction execution captures the _cause_ of an interaction (an action was invoked, a property was edited), while the `EntityPropertyChangeSubscriber` audit entries capture the _effect_ of that interaction in terms of changed state.
 
-The xref:refguide:applib-svc:CommandServiceInternal.adoc[`CommandService`] can also be combined with the auditer service, however
-``Command``s are primarily concerned with capture the _intent_ of an action, not the actual action invocation itself.
+The xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[`CommandSubscriber`] SPI can also be combined with the audit-trail service, where the ``Command`` capturesthe _intent_ of an action, not the actual action invocation itself.
 
 
diff --git a/persistence/jdo/adoc/modules/ROOT/pages/services/IsisJdoSupport.adoc b/persistence/jdo/adoc/modules/ROOT/pages/services/IsisJdoSupport.adoc
index 6ec7af2..d25c64f 100644
--- a/persistence/jdo/adoc/modules/ROOT/pages/services/IsisJdoSupport.adoc
+++ b/persistence/jdo/adoc/modules/ROOT/pages/services/IsisJdoSupport.adoc
@@ -6,7 +6,7 @@
 
 
 The `IsisJdoSupport` service provides a number of general purpose methods for working with the JDO/DataNucleus objectstore.
-In general these act at a lower-level of abstraction than the APIs normally used (specifically, those of xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`]), but nevertheless deal with some of the most common use cases.
+In general these act at a lower-level of abstraction than the APIs normally used (specifically, those of xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`]), but nevertheless deal with some of the most common use cases.
 For service also provides access to the underlying JDO `PersistenceManager` for full control.
 
 The following sections discuss the functionality provided by the service, broken out into categories.
@@ -109,7 +109,7 @@ public List<ToDoItem> findByAtPathAndCategory(final String atPath, final Categor
 
 [NOTE]
 ====
-You can find the full example of the JDOQL equivalent in the xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`]
+You can find the full example of the JDOQL equivalent in the xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`]
 ====
 
 The `executeUniqueQuery(...)` method is similar to `executeQuery(...)`, however expects the query to return at most a single object, which it returns (or `null` if none).
diff --git a/security/adoc/modules/ROOT/pages/about.adoc b/security/adoc/modules/ROOT/pages/about.adoc
index 04f9cbc..dd84f58 100644
--- a/security/adoc/modules/ROOT/pages/about.adoc
+++ b/security/adoc/modules/ROOT/pages/about.adoc
@@ -51,13 +51,11 @@ In addition to Apache Isis' Shiro-based implementation of its authentication and
 ====
 A further aspect of security is auditing: recording what data was modified by which user.
 
-Apache Isis provides the xref:system:generated:index/applib/services/iactn/InteractionContext.adoc[`InteractionContext`]
-can be used to track the actions being invoked, and the xref:refguide:applib-svc:EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber]
-captures what data was modified as a result (auditing).
-When ``Interaction``s are persisted (eg by way of the xref:mappings:outbox-publisher:about.adoc[Outbox Publisher] mapping module) then this provides excellent
-traceability.
-The xref:security:audit-trail:about.adoc[Auditer] module provides an implementation of the `AuditerService`.
-
-For xref:refguide:applib-svc:CommandServiceInternal.adoc[`CommandService`] can be also be used to capture actions, for example using the xref:extensions:command-log:about.adoc[Command Log] extension.
+Apache Isis provides the xref:system:generated:index/applib/services/iactn/InteractionContext.adoc[`InteractionContext`] can be used to track the actions being invoked, and the xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] captures what data was modified as a result (auditing).
+When ``Interaction``s are persisted (eg by way of the xref:mappings:outbox-publisher:about.adoc[Outbox Publisher] mapping module) then this provides excellent traceability.
+The xref:security:audit-trail:about.adoc[Audit Trail] module provides an implementation of the xref:system:generated:index/applib/services/publishing/spi/EntityPropertyChangeSubscriber.adoc[EntityPropertyChangeSubscriber] that persists audit entries to the database.
+
+For xref:system:generated:index/applib/services/publishing/spi/CommandSubscriber.adoc[CommandSubscriber] SPI can be also be used to capture actions.
+The xref:extensions:command-log:about.adoc[Command Log] extension provides a simple implementation of this SPI.
 ====
 
diff --git a/security/adoc/modules/ROOT/pages/domain-services-api-for-applications.adoc b/security/adoc/modules/ROOT/pages/domain-services-api-for-applications.adoc
index 3ade178..c6f5479 100644
--- a/security/adoc/modules/ROOT/pages/domain-services-api-for-applications.adoc
+++ b/security/adoc/modules/ROOT/pages/domain-services-api-for-applications.adoc
@@ -12,7 +12,7 @@ Still, on very rare occasion you may have a need, in which case you can either u
 
 == `UserService` API
 
-The xref:refguide:applib-svc:UserService.adoc[`UserService`] service exposes the following API:
+The xref:system:generated:index/applib/services/user/UserService.adoc[`UserService`] service exposes the following API:
 
 [source,java]
 ----
diff --git a/starters/adoc/modules/starters/pages/simpleapp.adoc b/starters/adoc/modules/starters/pages/simpleapp.adoc
index 0dc838a..34ba1c4 100644
--- a/starters/adoc/modules/starters/pages/simpleapp.adoc
+++ b/starters/adoc/modules/starters/pages/simpleapp.adoc
@@ -607,7 +607,7 @@ Used for prototyping and also integration testing.
 +
 NOTE: Fixture scenarios also need to be link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Import.html[@Import]ed, typically in the top-level `AppManifest`.
 
-<4> An implementation of the xref:refguide:applib-svc:HealthCheckService.adoc[HealtCheckService].
+<4> An implementation of the xref:system:generated:index/applib/services/health/HealthCheckService.adoc[HealtCheckService].
 This integrates with Spring Boot's link:https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/actuate/health/HealthIndicator.html[HealthIndicator] SPI, surfaced through the link:https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html[Spring Boot Actuator].
 <5> Annotated with xref:system:generated:index/applib/annotation/HomePage.adoc[@HomePage] and so is shown automatically as the home page.
 <6> Defines the services in the webapp module, along with dependencies onto the other modules in the application. +
diff --git a/testing/fixtures/adoc/modules/fixtures/pages/fixture-scripts/mocking-the-clock.adoc b/testing/fixtures/adoc/modules/fixtures/pages/fixture-scripts/mocking-the-clock.adoc
index 9ffcae3..0491cd1 100644
--- a/testing/fixtures/adoc/modules/fixtures/pages/fixture-scripts/mocking-the-clock.adoc
+++ b/testing/fixtures/adoc/modules/fixtures/pages/fixture-scripts/mocking-the-clock.adoc
@@ -4,13 +4,13 @@
 
 
 It's often useful to be able to change the effective time that a test runs.
-The framework itself uses the xref:refguide:applib-svc:ClockService.adoc[`ClockService`] to obtain the current time, and applications should also use this domain service for a consistent view of the current time.
+The framework itself uses the xref:system:generated:index/applib/services/clock/ClockService.adoc[`ClockService`] to obtain the current time, and applications should also use this domain service for a consistent view of the current time.
 
 This page describes how to change the current time, and how to set up tests using fixture scripts with a mocked time.
 
 == FixtureClock
 
-The default xref:refguide:applib-svc:ClockService.adoc[`ClockService`] implementation in fact simply delegates to another class defined in the API, namely the `o.a.i.applib.clock.Clock`, an abstract singleton class.
+The default xref:system:generated:index/applib/services/clock/ClockService.adoc[`ClockService`] implementation in fact simply delegates to another class defined in the API, namely the `o.a.i.applib.clock.Clock`, an abstract singleton class.
 It is not recommended that your code use the `Clock` directly, but it's worth understanding how this all works.
 
 * If running in xref:refguide:config:about.adoc#deployment-types[production] (server) mode, then the framework will (lazily) instantiate the ``SystemClock` when first required.
@@ -30,7 +30,7 @@ Will be superceded as a requirement if refactor to provide alternative ClockServ
 
 == TickingClockFixture
 
-The `TickingClockFixture` is a pre-built fixture script that resets the date/time returned by the xref:refguide:applib-svc:ClockService.adoc[`ClockService`] to a known value.
+The `TickingClockFixture` is a pre-built fixture script that resets the date/time returned by the xref:system:generated:index/applib/services/clock/ClockService.adoc[`ClockService`] to a known value.
 
 Thereafter the time returned continues to tick forward (as would the real clock) until reset once more.
 
diff --git a/testing/fixtures/adoc/modules/fixtures/pages/services/FixtureScripts.adoc b/testing/fixtures/adoc/modules/fixtures/pages/services/FixtureScripts.adoc
index be252ab..32e0cf8 100644
--- a/testing/fixtures/adoc/modules/fixtures/pages/services/FixtureScripts.adoc
+++ b/testing/fixtures/adoc/modules/fixtures/pages/services/FixtureScripts.adoc
@@ -52,7 +52,7 @@ The default implementation of this domain service supports the following configu
 |Whether fixture `FixturesInstallingEvent` and `FixturesInstalledEvent` events should be posted while the system is bootstrapping.
 
 Fixture events are fired to indicate the start and end of fixtures are being installed.
-This are listened to by the xref:refguide:applib-svc:QueryResultsCache.adoc[`QueryResultsCache`] to disable caching during this period.
+This are listened to by the xref:system:generated:index/applib/services/queryresultscache/QueryResultsCache.adoc[`QueryResultsCache`] to disable caching during this period.
 
 |===
 
diff --git a/testing/integtestsupport/adoc/modules/integtestsupport/pages/about.adoc b/testing/integtestsupport/adoc/modules/integtestsupport/pages/about.adoc
index e5ddcba..75fad96 100644
--- a/testing/integtestsupport/adoc/modules/integtestsupport/pages/about.adoc
+++ b/testing/integtestsupport/adoc/modules/integtestsupport/pages/about.adoc
@@ -350,7 +350,7 @@ This has an alias of `wm()`.
 
 This class also provides a number of injected domain services:
 
-* xref:refguide:applib-svc:RepositoryService.adoc[`RepositoryService`]
+* xref:system:generated:index/applib/services/repository/RepositoryService.adoc[`RepositoryService`]
 +
 to query and persist objects through a generic repository
 
@@ -358,15 +358,15 @@ to query and persist objects through a generic repository
 +
 for instantiating domain objects and mixins
 
-* xref:refguide:applib-svc:UserService.adoc[`UserService`]
+* xref:system:generated:index/applib/services/user/UserService.adoc[`UserService`]
 +
 to acces the current user
 
-* xref:refguide:applib-svc:ServiceRegistry.adoc[`ServiceRegistry`]
+* xref:system:generated:index/applib/services/registry/ServiceRegistry.adoc[`ServiceRegistry`]
 +
 to access domain services
 
-* xref:refguide:applib-svc:MetamodelService.adoc[`MetaModelService`]
+* xref:system:generated:index/applib/services/metamodel/MetaModelService.adoc[`MetaModelService`]
 +
 to access the metamodel.
 
@@ -375,7 +375,7 @@ to access the metamodel.
 to simulate interactions through the UI.
 This is discussed further xref:about.adoc#wrapper-factory[below].
 
-* xref:refguide:applib-svc:TransactionService.adoc[`TransactionService`]
+* xref:system:generated:index/applib/services/xactn/TransactionService.adoc[`TransactionService`]
 +
 for more control over transactions
 
diff --git a/testing/integtestsupport/adoc/modules/integtestsupport/pages/swagger-exporter.adoc b/testing/integtestsupport/adoc/modules/integtestsupport/pages/swagger-exporter.adoc
index 68bac4b..d1f8b41 100644
--- a/testing/integtestsupport/adoc/modules/integtestsupport/pages/swagger-exporter.adoc
+++ b/testing/integtestsupport/adoc/modules/integtestsupport/pages/swagger-exporter.adoc
@@ -4,7 +4,7 @@
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 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:refguide:applib-svc:SwaggerService.adoc[SwaggerService] serializes the domain's meta model as a Swagger 2.0 specification, either as JSON or YAML.
+The xref:system:generated:index/applib/services/swagger/SwaggerService.adoc[SwaggerService] serializes the domain's meta model as a Swagger 2.0 specification, either as JSON or YAML.
 The `SwaggerExporter` in turn is a utility class that simply writes this serialization out to a file from within an integration test.
 The idea is that subsequent jobs in the build process could then pick up this file, typically to code-generation REST clients in other languages.
 
@@ -33,7 +33,7 @@ class SwaggerExport_IntegTest extends ApplicationIntegTestAbstract {
 }
 ----
 <1> bootstrap using the usual `AppManifest` for integration tests ...
-<2> \... and _also_ include the xref:vro:ROOT:about.adoc[Restful Objects] viewer because this contains the implementation of xref:refguide:applib-svc:SwaggerService.adoc[SwaggerService].
+<2> \... and _also_ include the xref:vro:ROOT:about.adoc[Restful Objects] viewer because this contains the implementation of xref:system:generated:index/applib/services/swagger/SwaggerService.adoc[SwaggerService].
 <3> instantiate the `SwaggerExporter` utility class
 <4> Export specifies the required visibility and format.
 
diff --git a/testing/specsupport/adoc/modules/specsupport/pages/about.adoc b/testing/specsupport/adoc/modules/specsupport/pages/about.adoc
index fbaf28f..2765b12 100644
--- a/testing/specsupport/adoc/modules/specsupport/pages/about.adoc
+++ b/testing/specsupport/adoc/modules/specsupport/pages/about.adoc
@@ -78,7 +78,7 @@ cucumber.filter.tags=not @backlog and not @ignore                          # <.>
 cucumber.glue=domainapp.webapp.bdd                                         # <.>
 cucumber.plugin=pretty, html:target/cucumber-reports/cucumber-html.json    # <.>
 ----
-<.> disable verbose cucumber report publishing information 
+<.> disable verbose cucumber report publishing information
 <.> tag based test filtering
 <.> restrict classpath search for _@Cucumber_ annotated classes
 <.> activate built-in reporting plugins: _pretty_ to console and _html_ to filesystem
@@ -124,7 +124,7 @@ public class TransactionalStepDef {                         // <2>
     public void beforeScenario(){
         //open InteractionSession to be closed after scenario (see below)
         isisInteractionFactory.openInteraction(new InitialisationSession());
-    
+
         val txTemplate = new TransactionTemplate(txMan);    // <3>
         val status = txTemplate.getTransactionManager().getTransaction(null);
         afterScenario = () -> {
@@ -239,7 +239,7 @@ This is done using the xref:testing:integtestsupport:about.adoc#wrapper-factory[
 
 [TIP]
 ====
-The xref:refguide:applib-svc:Scratchpad.adoc[`Scratchpad`] domain service is one way in which glue classes can pass state between each other.
+The xref:system:generated:index/applib/services/scratchpad/Scratchpad.adoc[`Scratchpad`] domain service is one way in which glue classes can pass state between each other.
 Or, for more type safety, you could develop your own custom domain services for each scenario, and inject these in as regular services.
 See link:http://www.thinkcode.se/blog/2017/04/01/sharing-state-between-steps-in-cucumberjvm-using-picocontainer[this blog] post for more details.
 ====
diff --git a/viewers/restfulobjects/adoc/modules/ROOT/pages/architecture.adoc b/viewers/restfulobjects/adoc/modules/ROOT/pages/architecture.adoc
index e688bbe..f66f452 100644
--- a/viewers/restfulobjects/adoc/modules/ROOT/pages/architecture.adoc
+++ b/viewers/restfulobjects/adoc/modules/ROOT/pages/architecture.adoc
@@ -24,7 +24,7 @@ If the implementation does not recognize the value of the header, if can simply
 xref:vro:ROOT:simplified-representations.adoc[simplified representation] of the Apache Isis profile; an implementation that provides support for the `x-ro-domain-type` parameter, and a default/fallback implementation that returns the representations defined by the RO spec.
 
 * `ContentMappingService` +
-+ The xref:refguide:applib-svc:ContentMappingService.adoc[`ContentMappingService`] is used by the implementation of
++ The xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[`ContentMappingService`] is used by the implementation of
 `ContentNegotationService` that recognizes the `x-ro-domain-type`, its role being to transform a domain object (usually an entity) into some other form (usually a DTO), as specified by the `x-ro-domain-type` parameter.
 There can be many such implementations, each handling a different target domain type.
 
diff --git a/viewers/restfulobjects/adoc/modules/ROOT/pages/health-check.adoc b/viewers/restfulobjects/adoc/modules/ROOT/pages/health-check.adoc
index f069976..d59f133 100644
--- a/viewers/restfulobjects/adoc/modules/ROOT/pages/health-check.adoc
+++ b/viewers/restfulobjects/adoc/modules/ROOT/pages/health-check.adoc
@@ -5,7 +5,7 @@
 
 WARNING: TODO: this content has not yet been reviewed/updated for v2.0
 
-The xref:refguide:applib-svc:HealthCheckService.adoc[`HealthCheckService`] SPI allows applications to provide an implementation of that service which can indicate the overall health of the application.
+The xref:system:generated:index/applib/services/health/HealthCheckService.adoc[`HealthCheckService`] SPI allows applications to provide an implementation of that service which can indicate the overall health of the application.
 The "health" is defined by the very simple `Health` class, where a non-null message indicates a problem, otherwise everything is ok:
 
 [source,java]
diff --git a/viewers/restfulobjects/adoc/modules/ROOT/pages/layout-resources.adoc b/viewers/restfulobjects/adoc/modules/ROOT/pages/layout-resources.adoc
index f1151f4..3dbda27 100644
--- a/viewers/restfulobjects/adoc/modules/ROOT/pages/layout-resources.adoc
+++ b/viewers/restfulobjects/adoc/modules/ROOT/pages/layout-resources.adoc
@@ -4,13 +4,13 @@
 
 WARNING: TODO: this content has not yet been reviewed/updated for v2.0
 
-Apache Isis' Restful Objects viewer provides a number of additional resource endpoints that provide representations of the object layout (as per xref:refguide:applib-svc:GridService.adoc[`GridService`]) and of the menu layout (as per xref:refguide:applib-svc:MenuBarsService.adoc[`MenuBarsService`]).
+Apache Isis' Restful Objects viewer provides a number of additional resource endpoints that provide representations of the object layout (as per xref:system:generated:index/applib/services/grid/GridService.adoc[`GridService`]) and of the menu layout (as per xref:system:generated:index/applib/services/menu/MenuBarsService.adoc[`MenuBarsService`]).
 
 This chapter provides details of these resources, the link ``Rel``s to access them, and the resultant representations.
 
 == MenuBars
 
-The xref:refguide:applib-svc:MenuBarsService.adoc[`MenuBarsService`] provides the `menu.layout.xml` XML document which defines how to group the various domain service actions into menubars, menus and menu sections.
+The xref:system:generated:index/applib/services/menu/MenuBarsService.adoc[`MenuBarsService`] provides the `menu.layout.xml` XML document which defines how to group the various domain service actions into menubars, menus and menu sections.
 
 For example, the xref:docs:starters:helloworld.adoc[Hello World starter app] has the following layout:
 
@@ -128,7 +128,7 @@ Note that because of dynamic icons (the xref:refguide:applib-cm:methods.adoc#ico
 
 == Domain Object Layout
 
-The xref:refguide:applib-svc:GridService.adoc[`GridService`] provides an XML document which defines the layout of any of domain object.
+The xref:system:generated:index/applib/services/grid/GridService.adoc[`GridService`] provides an XML document which defines the layout of any of domain object.
 Typically this is the contents of the `Xxx.layout.xml` file (where `Xxx` is the domain type).
 
 For example, in the xref:docs:starters:helloworld.adoc[Hello World starter app] the `HelloWorld` domain object has a layout defined by `HelloWorld.layout.xml`.
@@ -242,7 +242,7 @@ The representation of the domain types resource (section 22.2 of RO spec v1.0) h
 }
 ----
 
-The representation returned by this resource is essentially exactly the same as the layout returned by xref:refguide:applib-svc:GridService.adoc[`GridService`] (it is not dynamically extended with links).
+The representation returned by this resource is essentially exactly the same as the layout returned by xref:system:generated:index/applib/services/grid/GridService.adoc[`GridService`] (it is not dynamically extended with links).
 
 == Static vs Dynamic Resources
 
diff --git a/viewers/restfulobjects/adoc/modules/ROOT/pages/ro-spec.adoc b/viewers/restfulobjects/adoc/modules/ROOT/pages/ro-spec.adoc
index 509c51e..5ef2916 100644
--- a/viewers/restfulobjects/adoc/modules/ROOT/pages/ro-spec.adoc
+++ b/viewers/restfulobjects/adoc/modules/ROOT/pages/ro-spec.adoc
@@ -106,7 +106,7 @@ For example, the client could use an `Accept` header such as:
 Accept: application/xml;x-ro-domain-type="com.mycompany.viewmodels.v2.CustomerViewModel"
 ----
 
-The server will use the xref:refguide:applib-svc:ContentMappingService.adoc[`ContentMappingService`] to attempt to transform the domain object into the requested `x-ro-domain-type`.
+The server will use the xref:system:generated:index/applib/services/conmap/ContentMappingService.adoc[`ContentMappingService`] to attempt to transform the domain object into the requested `x-ro-domain-type`.
 The whole process is discussed in more detail in the xref:vro:ROOT:architecture.adoc[architecture] chapter.
 
 ==== Apache Isis profile
diff --git a/viewers/wicket/adoc/modules/ROOT/pages/extending/custom-pages.adoc b/viewers/wicket/adoc/modules/ROOT/pages/extending/custom-pages.adoc
index 6468add..1b98bbb 100644
--- a/viewers/wicket/adoc/modules/ROOT/pages/extending/custom-pages.adoc
+++ b/viewers/wicket/adoc/modules/ROOT/pages/extending/custom-pages.adoc
@@ -20,10 +20,10 @@ Isis defines eight page types (see the `org.apache.isis.viewer.wicket.model.mode
 | The initial sign-in (aka login) page
 
 | SIGN_UP
-| The sign-up page (if xref:refguide:applib-svc:UserRegistrationService.adoc[user registration] is enabled).
+| The sign-up page (if xref:system:generated:index/applib/services/userreg/UserRegistrationService.adoc[user registration] is enabled).
 
 | SIGN_UP_VERIFY
-| The sign-up verification page (if xref:refguide:applib-svc:UserRegistrationService.adoc[user registration] is enabled; as accessed by link from verification email)
+| The sign-up verification page (if xref:system:generated:index/applib/services/userreg/UserRegistrationService.adoc[user registration] is enabled; as accessed by link from verification email)
 
 | PASSWORD_RESET
 | The password reset page (if enabled).
diff --git a/viewers/wicket/adoc/modules/ROOT/pages/features/user-registration.adoc b/viewers/wicket/adoc/modules/ROOT/pages/features/user-registration.adoc
index c7ef088..86edef4 100644
--- a/viewers/wicket/adoc/modules/ROOT/pages/features/user-registration.adoc
+++ b/viewers/wicket/adoc/modules/ROOT/pages/features/user-registration.adoc
@@ -16,12 +16,12 @@ In a similar way, if the user has forgotten their password then they can request
 
 To support this the framework requires three services to be registered and configured:
 
-* the xref:refguide:applib-svc:UserRegistrationService.adoc[user registration service], which provides an API to create the user account
-* the xref:refguide:applib-svc:EmailNotificationService.adoc[email notification service], which provides an API for to send the verification emails
-* the xref:refguide:applib-svc:EmailService.adoc[email service], that is used by the email notification service to actually send the email.
+* the xref:system:generated:index/applib/services/userreg/UserRegistrationService.adoc[user registration service], which provides an API to create the user account
+* the xref:system:generated:index/applib/services/userreg/EmailNotificationService.adoc[email notification service], which provides an API for to send the verification emails
+* the xref:system:generated:index/applib/services/email/EmailService.adoc[email service], that is used by the email notification service to actually send the email.
 
 The Apache Isis core framework provides a default implementation of both the email notification service and the email service.
-The xref:security:ROOT:about.adoc[Security Manager] extension provides a partial implementation of xref:refguide:applib-svc:UserRegistrationService.adoc[user registration service] that you can complete for your own applications.
+The xref:security:ROOT:about.adoc[Security Manager] extension provides a partial implementation of xref:system:generated:index/applib/services/userreg/UserRegistrationService.adoc[user registration service] that you can complete for your own applications.
 
 
 
@@ -66,9 +66,9 @@ image::user-registration/sign-up-after-registration.png[width="800px"]
 
 There are two prerequisites:
 
-* register an implementation of the xref:refguide:applib-svc:UserRegistrationService.adoc[user registration service] (eg by using the xref:security:ROOT:about.adoc[SecMan extension])
+* register an implementation of the xref:system:generated:index/applib/services/userreg/UserRegistrationService.adoc[user registration service] (eg by using the xref:security:ROOT:about.adoc[SecMan extension])
 
-* configure the xref:refguide:applib-svc:EmailService.adoc[email service]
+* configure the xref:system:generated:index/applib/services/email/EmailService.adoc[email service]
 
 The latter is required if you are using the default email notification service and email service. If you are using your own alternative implementation of the email notification service then it may be omitted (and configure your own alternative implementation as required).
 
diff --git a/viewers/wicket/adoc/modules/ROOT/pages/hints-and-tips/i18n-label-in-wicket-viewer.adoc b/viewers/wicket/adoc/modules/ROOT/pages/hints-and-tips/i18n-label-in-wicket-viewer.adoc
index 1881ffb..0467775 100644
--- a/viewers/wicket/adoc/modules/ROOT/pages/hints-and-tips/i18n-label-in-wicket-viewer.adoc
+++ b/viewers/wicket/adoc/modules/ROOT/pages/hints-and-tips/i18n-label-in-wicket-viewer.adoc
@@ -12,7 +12,7 @@ Referencing those via their message id inside a .po file didn't work either.
 Can this be done?_
 
 
-Yes, it _is_ possible to internationalize both the Wicket viewer's labels as well as the regular translations of the domain object metadata using the `.po` translation files as supported by the xref:refguide:applib-svc:TranslationService.adoc[`TranslationService`].
+Yes, it _is_ possible to internationalize both the Wicket viewer's labels as well as the regular translations of the domain object metadata using the `.po` translation files as supported by the xref:system:generated:index/applib/services/i18n/TranslationService.adoc[`TranslationService`].
 
 Full details of the ``msgId``s that must be added to the `translations.po` file can be found in xref:userguide:btb:i18n.adoc#wicket-viewer[i18n] section of the xref:userguide:btb:about.adoc[beyond the basics] guide.
 
diff --git a/viewers/wicket/adoc/modules/ROOT/partials/security/user-registration.adoc b/viewers/wicket/adoc/modules/ROOT/partials/security/user-registration.adoc
index a576bdd..a83ad52 100644
--- a/viewers/wicket/adoc/modules/ROOT/partials/security/user-registration.adoc
+++ b/viewers/wicket/adoc/modules/ROOT/partials/security/user-registration.adoc
@@ -14,7 +14,7 @@ These pages all "reach inside" Apache Isis framework in order to actually do the
 The sign-in verification page to render is pluggable; see xref:vw:ROOT:extending.adoc#custom-pages[extensions chapter] for details.
 ====
 
-User registration is only available if the xref:refguide:applib-svc:UserRegistrationService.adoc[`UserRegistrationService`] is configured; this is used by the framework to actually create new instances of the user as accessed by the corresponding (Shiro) realm.
+User registration is only available if the xref:system:generated:index/applib/services/userreg/UserRegistrationService.adoc[`UserRegistrationService`] is configured; this is used by the framework to actually create new instances of the user as accessed by the corresponding (Shiro) realm.
 
 Because Shiro realms are pluggable, the Apache Isis framework does not provide default implementations of this service.
 However, if you are using the xref:security:ROOT:about.adoc[SecMan extension], then this module _does_ provide an implementation (that, as you might expect, creates new "user" domain entities).