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 2019/12/18 07:52:46 UTC

[isis] 24/25: ISIS-2062: reviewing docs

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

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

commit adfa1d836f670a963128a022d13bd12ac59c9a46
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Tue Dec 17 23:56:34 2019 +0100

    ISIS-2062: reviewing docs
    
    also:
    - moves CommandExecutorServiceDefault package in line with CommandExecutorService API.
    - adds hrefs for social
    - removes mention of DomainServiceLayout#menuOrder
---
 .../refguide/modules/ROOT/pages/about.adoc         |   1 +
 .../domain-services-api-for-applications.adoc      |   2 +-
 .../security/modules/ROOT/partials/module-nav.adoc |   2 +-
 .../components/toc/modules/ROOT/pages/about.adoc   |  39 +++++---
 .../components/toc/modules/ROOT/pages/support.adoc |   1 -
 .../pages/what-is-apache-isis/screencasts.adoc     |   5 -
 .../replacing-default-service-implementations.adoc |  30 ++----
 .../framework-provided.adoc                        |   1 -
 .../domain-services/scoped-services.adoc           |   3 +-
 antora/supplemental-ui/css/site-custom.css         |  16 ++++
 antora/supplemental-ui/index.html                  |   7 +-
 .../examples/annotation/OrderPrecedence.java       |   4 +-
 .../modules/applib-ant/pages/DomainService.adoc    |   4 -
 .../applib-ant/pages/DomainServiceLayout.adoc      |   5 -
 .../pages/DomainServiceLayout/menuBar.adoc         |   4 +-
 .../pages/DomainServiceLayout/named.adoc           |   7 --
 .../pages/classes/super/AbstractSubscriber.adoc    |   2 +-
 .../services/acceptheader/AcceptHeaderService.java |   7 +-
 .../examples/services/command/CommandContext.java  |   9 +-
 .../main/doc/modules/applib-svc/pages/about.adoc   |  69 +++++---------
 .../applib-svc/pages/application-layer-api.adoc    |  15 +--
 .../ActionInvocationContext.adoc                   | 102 ---------------------
 .../application-layer-api/BackgroundService.adoc   |  10 +-
 .../application-layer-api/CommandContext.adoc      |  42 +++++----
 .../application-layer-api/InteractionContext.adoc  |   4 +-
 .../application-layer-api/MessageService.adoc      |   2 +-
 .../SessionManagementService.adoc                  |   2 +-
 .../applib-svc/pages/application-layer-spi.adoc    |   1 +
 .../applib-svc/pages/bootstrapping-spi.adoc        |   2 +-
 .../bootstrapping-spi/ClassDiscoveryService.adoc   |   2 +-
 .../modules/applib-svc/pages/core-domain-api.adoc  |   2 +-
 .../pages/core-domain-api/EventBusService.adoc     |   9 +-
 .../pages/core-domain-api/Scratchpad.adoc          |   2 +-
 .../modules/applib-svc/pages/integration-api.adoc  |   2 +-
 .../pages/integration-api/BookmarkService.adoc     |   2 +-
 .../pages/integration-api/JaxbService.adoc         |   2 +-
 .../pages/integration-api/MementoService.adoc      |   2 +-
 .../doc/modules/applib-svc/pages/metadata-api.adoc |   2 +-
 .../applib-svc/pages/persistence-layer-api.adoc    |   2 +-
 .../persistence-layer-api/QueryResultsCache.adoc   |   2 +-
 .../applib-svc/pages/persistence-layer-spi.adoc    |   2 +-
 .../applib-svc/pages/presentation-layer-api.adoc   |   2 +-
 .../AcceptHeaderService.adoc                       |  16 +---
 .../presentation-layer-api/GuiceBeanProvider.adoc  |   2 +-
 .../applib-svc/pages/presentation-layer-spi.adoc   |   2 +-
 .../ContentMappingService.adoc                     |   6 +-
 .../presentation-layer-spi/GridSystemService.adoc  |  14 ++-
 .../pages/presentation-layer-spi/HintStore.adoc    |   2 +-
 .../presentation-layer-spi/RoutingService.adoc     |  10 +-
 .../TableColumnOrderService.adoc                   |   4 +-
 .../presentation-layer-spi/UrlEncodingService.adoc |   2 +-
 .../main/doc/modules/applib-svc/pages/testing.adoc |   2 +-
 .../modules/applib-svc/partials/module-nav.adoc    |   2 -
 .../isis/applib/annotation/OrderPrecedence.java    |   4 +-
 .../applib/services/command/CommandContext.java    |   7 +-
 .../services/command/spi/CommandService.java       |   8 +-
 .../applib/services/iactn/InteractionContext.java  |  13 +--
 .../runtime-services/pages/application-layer.adoc  |   2 +-
 .../runtime-services/pages/persistence-layer.adoc  |   2 +-
 .../PublishingServiceInternal.adoc                 |   2 +-
 .../runtime-services/pages/presentation-layer.adoc |   2 +-
 .../ContentNegotiationService.adoc                 |   2 +-
 .../presentation-layer/RepresentationService.adoc  |   2 +-
 .../services/IsisModuleRuntimeServices.java        |   3 +-
 .../CommandExecutorServiceDefault.java             |   2 +-
 migration-notes.adoc                               |   1 +
 preview.sh                                         |   1 +
 scripts/ci/build-site.sh                           |  14 +--
 68 files changed, 206 insertions(+), 352 deletions(-)

diff --git a/antora/components/refguide/modules/ROOT/pages/about.adoc b/antora/components/refguide/modules/ROOT/pages/about.adoc
index 8e217d3..53bdad6 100644
--- a/antora/components/refguide/modules/ROOT/pages/about.adoc
+++ b/antora/components/refguide/modules/ROOT/pages/about.adoc
@@ -1,5 +1,6 @@
 = Reference Guides
 include::_attributes.adoc[]
+:page-role: -toc
 
 The reference guides cover:
 
diff --git a/antora/components/security/modules/ROOT/pages/domain-services-api-for-applications.adoc b/antora/components/security/modules/ROOT/pages/domain-services-api-for-applications.adoc
index 90ea898..f5f5eeb 100644
--- a/antora/components/security/modules/ROOT/pages/domain-services-api-for-applications.adoc
+++ b/antora/components/security/modules/ROOT/pages/domain-services-api-for-applications.adoc
@@ -1,4 +1,4 @@
-= Domain Services (API for Applications)
+= Domain Services
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 include::_attributes.adoc[]
 :page-partial:
diff --git a/antora/components/security/modules/ROOT/partials/module-nav.adoc b/antora/components/security/modules/ROOT/partials/module-nav.adoc
index 56560ac..f5385ed 100644
--- a/antora/components/security/modules/ROOT/partials/module-nav.adoc
+++ b/antora/components/security/modules/ROOT/partials/module-nav.adoc
@@ -1,4 +1,4 @@
-* xref:security:ROOT:domain-services-api-for-applications.adoc[Domain Services (API for Applications)]
+* xref:security:ROOT:domain-services-api-for-applications.adoc[Domain Services]
 
 
 
diff --git a/antora/components/toc/modules/ROOT/pages/about.adoc b/antora/components/toc/modules/ROOT/pages/about.adoc
index 13b8e05..b299ec9 100644
--- a/antora/components/toc/modules/ROOT/pages/about.adoc
+++ b/antora/components/toc/modules/ROOT/pages/about.adoc
@@ -47,8 +47,13 @@ include::_attributes.adoc[]
 [discrete]
 == Components
 
+_Viewers_
+
 * xref:vw:ROOT:about.adoc[Wicket UI]
 * xref:vro:ROOT:about.adoc[Restful Objects (REST API)]
+
+_Persistence_
+
 * xref:pjdo:ROOT:about.adoc[DataNucleus Object Store]
 
 
@@ -65,15 +70,20 @@ include::_attributes.adoc[]
 [discrete]
 == Support
 
-* xref:toc:devguide:about.adoc[Developers' Guide]
-* xref:toc:mavendeps:about.adoc[Maven dependencies]
+* *xref:toc:ROOT:mailing-list/how-to-subscribe.adoc[Mailing Lists]*
+* link:https://the-asf.slack.com/archives/CFC42LWBV[Slack]
+* link:https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=87[JIRA]
 
-_Mailing Lists_
 
-* xref:toc:ROOT:mailing-list/how-to-subscribe.adoc[How to subscribe]
-* link:https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=87[JIRA] +
+_Resources_
 
 
+* *xref:toc:devguide:about.adoc[Developers' Guide]*
+* xref:toc:mavendeps:about.adoc[Maven dependencies]
+* link:https://cwiki.apache.org/confluence/display/ISIS/Index[ASF Wiki]
+* link:https://stackoverflow.com/questions/tagged/isis[Stack Overflow]
+* link:https://twitter.com/ApacheIsis[Twitter]
+
 |
 [discrete]
 == Releases
@@ -82,11 +92,12 @@ _Mailing Lists_
 * xref:toc:relnotes:about.adoc[Release Notes]
 * xref:toc:mignotes:about.adoc[Migration Notes]
 
-_Other Resources_
+_Nightly Builds (not ASF)_
+
+* link:https://github.com/apache-isis-committers/isis-nightly[CI]
+* link:https://repo.incode.cloud/[Maven Repo]
+* link:https://apache-isis-committers.github.io/isis-nightly/toc/about.html[Website preview]
 
-* link:https://cwiki.apache.org/confluence/display/ISIS/Index[ASF Wiki]
-* link:https://fisheye.apache.org/browse/~br=master/isis-git/[ASF Fisheye]
-* link:http://stackoverflow.com/questions/tagged/isis[Stack Overflow]
 
 
 |
@@ -96,10 +107,15 @@ _Other Resources_
 *  xref:toc:comguide:about.adoc[Committers' Guide]
 ** xref:toc:comguide:about.adoc#cutting-a-release[Cutting a Release]
 ** xref:toc:comguide:about.adoc#verifying-releases[Verifying a Release]
-*  xref:core:ROOT:about.adoc[Core Framework]
-
+* xref:core:ROOT:about.adoc[Core Framework]
 * xref:more-thanks/more-thanks.adoc[Acknowledgements]
 
+
+_Analysis_
+
+* link:https://sonarcloud.io/dashboard?id=apache_isis[SonarCloud.io]
+* link:https://fisheye.apache.org/browse/~br=master/isis-git/[ASF Fisheye]
+
 |
 [discrete]
 == Further reading
@@ -142,7 +158,6 @@ _Experiments_
 
 * link:https://github.com/sebastianslutzky/AngularViewerCLI[AngularViewer]
 * link:https://github.com/joerg-rade/kroviz[Kroviz]
-* link:https://platform.incode.org[Incode Platform]
 
 _nb: not ASF_
 
diff --git a/antora/components/toc/modules/ROOT/pages/support.adoc b/antora/components/toc/modules/ROOT/pages/support.adoc
index e2eb8ea..c84152f 100644
--- a/antora/components/toc/modules/ROOT/pages/support.adoc
+++ b/antora/components/toc/modules/ROOT/pages/support.adoc
@@ -12,7 +12,6 @@ This page lists additional resources to assist the developer when building appli
 ** xref:toc:devguide:contributing.adoc[Pull requests]
 
 * xref:toc:mavendeps:about.adoc[Maven dependencies]
-* xref:toc:mixins:about.adoc[Maven mixins]
 
 
 == Help
diff --git a/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc b/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
index c821679..a16bcf3 100644
--- a/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
+++ b/antora/components/toc/modules/ROOT/pages/what-is-apache-isis/screencasts.adoc
@@ -144,11 +144,6 @@ Implementing business logic using a (no-arg) action, and associating with a prop
 
 
 
-|link:https://www.youtube.com/watch?v=0naoVsWppuQ[013^] +
-Invoking (no-arg) action on multiple objects at once (using xref:refguide:applib-ant:Action.adoc#invokeOn[`@Action#invokeOn()`], and using the xref:refguide:applib-svc:application-layer-api/ActionInvocationContext.adoc[`ActionInvocationContext`] domain service for a smoother end-user experience.
-|||x||||||x||
-
-
 
 
 
diff --git a/antora/components/userguide/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc b/antora/components/userguide/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc
index 7046d91..2ba7ad7 100644
--- a/antora/components/userguide/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc
+++ b/antora/components/userguide/modules/btb/pages/hints-and-tips/replacing-default-service-implementations.adoc
@@ -10,46 +10,30 @@ The framework provides default implementations for many of the xref:refguide:app
 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:presentation-layer-spi/LocaleProvider.adoc[`LocaleProvider`].
-The trick is to use the xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] attribute, specifying a low number (typically `"1"`).
+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:
 
 [source,java]
 ----
-@DomainService(
-        nature = NatureOfService.DOMAIN
-)
+@Service
+@Order(OrderPrecedence.HIGH)                                // <1>
 public class MyLocaleProvider implements LocaleProvider {
     @Override
-    public Locale getLocale() {
-        return ...
-    }
+    public Locale getLocale() { /* ... */ }
 }
 ----
-
-The framework uses the value of the `menuOrder` attribute to determine priority; lowest number wins.
-
-However, there is no need to specify the `menuOrder` attribute: its default value is now set to a lower value (specifically: `Integer.MAX_VALUE - 100`) than all of the framework-provided implementations, and thus always takes precedence.
-
-Thus, if a single instance is to be injected, eg:
-
-[source,java]
-----
-@javax.inject.Inject
-LocalProvider localeProvider;
-----
-
-then the custom implementation will be used in preference to the framework's default implementation.
+<1> `OrderPrecedence` (in the Apache Isis applib) provides some standard values.
 
 If multiple instances are injected, eg:
 
 [source,java]
 ----
 @javax.inject.Inject
-List<LocalProvider> localeProviders;
+private List<LocalProvider> localeProviders;
 ----
 
-then all implementations will be present in the list, ordered by priority; your custom implementation will be first in the list.
+then all implementations will be present in the list, ordered by priority.
 
 
 
diff --git a/antora/components/userguide/modules/fun/pages/available-domain-services/framework-provided.adoc b/antora/components/userguide/modules/fun/pages/available-domain-services/framework-provided.adoc
index c87acd0..8055994 100644
--- a/antora/components/userguide/modules/fun/pages/available-domain-services/framework-provided.adoc
+++ b/antora/components/userguide/modules/fun/pages/available-domain-services/framework-provided.adoc
@@ -39,7 +39,6 @@ Commands/Interactions/Background/Auditing/Publishing/Profiling:
 Information Sharing:
 
 * xref:refguide:applib-svc:core-domain-api/Scratchpad.adoc[`Scratchpad`]
-* xref:refguide:applib-svc:application-layer-api/ActionInvocationContext.adoc[`ActionInvocationContext`]
 * xref:refguide:applib-svc:persistence-layer-api/QueryResultsCache.adoc[`QueryResultsCache`]
 
 UserManagement:
diff --git a/antora/components/userguide/modules/fun/pages/programming-model/domain-services/scoped-services.adoc b/antora/components/userguide/modules/fun/pages/programming-model/domain-services/scoped-services.adoc
index 536724b..2555a9f 100644
--- a/antora/components/userguide/modules/fun/pages/programming-model/domain-services/scoped-services.adoc
+++ b/antora/components/userguide/modules/fun/pages/programming-model/domain-services/scoped-services.adoc
@@ -19,5 +19,6 @@ public class MyService extends AbstractService {
 }
 ----
 
-The framework provides a number of request-scoped services, include a xref:refguide:applib-svc:core-domain-api/Scratchpad.adoc[`Scratchpad`] service query results caching through the xref:refguide:applib-svc:persistence-layer-api/QueryResultsCache.adoc[`QueryResultsCache`], and support for co-ordinating bulk actions through the xref:refguide:applib-svc:application-layer-api/ActionInvocationContext.adoc[`ActionInvocationContext`] service.  See the xref:refguide:applib-svc:about.adoc[domai [...]
+The framework provides a number of request-scoped services, including a xref:refguide:applib-svc:core-domain-api/Scratchpad.adoc[`Scratchpad`] service and a query results caching through the xref:refguide:applib-svc:persistence-layer-api/QueryResultsCache.adoc[`QueryResultsCache`].
+See the xref:refguide:applib-svc:about.adoc[domain services] reference guide for further details.
 
diff --git a/antora/supplemental-ui/css/site-custom.css b/antora/supplemental-ui/css/site-custom.css
index eda7e1f..9be8476 100644
--- a/antora/supplemental-ui/css/site-custom.css
+++ b/antora/supplemental-ui/css/site-custom.css
@@ -1,3 +1,19 @@
 div.paragraph code {
     color: darkmagenta;
 }
+
+.content .ulist {
+    margin-top: 0.2rem;
+}
+
+.content h2 {
+    margin-bottom: 9px;
+}
+
+.content > .ulist ul {
+    padding-left: 1rem;
+}
+
+.content .ulist .ulist ul {
+    padding-left: 1rem;
+}
diff --git a/antora/supplemental-ui/index.html b/antora/supplemental-ui/index.html
index 3d97351..d4f78f0 100644
--- a/antora/supplemental-ui/index.html
+++ b/antora/supplemental-ui/index.html
@@ -50,12 +50,13 @@
       -->
     </div>
     <div class="social-links float-right">
-      <a href="https://www.youtube.com/playlist?list=PLbRpnAmQ6xsBGB_mRAUob8WRBsSL_IsBO" class="youtube"><i class="fa fa-youtube"></i></a>
+      <a href="https://lists.apache.org/list.html?users@isis.apache.org" class="email"><i class="fa fa-at"></i></a>
+      <a href="https://the-asf.slack.com/archives/CFC42LWBV" class="slack"><i class="fa fa-slack"></i></a>
+      <a href="https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=87" class="bug"><i class="fa fa-bug"></i></a>
+      <a href="https://stackoverflow.com/questions/tagged/isis" class="stackoverflow"><i class="fa fa-stack-overflow"></i></a>
       <a href="https://twitter.com/ApacheIsis" class="twitter"><i class="fa fa-twitter"></i></a>
       <!--
-              <a href="#" class="facebook"><i class="fa fa-facebook"></i></a>
               <a href="#" class="instagram"><i class="fa fa-instagram"></i></a>
-              <a href="#" class="google-plus"><i class="fa fa-google-plus"></i></a>
               <a href="#" class="linkedin"><i class="fa fa-linkedin"></i></a>
       -->
     </div>
diff --git a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/OrderPrecedence.java b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/OrderPrecedence.java
index a62cf10..201061f 100644
--- a/core/applib/src/main/doc/modules/applib-ant/examples/annotation/OrderPrecedence.java
+++ b/core/applib/src/main/doc/modules/applib-ant/examples/annotation/OrderPrecedence.java
@@ -23,6 +23,7 @@ import org.springframework.core.Ordered;
 
 import lombok.experimental.UtilityClass;
 
+// tag::refguide[]
 @UtilityClass
 public class OrderPrecedence {
 
@@ -55,4 +56,5 @@ public class OrderPrecedence {
      */
     public static final int LOW = OrderPrecedence.LOWEST / 2;
 
-}
\ No newline at end of file
+}
+// end::refguide[]
diff --git a/core/applib/src/main/doc/modules/applib-ant/pages/DomainService.adoc b/core/applib/src/main/doc/modules/applib-ant/pages/DomainService.adoc
index cecc957..5593e13 100644
--- a/core/applib/src/main/doc/modules/applib-ant/pages/DomainService.adoc
+++ b/core/applib/src/main/doc/modules/applib-ant/pages/DomainService.adoc
@@ -37,10 +37,6 @@ The instanceId for services is always "1".
 |if this domain service acts as a repository for an entity type, specify that entity type.  This is used to determine an icon to use for the service (eg as shown in action prompts).
 
 
-|`menuOrder()`
-|
-|Deprecated in 1.8.0; use instead xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`]
-
 |===
 
 
diff --git a/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout.adoc b/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout.adoc
index f8d88cc..fe3a3c3 100644
--- a/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout.adoc
+++ b/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout.adoc
@@ -28,11 +28,6 @@ The table below summarizes the annotation's attributes.
 |the menubar in which the menu that holds this service's actions should reside.
 
 
-|xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`menuOrder()`]
-|
-|the order of the service's menu with respect to other service's.
-
-
 |xref:refguide:applib-ant:DomainServiceLayout.adoc#named[`named()`]
 |string, eg "Customers"
 |name of this class (overriding the name derived from its name in code)
diff --git a/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/menuBar.adoc b/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/menuBar.adoc
index 083d9a9..47930a8 100644
--- a/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/menuBar.adoc
+++ b/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/menuBar.adoc
@@ -33,8 +33,8 @@ Domain services placed on the `TERTIARY` appear in the menu bar associated with
 image::reference-annotations/DomainServiceLayout/menuBar-tertiary.png[width="720px",link="{imagesdir}/reference-annotations/DomainServiceLayout/menuBar-tertiary.png"]
 
 
-The grouping of multiple domain services actions within a single drop-down is managed by the xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] attribute.
-
+The grouping of multiple domain services actions within a single drop-down is managed by the link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation.
+Alternatively, use `menubars.layout.xml` layout file to organize menu action items arbitrarily.
 
 [NOTE]
 ====
diff --git a/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/named.adoc b/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/named.adoc
index d27394e..cbb6766 100644
--- a/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/named.adoc
+++ b/core/applib/src/main/doc/modules/applib-ant/pages/DomainServiceLayout/named.adoc
@@ -8,13 +8,6 @@ include::_attributes.adoc[]
 The `named()` attribute explicitly specifies the domain service's name, overriding the name that would normally be inferred from the Java source code.
 
 
-
-[TIP]
-====
-The value of this attribute also has an important role to play in the positioning of the domain service's actions relative to the actions of other domain services.
-See xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`menuOrder()`] for a full discussion with examples.
-====
-
 For example:
 
 [source,java]
diff --git a/core/applib/src/main/doc/modules/applib-cm/pages/classes/super/AbstractSubscriber.adoc b/core/applib/src/main/doc/modules/applib-cm/pages/classes/super/AbstractSubscriber.adoc
index ce45137..fa3cd93 100644
--- a/core/applib/src/main/doc/modules/applib-cm/pages/classes/super/AbstractSubscriber.adoc
+++ b/core/applib/src/main/doc/modules/applib-cm/pages/classes/super/AbstractSubscriber.adoc
@@ -10,6 +10,6 @@ It uses xref:refguide:applib-ant:PostConstruct.adoc[`@PostConstruct`] and xref:r
 
 It's important that subscribers register before any domain services that might emit events on the xref:refguide:applib-svc:core-domain-api/EventBusService.adoc[`EventBusService`].
 For example, the xref:secman:ROOT:about.adoc[SecMan extension] provides a domain service that automatically seeds certain domain entities; these will generate xref:refguide:applib-cm:classes/lifecycleevent.adoc[lifecycle events] and so any subscribers must be registered before such seed services.
-The easiest way to do this is to use the xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] attribute.
+The easiest way to do this is to use the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation.
 
 As a convenience, the `AbstractSubscriber` specifies this attribute.
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-svc/examples/services/acceptheader/AcceptHeaderService.java b/core/applib/src/main/doc/modules/applib-svc/examples/services/acceptheader/AcceptHeaderService.java
index 8072669..26640d2 100644
--- a/core/applib/src/main/doc/modules/applib-svc/examples/services/acceptheader/AcceptHeaderService.java
+++ b/core/applib/src/main/doc/modules/applib-svc/examples/services/acceptheader/AcceptHeaderService.java
@@ -24,9 +24,8 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.isis.applib.annotation.Programmatic;
 
+// tag::refguide[]
 public interface AcceptHeaderService {
-
-    @Programmatic
-    List<MediaType> getAcceptableMediaTypes();
-
+    List<MediaType> getAcceptableMediaTypes();  // <1>
 }
+// end::refguide[]
diff --git a/core/applib/src/main/doc/modules/applib-svc/examples/services/command/CommandContext.java b/core/applib/src/main/doc/modules/applib-svc/examples/services/command/CommandContext.java
index 95cdf54..477fa03 100644
--- a/core/applib/src/main/doc/modules/applib-svc/examples/services/command/CommandContext.java
+++ b/core/applib/src/main/doc/modules/applib-svc/examples/services/command/CommandContext.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.applib.services.command;
 
+import lombok.Getter;
+
 import javax.enterprise.context.RequestScoped;
 import javax.inject.Named;
 
@@ -35,6 +37,7 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
  * {@link org.apache.isis.applib.annotation.DomainService}.  This means that it is automatically registered and
  * available for use; no further configuration is required.
  */
+// tag::refguide[]
 @Service
 @Named("isisApplib.CommandContext")
 @RequestScoped
@@ -43,12 +46,9 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
 @Qualifier("Default")
 public class CommandContext {
 
+    @Getter
     private Command command;
 
-    public Command getCommand() {
-        return command;
-    }
-
     /**
      * <b>NOT API</b>: intended to be called only by the framework.
      */
@@ -57,3 +57,4 @@ public class CommandContext {
     }
 
 }
+// end::refguide[]
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/about.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/about.adoc
index f6d1c63..6312a92 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/about.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/about.adoc
@@ -84,68 +84,47 @@ Alternatively the object can be instantiated simply using `new`, then services i
 
 The framework provides default implementations for many of the domain services.
 This is convenient, but sometimes you will want to replace the default implementation with your own service implementation.
+This is most commonly done using the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[@Order] annotation.
+Inspect the source code of the default implementation to determine which value to use.
+The `OrderPrecedence` class provides some pre-defined precedences:
 
-The trick is to use the xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`]
-attribute, specifying a low number (typically `"1"`).
+[source,java]
+----
+include::applib-ant:example$annotation/OrderPrecedence.java[tags=refguide]
+----
+
+Spring offers a number of other mechanisms to specify the ordering; these can also be used.
+
+For some domain services, all framework will delegate to all available implementation, using a chain-of-responsibility pattern):
+These include:
 
-[NOTE]
-====
-For a small number of domain services, all implementations are used (following the chain-of-responsibility pattern), not just the first one.
-The services in question are:
 xref:refguide:applib-svc:presentation-layer-spi/ContentMappingService.adoc[`ContentMappingService`],
 xref:refguide:applib-svc:presentation-layer-spi/GridSystemService.adoc[`GridSystemService`], and
 xref:refguide:applib-svc:presentation-layer-spi/RoutingService.adoc[`RoutingService`].
-====
 
 For example, suppose you wanted to provide your own implementation of xref:refguide:applib-svc:presentation-layer-spi/LocaleProvider.adoc[`LocaleProvider`].
-Here's how:
+The default implementation has these annotations:
 
 [source,java]
 ----
-@DomainService(
-        nature = NatureOfService.DOMAIN
-)
-@DomainServiceLayout(
-        menuOrder = "1"                             // <1>
-)
-public class MyLocaleProvider implements LocaleProvider {
-    @Override
-    public Locale getLocale() {
-        return ...
-    }
-}
+@Service
+@Named("isisWicketViewer.LocaleProviderWicket")
+@Order(OrderPrecedence.MIDPOINT)
+@Qualifier("Wicket")
+@Log4j2
+public class LocaleProviderWicket implements LocaleProvider { /* ... */ }
 ----
-<1> takes precedence over the default implementation.
 
-
-It's also quite common to want to decorate the existing implementation (ie have your own implementation delegate to the default); this is also possible and quite easy.
-The idea is to have the framework inject all implementations of the service, and then to delegate to the first one that isn't "this" one:
+To override this, use something like:
 
 [source,java]
 ----
-@DomainService(nature=NatureOfService.DOMAIN)
-@DomainServiceLayout(
-        menuOrder = "1"                                                                 // <1>
-)
-public class MyLocaleProvider implements LocaleProvider {
-    @Override
-    public Locale getLocale() {
-        return getDelegateLocaleProvider().getLocale();                                 // <2>
-    }
-    private LocaleProvider getDelegateLocaleProvider() {
-        return Iterables.tryFind(localeProviders, input -> input != this).orNull();     // <3>
-    }
-    @Inject
-    List<LocaleProvider> localeProviders;                                               // <4>
-}
+@Service
+@Order(OrderPrecedence.HIGH)
+public class MyLocaleProvider implements LocaleProvider { /* ... */ }
 ----
-<1> takes precedence over the default implementation when injected elsewhere.
-<2> this implementation merely delegates to the default implementation
-<3> find the first implementation that isn't _this_ implementation (else infinite loop!)
-<4> injects all implementations, including this implemenation
-
-The above code could be improved by caching the delegateLocaleProvider once located (rather than searching each time).
 
+It's not necessary to annotate `@Named` or `@Qualifier`, but could be considered good practice.
 
 
 == Command and Events
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api.adoc
index b02650b..c29a8fd 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api.adoc
@@ -2,6 +2,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 [...]
 include::_attributes.adoc[]
 :page-partial:
+:page-role: -toc -title
 
 
 
@@ -20,18 +21,6 @@ It also lists their corresponding implementation, either a default implementatio
 |Implementation
 |Notes
 
-|xref:refguide:applib-svc:application-layer-api/ActionInvocationContext.adoc[`o.a.i.applib.` +
-`services.actinv` +
-`ActionInvocation-` +
-`Context`]
-|Request-scoped access to whether action is invoked on object and/or on collection of objects
-|`ActionInvocationContext` +
-``o.a.i.core`` +
-``isis-core-applib``
-|API is also concrete class
-
-
-
 |xref:refguide:applib-svc:application-layer-api/BackgroundService.adoc[`o.a.i.applib.` +
 `services.background` +
 `BackgroundService`]
@@ -43,6 +32,8 @@ It also lists their corresponding implementation, either a default implementatio
 |depends on: +
 xref:refguide:applib-svc:application-layer-spi/BackgroundCommandService.adoc[`BackgroundCommand-Service`]
 
+NOTE: TODO: v2: this has been replaced by `WrapperFactory#async(...)`
+
 
 |xref:refguide:applib-svc:application-layer-api/CommandContext.adoc[`o.a.i.applib.` +
 `services.command` +
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/ActionInvocationContext.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/ActionInvocationContext.adoc
deleted file mode 100644
index 47b4432..0000000
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/ActionInvocationContext.adoc
+++ /dev/null
@@ -1,102 +0,0 @@
-[[ActionInvocationContext]]
-= `ActionInvocationContext` (deprecated)
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-include::_attributes.adoc[]
-:page-partial:
-
-
-// TODO: v2: remove this domain service
-
-The `ActionInvocationContext` domain service is a xref:refguide:applib-ant:RequestScoped.adoc[`@RequestScoped`] service intended to support the implementation of "bulk" actions annotated with xref:refguide:applib-ant:Action.adoc#invokeOn[`@Action#invokeOn()`].
-This allows the user to select multiple objects in a table and then invoke the same action against all of them.
-
-When an action is invoked in this way, this service allows each object instance to "know where it is" in the collection; it acts a little like an iterator.
-In particular, an object can determine if it is the last object to be called, and so can perform special processing, eg to return a summary calculated result.
-
-[WARNING]
-====
-Bulk actions are now deprecated, which means that this service is also deprecated.
-
-Instead, the recommended technique is to define a view model to wrap around the collection, and then to use an action on the view model, associated with the collection and with a collection parameter), to act upon the selected items of the collection.
-====
-
-== API & Implementation
-
-The API defined by the service is:
-
-[source,java]
-----
-@DomainService(nature = NatureOfService.DOMAIN)
-@RequestScoped                                        // <1>
-public static class ActionInvocationContext {
-    public InvokedOn getInvokedOn() { /* ... */ }           // <2>
-    public List<Object> getDomainObjects() { /* ... */ }    // <3>
-    public int getSize() { /* ... */ }
-    public int getIndex() { /* ... */ }                     // <4>
-    public boolean isFirst() { /* ... */ }
-    public boolean isLast() { /* ... */ }
-}
-----
-<1> is xref:refguide:applib-ant:RequestScoped.adoc[`@RequestScoped`], so this domain service instance is scoped to a particular request and is then destroyed
-<2> an enum set to either `OBJECT` (if action has been invoked on a single object) or `COLLECTION` (if has been invoked on a collection).
-<3> returns the list of domain objects which are being acted upon
-<4> is the 0-based index to the object being acted upon.
-
-
-To provide an alternative implementation, subclass and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
-
-
-== Usage
-
-For actions that are void or that return null, Apache Isis will return to the list once executed.
-But for bulk actions that are non-void, Apache Isis will render the returned object/value from the last object invoked (and simply discards the object/value of all actions except the last).
-
-One idiom is for the domain objects to also use the xref:refguide:applib-svc:core-domain-api/Scratchpad.adoc[`Scratchpad`] service to share information, for example to aggregate values.
-The `ActionInvocationContext#isLast()` method can then be used to determine if all the information has been gathered, and then do something with it (eg derive variance across a range of values, render a graph etc).
-
-More prosaically, the `ActionInvocationContext` can be used to ensure that the action behaves appropriately depending on how it has been invoked (on a single object and/or a collection) whether it is called in bulk mode or regular mode.
-Here's a snippet of code from the bulk action in the Isis addon example https://github.com/isisaddons/isis-app-todoapp/[todoapp] (not ASF):
-
-[source,java]
-----
-public class ToDoItem ... {
-    @Action(invokeOn=InvokeOn.OBJECTS_AND_COLLECTIONS)
-    public ToDoItem completed() {
-        setComplete(true);
-        ...
-        return actionInvocationContext.getInvokedOn() == InvokedOn.OBJECT
-                ? this  // <1>
-                : null; // <2>
-    }
-    @Inject
-    ActionInvocationContext actionInvocationContext;
-}
-----
-<1> if invoked as a regular action, return this object;
-<2> otherwise (if invoked on collection of objects), return null, so that the xref:vw:ROOT:about.adoc[Wicket viewer] will re-render the list of objects
-
-
-
-
-
-== Unit testing support
-
-The `ActionInvocationContext` class also has a couple of static factory methods intended to support unit testing:
-
-[source,java]
-----
-@DomainService(nature = NatureOfService.DOMAIN)
-@RequestScoped
-public class ActionInvocationContext {
-    public static ActionInvocationContext onObject(final Object domainObject) {
-        return new ActionInvocationContext(InvokedOn.OBJECT, Collections.singletonList(domainObject));
-    }
-    public static ActionInvocationContext onCollection(final Object... domainObjects) {
-        return onCollection(Arrays.asList(domainObjects));
-    }
-    public static ActionInvocationContext onCollection(final List<Object> domainObjects) {
-        return new ActionInvocationContext(InvokedOn.COLLECTION, domainObjects);
-    }
-    ...
-}
-----
\ No newline at end of file
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/BackgroundService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/BackgroundService.adoc
index 076d58e..a742d9e 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/BackgroundService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/BackgroundService.adoc
@@ -1,13 +1,13 @@
 [[BackgroundService]]
-= `BackgroundService2`
+= `BackgroundService`
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 include::_attributes.adoc[]
 :page-partial:
 
 
-The `BackgroundService2` domain service (and its various supertypes), and also the companion xref:refguide:applib-svc:application-layer-spi/BackgroundCommandService.adoc[`BackgroundCommandService2`] SPI service, enable commands to be persisted such that they may be invoked in the background.
+The `BackgroundService` domain service (and its various supertypes), and also the companion xref:refguide:applib-svc:application-layer-spi/BackgroundCommandService.adoc[`BackgroundCommandService2`] SPI service, enable commands to be persisted such that they may be invoked in the background.
 
-The `BackgroundService2` is responsible for capturing a memento representing the command in a typesafe way, and persisting it rather than executing it directly.
+The `BackgroundService` is responsible for capturing a memento representing the command in a typesafe way, and persisting it rather than executing it directly.
 
 The default `BackgroundServiceDefault` implementation works by using a proxy wrapper around the target so that it can capture the action to invoke and its arguments.
 
@@ -27,7 +27,7 @@ The API is:
 
 [source,java]
 ----
-public interface BackgroundService2 {
+public interface BackgroundService {
     <T> T execute(final T object);                              // <1>
     <T> T executeMixin(Class<T> mixinClass, Object mixedIn);    // <2>
 }
@@ -37,7 +37,7 @@ public interface BackgroundService2 {
 
 The default implementation is provided by core (`o.a.i.core.runtime.services.background.BackgroundServiceDefault`).
 
-To provide an alternative implementation, subclass and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To provide an alternative implementation, subclass and link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] or equivalent (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 == Usage
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/CommandContext.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/CommandContext.adoc
index d65fa07..223f401 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/CommandContext.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/CommandContext.adoc
@@ -6,37 +6,39 @@ include::_attributes.adoc[]
 
 
 
-The `CommandContext` service is a xref:refguide:applib-ant:RequestScoped.adoc[request-scoped] service that reifies the invocation of an action on a domain object into an object itself. This reified information is encapsulated within the `Command` object.
+The `CommandContext` service is a xref:refguide:applib-ant:RequestScoped.adoc[request-scoped] service that reifies the invocation of an action on a domain object into an object itself.
+This reified information is encapsulated within the `Command` object.
 
 By default, the `Command` is held in-memory only; once the action invocation has completed, the `Command` object is gone.
 The optional supporting xref:refguide:applib-svc:application-layer-spi/CommandService.adoc[`CommandService`] enables the implementation of `Command` to be pluggable.
-With an appropriate implementation (eg as provided by the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s command module's xref:refguide:applib-svc:application-layer-spi/CommandService.adoc[`CommandService`]) the `Command` may then be persisted.
+With an appropriate implementation
+// TODO: v2: update for extensions (eg as provided by the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s command module's xref:refguide:applib-svc:application-layer-spi/CommandService.adoc[`CommandService`])
+the `Command` may then be persisted.
 
-The primary use case for persistent ``Command``s is in support of background commands; they act as a parent to any background commands that can be persisted either explicitly using the xref:refguide:applib-svc:application-layer-api/BackgroundService.adoc[`BackgroundService`], or implicitly by way of the xref:refguide:applib-ant:Action.adoc#command[`@Action#command()`] annotation.
-
-There are a number of related use cases:
+There are a number of use cases:
 
 * to enable profiling of the running application (which actions are invoked then most often, what is their response time)
 * if a xref:refguide:applib-svc:persistence-layer-spi/PublisherService.adoc[`PublisherService`] is configured, they provide better traceability as the `Command` is also correlated with any published events, again through the unique `transactionId` GUID
-* if a xref:refguide:applib-svc:spi/AuderService.adoc[`AuditerService`] is configured, they provide better audit information, since the `Command` (the 'cause' of an action) can be correlated to the audit records (the "effect" of the action) through the `transactionId` GUID
-
-However, while persistent ``Command``s _can_ be used for these use cases, it is recommended instead to use the xref:refguide:applib-svc:application-layer-api/InteractionContext.adoc[`InteractionContext`] service and persistent implementations of the ``Interaction`` object, eg as provided by the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s publishmq module.
-
-
+* if a xref:refguide:applib-svc:spi/AuditerService.adoc[`AuditerService`] is configured, they provide better audit information, since the `Command` (the 'cause' of an action) can be correlated to the audit records (the "effect" of the action) through the `transactionId` GUID
+* to allow ``Command``s to be replicated and replayed to another system (usually for testing or dual-running/migration purposes).
 
+In general, though, However, while persistent ``Command``s _can_ be used for these use cases, it is recommended instead to use the xref:refguide:applib-svc:application-layer-api/InteractionContext.adoc[`InteractionContext`] service and persistent implementations of the ``Interaction`` object, eg as provided by the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s publishmq module.
 
 
-== Screencast
 
 
-The link:https://www.youtube.com/watch?v=tqXUZkPB3EI[screencast] provides a run-through of the command (profiling) service, auditing service, publishing service (note: auditing service has since been replaced by `AuditerService`, and publishing service by `PublisherService`).
-It also shows how commands can be run in the background either explicitly by scheduling through the background service or implicitly by way of a framework annotation.
 
-
-[NOTE]
-====
-Note that this screencast shows an earlier version of the xref:vw:ROOT:about.adoc[Wicket viewer] UI (specifically, pre 1.8.0).
-====
+//== Screencast
+//
+//
+//The link:https://www.youtube.com/watch?v=tqXUZkPB3EI[screencast] provides a run-through of the command (profiling) service, auditing service, publishing service (note: auditing service has since been replaced by `AuditerService`, and publishing service by `PublisherService`).
+//It also shows how commands can be run in the background either explicitly by scheduling through the background service or implicitly by way of a framework annotation.
+//
+//
+//[NOTE]
+//====
+//Note that this screencast shows an earlier version of the xref:vw:ROOT:about.adoc[Wicket viewer] UI (specifically, pre 1.8.0).
+//====
 
 
 
@@ -54,10 +56,10 @@ public class CommandContext {
 }
 ----
 
-This class (`o.a.i.applib.services.CommandContext`) is also the default implementation.
+This class (`o.a.i.applib.services.command.CommandContext`) is also the default implementation.
 
 Under normal circumstances there shouldn't be any need to replace this implementation with another.
-But if you do need to for some reason, then subclass and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+But if you do need to for some reason, then subclass and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 The `Command` type referenced above is in fact an interface, defined as:
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/InteractionContext.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/InteractionContext.adoc
index 248fb3a..23bcf22 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/InteractionContext.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/InteractionContext.adoc
@@ -19,8 +19,8 @@ xref:refguide:applib-ant:Action.adoc#invokeOn[`@Action#invokeOn()`]), then this
 per selected object (not one `Interaction` with multiple top-level ``Execution``s).
 
 
-It is possible for ``Interaction.Execution``s to be persisted; this is supported by the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s publishmq module, for example.  Persistent
-``Interaction``s support several use cases:
+It is possible for ``Interaction.Execution``s to be persisted; this is supported by the (non-ASF) link:https://platform.incode.org[Incode Platform^]'s publishmq module, for example.
+Persistent``Interaction``s support several use cases:
 
 * they enable profiling of the running application (which actions are invoked then most often, what is their response
 time)
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/MessageService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/MessageService.adoc
index debb975..0fbd3c5 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/MessageService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/MessageService.adoc
@@ -61,5 +61,5 @@ public Order addItem(Product product, @ParameterLayout(named="Quantity") int qua
 
 The core framework provides a default implementation of this service, `o.a.i.core.runtime.services.message.MessageServiceDefault`.
 
-To use an alternative implementation, implement the `MessageService` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `MessageService` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/SessionManagementService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/SessionManagementService.adoc
index eff1080..65fdc19 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/SessionManagementService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-api/SessionManagementService.adoc
@@ -43,5 +43,5 @@ Any domain objects that were created in the "previous" session are no longer usa
 The core framework provides a default implementation of this service (`o.a.i.core.runtime.services.xactn.SessionManagementServiceDefault`).
 
 
-To use an alternative implementation, implement the `SessionManagementService` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `SessionManagementService` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-spi.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-spi.adoc
index 0354ebb..803625b 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-spi.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/application-layer-spi.adoc
@@ -2,6 +2,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 [...]
 include::_attributes.adoc[]
 :page-partial:
+:page-role: -toc -title
 
 
 Domain service SPIs influence how the framework handles application layer concerns, for example which home page to render to the end-user.
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi.adoc
index b4492f5..c1678d4 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi.adoc
@@ -2,7 +2,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 [...]
 include::_attributes.adoc[]
 :page-partial:
-
+:page-role: -toc -title
 
 Bootstrapping SPIs influence how the framework locates the components that make up the running application.
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi/ClassDiscoveryService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi/ClassDiscoveryService.adoc
index 1480007..05fb876 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi/ClassDiscoveryService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/bootstrapping-spi/ClassDiscoveryService.adoc
@@ -41,7 +41,7 @@ This implementation is also used to discover domain services annotated with xref
 Currently this logic uses the implementation directly, so is not pluggable.
 ====
 
-To use an alternative implementation, implement the `ClassDiscoveryService` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `ClassDiscoveryService` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api.adoc
index f603094..385c596 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api.adoc
@@ -2,7 +2,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 [...]
 include::_attributes.adoc[]
 :page-partial:
-
+:page-role: -toc -title
 
 The core/domain APIs provide general-purpose services to the domain objects, for example obtaining the current time or user, or instantiating domain objects.
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/EventBusService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/EventBusService.adoc
index 17fdf50..c3a1ad5 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/EventBusService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/EventBusService.adoc
@@ -48,7 +48,7 @@ This should be done in their xref:refguide:applib-ant:PostConstruct.adoc[`@PostC
 
 
 
-To use an alternative implementation, implement the `EventBusService` domain service and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `EventBusService` domain service and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
@@ -85,7 +85,7 @@ public class MySubscribingDomainService {
 <1> subscribers are typically not visible in the UI, so specify a `DOMAIN` nature
 <2> It's important that subscribers register before any domain services that might emit events on the event bus service.
 For example, the xref:secman:ROOT:about.adoc[SecMan extension] provides a domain service that automatically seeds certain domain entities; these will generate xref:refguide:applib-cm:classes/lifecycleevent.adoc[lifecycle events] and so any subscribers must be registered before such seed services.
-The easiest way to do this is to use the xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] attribute.
+The easiest way to do this is to use the link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation.
 <3> register with the event bus service during xref:refguide:applib-ant:PostConstruct.adoc[`@PostConstruct`]
     initialization
 <4> corresponding deregister when shutting down
@@ -93,11 +93,6 @@ The easiest way to do this is to use the xref:refguide:applib-ant:DomainServiceL
 This works for both singleton (application-scoped) and also xref:refguide:applib-ant:RequestScoped.adoc[`@RequestScoped`] domain services.
 
 
-[TIP]
-====
-The xref:refguide:applib-cm:classes/super.adoc#AbstractSubscriber[`AbstractSubscriber`] class automatically performs this registration.
-As a convenience, it is also annotated with the xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] attribute.
-====
 
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/Scratchpad.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/Scratchpad.adoc
index 8311a72..8299541 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/Scratchpad.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/core-domain-api/Scratchpad.adoc
@@ -32,7 +32,7 @@ This class (`o.a.i.applib.services.scratchpad.Scratchpad`) is also the implement
 And, as you can see, the service is just a request-scoped wrapper around a `java.util.Map`.
 
 
-To use an alternative implementation, subclass and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, subclass and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api.adoc
index 4fec24e..e948830 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api.adoc
@@ -2,7 +2,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 [...]
 include::_attributes.adoc[]
 :page-partial:
-
+:page-role: -toc -title
 
 The integration APIs provide functionality to the domain objects to integrate with other bounded contexts, for example sending an email or serializing an object out to XML.
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/BookmarkService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/BookmarkService.adoc
index 2023d9e..083423f 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/BookmarkService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/BookmarkService.adoc
@@ -57,7 +57,7 @@ public interface BookmarkService {
 
 The core framework provides a default implementation of this API, namely `o.a.i.core.metamodel.services.bookmarks.BookmarkServiceInternalDefault`
 
-To use an alternative implementation, implement `BookmarkService` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement `BookmarkService` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/JaxbService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/JaxbService.adoc
index 699c117..ef95e38 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/JaxbService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/JaxbService.adoc
@@ -43,7 +43,7 @@ a persistent entity).  The enum indicates whether these schemas should be includ
 
 Apache Isis provides a default implementation of the service, `o.a.i.applib.services.jaxb.JaxbServiceDefault`.
 
-To use an alternative implementation, implement `JaxbService` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement `JaxbService` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/MementoService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/MementoService.adoc
index 5a915ec..e3c1ace 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/MementoService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/integration-api/MementoService.adoc
@@ -53,7 +53,7 @@ In fact, the `MementoServiceDefault` implementation does provide a mechanism to
 not part of the `MementoService` public API. Note also that the encoding method is not pluggable.
 ====
 
-To use an alternative implementation, implement `MementoService` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement `MementoService` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 The types of objects that are supported by the `MementoService` are implementation-specific, but would typically
 include all the usual value types as well as Apache Isis' `Bookmark` class (to represent references to arbitrary
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/metadata-api.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/metadata-api.adoc
index e394556..c71ea9f 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/metadata-api.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/metadata-api.adoc
@@ -2,7 +2,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 [...]
 include::_attributes.adoc[]
 :page-partial:
-
+:page-role: -toc -title
 
 The metadata APIs provide access to the framework's internal metamodel.  These are generally of use to support development-time activities, for example creating custom UIs through Swagger.
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api.adoc
index 6cee850..3936318 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api.adoc
@@ -2,7 +2,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 [...]
 include::_attributes.adoc[]
 :page-partial:
-
+:page-role: -toc -title
 
 
 The persistence layer APIs provide domain objects with tools to manage the interactions with the persistence layer, for example adding on-the-fly caching to queries that are called many times within a loop.
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api/QueryResultsCache.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api/QueryResultsCache.adoc
index c76d97e..1293116 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api/QueryResultsCache.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-api/QueryResultsCache.adoc
@@ -57,7 +57,7 @@ public class QueryResultsCache {
 
 This class (`o.a.i.applib.services.queryresultscache.QueryResultsCache`) is also the implementation.
 
-To use an alternative implementation, subclass `QueryResultsCache` and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, subclass `QueryResultsCache` and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-spi.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-spi.adoc
index 2c6918c..9790204 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-spi.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/persistence-layer-spi.adoc
@@ -2,7 +2,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 [...]
 include::_attributes.adoc[]
 :page-partial:
-
+:page-role: -toc -title
 
 
 The persistence layer SPIs influence how the framework persists domain objects, for example controlling how to create an audit log of changes to domain objects.
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api.adoc
index 077f908..90f8d70 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api.adoc
@@ -2,7 +2,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 [...]
 include::_attributes.adoc[]
 :page-partial:
-
+:page-role: -toc -title
 
 
 Domain service APIs for the presentation layer allow the domain objects to control aspects of the user interface.
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/AcceptHeaderService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/AcceptHeaderService.adoc
index ac5aeae..b8874c9 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/AcceptHeaderService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/AcceptHeaderService.adoc
@@ -19,25 +19,19 @@ The API defined by the service is:
 
 [source,java]
 ----
-@DomainService(nature = NatureOfService.DOMAIN)
-@RequestScoped                                      // <1>
-public interface AcceptHeaderService {
-    @Programmatic
-    List<MediaType> getAcceptableMediaTypes();      // <2>
-}
+include::example$services/acceptheader/AcceptHeaderService.java[tags=refguide]
 ----
-<1> is xref:refguide:applib-ant:RequestScoped.adoc[`@RequestScoped`], so this domain service instance is scoped to a particular request and is then destroyed
-<2> returns the list of media types found in the HTTP Accept header.
+<1> returns the list of media types found in the HTTP Accept header.
 
-
-The default implementation is provided by `o.a.i.v.ro.rendering.service.acceptheader.AcceptHeaderServiceForRest`.
+The default implementation is provided by `o.a.i.v.ro.rendering.service.acceptheader.AcceptHeaderServiceForRest`, and is xref:refguide:applib-ant:RequestScoped.adoc[`@RequestScoped`].
 
 [NOTE]
 ====
 Note that the service will only return a list when the request is initiated through the xref:vro:ROOT:about.adoc[Restful Objects viewer].  Otherwise the service will return `null`.
 ====
 
-To use an alternative implementation, use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
+
 
 
 == Usage
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/GuiceBeanProvider.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/GuiceBeanProvider.adoc
index 93f7686..2674cd2 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/GuiceBeanProvider.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-api/GuiceBeanProvider.adoc
@@ -36,7 +36,7 @@ public interface GuiceBeanProvider {
 
 The xref:vw:ROOT:about.adoc[Wicket viewer] this provides a default implementation of this service.
 
-To use an alternative implementation, implement the `GuideBeanProvider` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `GuideBeanProvider` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi.adoc
index fafed36..ce06b74 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi.adoc
@@ -2,7 +2,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 [...]
 include::_attributes.adoc[]
 :page-partial:
-
+:page-role: -toc -title
 
 
 Domain service SPIs for the presentation layer influence how the Apache Isis viewers behave.
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/ContentMappingService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/ContentMappingService.adoc
index 994731b..efc35de 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/ContentMappingService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/ContentMappingService.adoc
@@ -13,10 +13,8 @@ See xref:runtime-services:ROOT:presentation-layer/ContentNegotiationService.adoc
 
 [NOTE]
 ====
-Unlike most other domain services, the framework (that is, `ContentNegotiationService`) will check _all_ available
-implementations of `ContentMappingService` to convert the domain object to the requested media type, rather than merely
-the first implementation found; in other words it uses the chain-of-responsibility pattern.  Services are checked
-in the ordering defined by xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`]).
+Unlike most other domain services, the framework (that is, `ContentNegotiationService`) will check _all_ available implementations of `ContentMappingService` to convert the domain object to the requested media type, rather than merely the first implementation found; in other words it uses the chain-of-responsibility pattern.
+Services are checked in the ordering defined by the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation.
 The mapped object used will be the first non-`null` result returned by an implementation.
 ====
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/GridSystemService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/GridSystemService.adoc
index 4f5bd29..bad3713 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/GridSystemService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/GridSystemService.adoc
@@ -15,13 +15,10 @@ The framework provides a single such grid implementation, namely for Bootstrap3.
 
 [NOTE]
 ====
-Unlike most other domain services, the framework will check _all_ available implementations of `GridSystemService` to
-obtain available grid systems, rather than merely the first implementation found; in other words it uses the
-chain-of-responsibility pattern.  Services are called in the order defined by
-xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`]).
+Unlike most other domain services, the framework will check _all_ available implementations of `GridSystemService` to obtain available grid systems, rather than merely the first implementation found; in other words it uses the chain-of-responsibility pattern.
+Services are called in the order defined by the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation).
 
-Note though that each concrete implementation must also provide corresponding Wicket viewer components capable of
-interpreting the grid layout.
+Note though that each concrete implementation must also provide corresponding Wicket viewer components capable of interpreting the grid layout.
 ====
 
 
@@ -41,8 +38,9 @@ public interface GridSystemService<G extends Grid> {
     void minimal(G grid, Class<?> domainClass);                 // <7>
 }
 ----
-<1> The concrete subclass of `Grid` supported by this implementation. As noted in the introduction, there can be multiple implementations of this service,  but there can only be one implementation per concrete subclass.  As is normal practice,
-the service with the lowest xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] takes precedence.
+<1> The concrete subclass of `Grid` supported by this implementation.
+As noted in the introduction, there can be multiple implementations of this service,  but there can only be one implementation per concrete subclass.
+As is normal practice, these are ordered as per the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] or equivalent annotation.
 <2> the target namespace for this grid system.  This is used when generating the XML.  The Bootstrap3 grid system provided by the framework returns the value `http://isis.apache.org/applib/layout/grid/bootstrap3`.
 <3> the schema location for the XSD.  The Bootstrap3 grid system provided by the framework returns the value `http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd`.
 <4> a default grid, eg two columns in ratio 4:8.  Used when no existing grid layout exists for a domain class.
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/HintStore.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/HintStore.adoc
index 4a5eab7..614a1be 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/HintStore.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/HintStore.adoc
@@ -42,7 +42,7 @@ per the xref:refguide:applib-svc:integration-api/BookmarkService.adoc[`BookmarkS
 
 The core framework provides a default implementation of this service (`org.apache.isis.viewer.wicket.viewer.services.HintStoreUsingWicketSession`).
 
-To use an alternative implementation, implement the `HintStore` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `HintStore` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 == View models
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/RoutingService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/RoutingService.adoc
index aa9acf9..821707e 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/RoutingService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/RoutingService.adoc
@@ -25,11 +25,9 @@ Currently the routing service is used only by the xref:vw:ROOT:about.adoc[Wicket
 
 [NOTE]
 ====
-Unlike most other domain services, the framework will check _all_ available implementations of
-`RoutingService` to return a route, rather than the first implementation found; in other words it uses the
-chain-of-responsibility pattern.  Services are called in the order defined by
-xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`]).  The route used will be the
-result of the first implementation checked that declares that it can provide a route.
+Unlike most other domain services, the framework will check _all_ available implementations of `RoutingService` to return a route, rather than the first implementation found; in other words it uses the chain-of-responsibility pattern.
+Services are called in the order defined by the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (or equivalent).
+The route used will be the result of the first implementation checked that declares that it can provide a route.
 ====
 
 
@@ -58,7 +56,7 @@ The framework provides a default implementation - `RoutingServiceDefault` - whic
 It uses the xref:refguide:applib-svc:application-layer-spi/HomePageProviderService.adoc[`HomePageProviderService`].
 
 There can be multiple implementations of `RoutingService` registered.
-These are checked in turn (chain of responsibility pattern), ordered according to xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+These are checked in turn (chain of responsibility pattern), ordered according to the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation or equivalent (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 The route from the first service that returns `true` from its `canRoute(...)` method will be used.
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/TableColumnOrderService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/TableColumnOrderService.adoc
index 18976c2..4a27d1b 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/TableColumnOrderService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/TableColumnOrderService.adoc
@@ -29,7 +29,7 @@ public interface TableColumnOrderService {
 <1> for the parent collection owned by the specified parent and collection Id, return the set of property ids in the same or other order.
 <2> for the standalone collection of the specified type, return the set of property ids in the same or other order, else return `null` if provides no reordering.
 
-There can be multiple implementations of `TableColumnOrderService` registered, ordered as per xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`].
+There can be multiple implementations of `TableColumnOrderService` registered, ordered as per the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (or equivalent).
 The ordering provided by the first such service that returns a non-`null` value will be used.
 If all provided implementations return `null`, then the framework will fallback to a default implementation.
 
@@ -40,7 +40,7 @@ If all provided implementations return `null`, then the framework will fallback
 The framework provides a fallback implementation of this service, namely `TableColumnOrderService.Default`.
 
 There can be multiple implementations of `TableColumnOrderService registered.
-These are checked in turn (chain of responsibility pattern), ordered according to xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+These are checked in turn (chain of responsibility pattern), ordered according to the Spring link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`Order`] annotation, or equivalent (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 The order from the first service that returns a non null value will be used.
 
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/UrlEncodingService.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/UrlEncodingService.adoc
index 8178c61..c567437 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/UrlEncodingService.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/presentation-layer-spi/UrlEncodingService.adoc
@@ -46,5 +46,5 @@ The framework provides a default implementation -- `UrlEncodingServiceWithCompre
 As already noted, be aware that the maximum length of a URL should not exceed 2083 characters.
 For large view models, there's the possibility that this limit could be exceeded; in such cases register an alternative implementation of this service.
 
-To use an alternative implementation, implement the `UrlEncodingService` interface and use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, implement the `UrlEncodingService` interface and use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
diff --git a/core/applib/src/main/doc/modules/applib-svc/pages/testing.adoc b/core/applib/src/main/doc/modules/applib-svc/pages/testing.adoc
index 260d28e..4e15f74 100644
--- a/core/applib/src/main/doc/modules/applib-svc/pages/testing.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/pages/testing.adoc
@@ -2,7 +2,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 [...]
 include::_attributes.adoc[]
 :page-partial:
-
+:page-role: -toc -title
 
 
 The testing APIs provide functionality to domain objects for use when testing or demoing an application.
diff --git a/core/applib/src/main/doc/modules/applib-svc/partials/module-nav.adoc b/core/applib/src/main/doc/modules/applib-svc/partials/module-nav.adoc
index d816f60..595e922 100644
--- a/core/applib/src/main/doc/modules/applib-svc/partials/module-nav.adoc
+++ b/core/applib/src/main/doc/modules/applib-svc/partials/module-nav.adoc
@@ -33,8 +33,6 @@
 
 
 ** xref:refguide:applib-svc:application-layer-api.adoc[Application Layer API]
-*** xref:refguide:applib-svc:application-layer-api/ActionInvocationContext.adoc[ActionInvocationContext]
-
 *** xref:refguide:applib-svc:application-layer-api/BackgroundService.adoc[BackgroundService]
 **** xref:refguide:applib-svc:application-layer-api/BackgroundService/BackgroundCommandExecution.adoc[BackgroundCommandExecution]
 **** xref:refguide:applib-svc:application-layer-api/BackgroundService/Quartz.adoc[Quartz]
diff --git a/core/applib/src/main/java/org/apache/isis/applib/annotation/OrderPrecedence.java b/core/applib/src/main/java/org/apache/isis/applib/annotation/OrderPrecedence.java
index a62cf10..201061f 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/annotation/OrderPrecedence.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/annotation/OrderPrecedence.java
@@ -23,6 +23,7 @@ import org.springframework.core.Ordered;
 
 import lombok.experimental.UtilityClass;
 
+// tag::refguide[]
 @UtilityClass
 public class OrderPrecedence {
 
@@ -55,4 +56,5 @@ public class OrderPrecedence {
      */
     public static final int LOW = OrderPrecedence.LOWEST / 2;
 
-}
\ No newline at end of file
+}
+// end::refguide[]
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandContext.java b/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandContext.java
index 95cdf54..c1e116a 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandContext.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandContext.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.applib.services.command;
 
+import lombok.Getter;
+
 import javax.enterprise.context.RequestScoped;
 import javax.inject.Named;
 
@@ -43,12 +45,9 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
 @Qualifier("Default")
 public class CommandContext {
 
+    @Getter
     private Command command;
 
-    public Command getCommand() {
-        return command;
-    }
-
     /**
      * <b>NOT API</b>: intended to be called only by the framework.
      */
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/command/spi/CommandService.java b/core/applib/src/main/java/org/apache/isis/applib/services/command/spi/CommandService.java
index 080e91e..3fc3f80 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/command/spi/CommandService.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/command/spi/CommandService.java
@@ -26,8 +26,12 @@ import org.apache.isis.applib.services.command.Command;
 public interface CommandService {
 
     /**
-     * Simply instantiate the appropriate instance of the {@link Command}.  Its members will be populated automatically
-     * by the framework (the {@link Command}'s {@link Command#getTimestamp()}, {@link Command#getUser()} and {@link Command#getUniqueId()}).
+     * Simply instantiate the appropriate instance of the {@link Command}.
+     *
+     * <p>
+     * Its members will be populated automatically by the framework (the {@link Command}'s
+     * {@link Command#getTimestamp()}, {@link Command#getUser()} and {@link Command#getUniqueId()}).
+     * </p>
      */
     Command create();
 
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java b/core/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java
index 99e9444..52687c2 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/iactn/InteractionContext.java
@@ -18,6 +18,8 @@
  */
 package org.apache.isis.applib.services.iactn;
 
+import lombok.Getter;
+
 import javax.enterprise.context.RequestScoped;
 import javax.inject.Named;
 
@@ -44,15 +46,11 @@ import org.apache.isis.applib.annotation.OrderPrecedence;
 @RequestScoped
 public class InteractionContext {
 
-    private Interaction interaction;
-
     /**
-     * Returns the currently active {@link Interaction} for this thread.
-     * @return
+     * The currently active {@link Interaction} for this thread.
      */
-    public Interaction getInteraction() {
-        return interaction;
-    }
+    @Getter                                 // <1>
+    private Interaction interaction;
 
     /**
      * <b>NOT API</b>: intended to be called only by the framework.
@@ -60,5 +58,4 @@ public class InteractionContext {
     public void setInteraction(final Interaction interaction) {
         this.interaction = interaction;
     }
-
 }
diff --git a/core/runtime-services/src/main/doc/modules/runtime-services/pages/application-layer.adoc b/core/runtime-services/src/main/doc/modules/runtime-services/pages/application-layer.adoc
index 9c6133e..87d6b82 100644
--- a/core/runtime-services/src/main/doc/modules/runtime-services/pages/application-layer.adoc
+++ b/core/runtime-services/src/main/doc/modules/runtime-services/pages/application-layer.adoc
@@ -1,7 +1,7 @@
 = Application Layer
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 include::_attributes.adoc[]
-
+:page-role: -toc -title
 
 
 These domain services are internal to the framework, controlling various aspects of the application layer.
diff --git a/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer.adoc b/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer.adoc
index 3aa2df6..c183808 100644
--- a/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer.adoc
+++ b/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer.adoc
@@ -1,7 +1,7 @@
 = Persistence Layer internal SPI
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 include::_attributes.adoc[]
-
+:page-role: -toc -title
 
 
 These domain services are internal to the framework, controlling various aspects of the persistence layer.
diff --git a/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer/PublishingServiceInternal.adoc b/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer/PublishingServiceInternal.adoc
index 457ddee..60e8f5a 100644
--- a/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer/PublishingServiceInternal.adoc
+++ b/core/runtime-services/src/main/doc/modules/runtime-services/pages/persistence-layer/PublishingServiceInternal.adoc
@@ -39,7 +39,7 @@ The service implementation is `o.a.i.c.m.s.publishing.PublishingServiceInternal`
 
 Apache Isis' default implementation of `PublishingServiceInternal` class is automatically registered (it is annotated with `@DomainService`) so no further configuration is required.
 
-To use an alternative implementation, use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 == Related Classes
diff --git a/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer.adoc b/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer.adoc
index 7367181..9e6fba0 100644
--- a/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer.adoc
+++ b/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer.adoc
@@ -1,7 +1,7 @@
 = Presentation Layer
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 include::_attributes.adoc[]
-
+:page-role: -toc -title
 
 
 These domain services are internal to the framework, controlling various aspects of the presentation layer.
diff --git a/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/ContentNegotiationService.adoc b/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/ContentNegotiationService.adoc
index a8d085b..ab238e3 100644
--- a/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/ContentNegotiationService.adoc
+++ b/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/ContentNegotiationService.adoc
@@ -193,7 +193,7 @@ If the property is not set, then the default depends on the xref:refguide:config
 
 Apache Isis' default implementations of `ContentNegotiationService` service are automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
 
-To use an alternative implementation, use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 
diff --git a/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/RepresentationService.adoc b/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/RepresentationService.adoc
index b8e7b16..7d0ae27 100644
--- a/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/RepresentationService.adoc
+++ b/core/runtime-services/src/main/doc/modules/runtime-services/pages/presentation-layer/RepresentationService.adoc
@@ -79,7 +79,7 @@ ie `MemberReprMode`
 As discussed in the introduction, the framework provides a default implementation, `o.a.i.v.ro.rendering.service.RepresentationServiceContentNegotiator`.
 This delegates to xref:core:runtime-services:presentation-layer/ContentNegotiationService.adoc[`ContentNegotiationService`] to generate an alternative representation; but if none is provided then it falls back on generating the representations as defined in the link:http://restfulobjects.org[Restful Objects spec] v1.0.
 
-To use an alternative implementation, use xref:refguide:applib-ant:DomainServiceLayout.adoc#menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:refguide:applib-svc:intro/overriding-the-services.adoc[introduction] to this guide).
+To use an alternative implementation, use Spring's link:https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/annotation/Order.html[`@Order`] annotation (as explained in the xref:refguide:applib-svc:about.adoc#overriding-the-services.adoc[introduction] to this guide).
 
 
 == Registering the Services
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/IsisModuleRuntimeServices.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/IsisModuleRuntimeServices.java
index 7f5793a..fd95d1a 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/IsisModuleRuntimeServices.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/IsisModuleRuntimeServices.java
@@ -24,8 +24,7 @@ import org.springframework.context.annotation.Import;
 import org.apache.isis.codegen.bytebuddy.IsisModuleCodegenByteBuddy;
 import org.apache.isis.runtime.IsisModuleRuntime;
 import org.apache.isis.runtime.services.auth.AuthenticationSessionProviderDefault;
-import org.apache.isis.security.api.authorization.manager.AuthorizationManager;
-import org.apache.isis.runtime.services.background.CommandExecutorServiceDefault;
+import org.apache.isis.runtime.services.command.CommandExecutorServiceDefault;
 import org.apache.isis.runtime.services.bookmarks.BookmarkServiceInternalDefault;
 import org.apache.isis.runtime.services.command.CommandDtoServiceInternalDefault;
 import org.apache.isis.runtime.services.command.CommandServiceDefault;
diff --git a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/background/CommandExecutorServiceDefault.java b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/command/CommandExecutorServiceDefault.java
similarity index 99%
rename from core/runtime-services/src/main/java/org/apache/isis/runtime/services/background/CommandExecutorServiceDefault.java
rename to core/runtime-services/src/main/java/org/apache/isis/runtime/services/command/CommandExecutorServiceDefault.java
index 9c946df..fd6bd6d 100644
--- a/core/runtime-services/src/main/java/org/apache/isis/runtime/services/background/CommandExecutorServiceDefault.java
+++ b/core/runtime-services/src/main/java/org/apache/isis/runtime/services/command/CommandExecutorServiceDefault.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.runtime.services.background;
+package org.apache.isis.runtime.services.command;
 
 import java.sql.Timestamp;
 import java.util.Collections;
diff --git a/migration-notes.adoc b/migration-notes.adoc
index 16926c0..7749e4c 100644
--- a/migration-notes.adoc
+++ b/migration-notes.adoc
@@ -8,6 +8,7 @@ Search also for: "TODO: v2: " in the .adoc documentation.
 
 * `o.a.isis.schema.utils.Xxx` in the applib have moved to `o.a.isis.applib.util.schema`
 * `o.a.isis.schema.utils.jaxbadapters.Xxx` in the applib have moved to `o.a.isis.applib.jaxbadapters`
+* `BackgroundService` replaced by the `WrapperFactory#async(Object)`
 
 
 === Server-Sent-Event (SSE) Support (ISIS-2102)
diff --git a/preview.sh b/preview.sh
index d8c6433..a9214c9 100644
--- a/preview.sh
+++ b/preview.sh
@@ -12,6 +12,7 @@ fi
 
 echo "building ..."
 export ANTORA_CMD=antora
+export CHECK_FOR_STALE_EXAMPLES=skip
 
 echo "\$PLAYBOOK_FILE = $PLAYBOOK_FILE"
 sh build-site.sh $PLAYBOOK_FILE || exit 1
diff --git a/scripts/ci/build-site.sh b/scripts/ci/build-site.sh
index b95b97d..2b4c3eb 100644
--- a/scripts/ci/build-site.sh
+++ b/scripts/ci/build-site.sh
@@ -13,12 +13,14 @@ bash $SCRIPT_DIR/_adoc-copy-examples.sh
 bash $SCRIPT_DIR/_adoc-gen-config.sh
 
 
-# check if anything had not been sync'd
-WC=$(git status --porcelain | wc -l)
-if [ "$WC" -ne "0" ]; then
-  git status --porcelain
-  echo "Some examples are out of date; run sync-adoc.sh and commit, then try again" >&2
-  exit 1
+# check if any examples have not been sync'd
+if [ "$CHECK_FOR_STALE_EXAMPLES" != "skip" ]; then
+  WC=$(git status --porcelain | grep examples | wc -l)
+  if [ "$WC" -ne "0" ]; then
+    git status --porcelain
+    echo "Some examples are out of date; run sync-adoc.sh and commit, then try again" >&2
+    exit 1
+  fi
 fi
 
 bash $SCRIPT_DIR/_adoc-antora.sh ${PROJECT_ROOT_PATH}/$*