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 2017/10/17 04:20:48 UTC

[isis] branch dev/2.0.0/ISIS-1742-remove-deprecations updated (7ac769c -> d609fd9)

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

danhaywood pushed a change to branch dev/2.0.0/ISIS-1742-remove-deprecations
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from 7ac769c  ISIS-1742: tinkering with IsisInjectModule and IsisComponentProviderUsingInstallers, just to separate out the responsibilities a little better.
     new 80fbd3f  ISIS-1742: updates rgsvc.adoc, removes the 'Registering the Service' section throughout
     new 6aaf373  ISIS-1742: rolls ServiceRegistry2 up into ServiceRegistry
     new d609fd9  ISIS-1742: rolls Command3 up into Command

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 ..._application-layer-api_AcceptHeaderService.adoc | 15 ++----
 ...lication-layer-api_ActionInvocationContext.adoc | 12 +----
 ...vc_application-layer-api_BackgroundService.adoc |  6 +--
 ...plication-layer-api_BulkInteractionContext.adoc |  9 ----
 ...rgsvc_application-layer-api_CommandContext.adoc | 17 ++-----
 ...c_application-layer-api_InteractionContext.adoc | 32 ++++++------
 ...rgsvc_application-layer-api_MessageService.adoc |  8 +--
 ...ication-layer-api_SessionManagementService.adoc | 11 +---
 .../_rgsvc_application-layer-api_TitleService.adoc | 10 +---
 ...c_application-layer-api_TransactionService.adoc |  7 +--
 ...rgsvc_application-layer-api_WrapperFactory.adoc |  8 ++-
 ...ication-layer-spi_BackgroundCommandService.adoc |  5 +-
 ...rgsvc_application-layer-spi_CommandService.adoc | 22 ++++----
 ...lication-layer-spi_HomePageProviderService.adoc |  8 ---
 ...vc_bootstrapping-spi_ClassDiscoveryService.adoc | 11 ++--
 .../rgsvc/_rgsvc_core-domain-api_ClockService.adoc | 10 ----
 ...rgsvc_core-domain-api_ConfigurationService.adoc | 13 +----
 ...gsvc_core-domain-api_DomainObjectContainer.adoc | 10 ----
 .../_rgsvc_core-domain-api_EventBusService.adoc    | 13 +----
 .../_rgsvc_core-domain-api_FactoryService.adoc     | 17 +------
 .../rgsvc/_rgsvc_core-domain-api_Scratchpad.adoc   | 14 ++----
 .../rgsvc/_rgsvc_core-domain-api_UserService.adoc  | 13 +----
 .../_rgsvc_integration-api_BookmarkService.adoc    | 16 ++----
 .../_rgsvc_integration-api_DeepLinkService.adoc    | 13 +----
 .../rgsvc/_rgsvc_integration-api_EmailService.adoc |  6 +--
 .../_rgsvc_integration-api_GuiceBeanProvider.adoc  | 17 ++-----
 .../rgsvc/_rgsvc_integration-api_JaxbService.adoc  | 14 ++----
 .../_rgsvc_integration-api_MementoService.adoc     | 12 +----
 .../_rgsvc_integration-api_XmlSnapshotService.adoc | 13 ++---
 ..._metadata-api_ApplicationFeatureRepository.adoc | 17 ++-----
 .../_rgsvc_metadata-api_MetamodelService.adoc      | 12 +----
 .../rgsvc/_rgsvc_metadata-api_ServiceRegistry.adoc | 23 ++-------
 .../rgsvc/_rgsvc_metadata-api_SwaggerService.adoc  | 12 ++---
 ...rgsvc_persistence-layer-api_IsisJdoSupport.adoc |  6 +--
 ...rgsvc_persistence-layer-api_MetricsService.adoc |  6 +--
 ...vc_persistence-layer-api_QueryResultsCache.adoc | 14 ++----
 ...vc_persistence-layer-api_RepositoryService.adoc | 15 ++----
 ...rgsvc_persistence-layer-spi_AuditerService.adoc | 12 ++---
 ...svc_persistence-layer-spi_PublisherService.adoc | 22 ++++----
 ...sistence-layer-spi_UserRegistrationService.adoc | 12 +----
 ...ntation-layer-spi_EmailNotificationService.adoc | 14 +-----
 ...esentation-layer-spi_ErrorReportingService.adoc |  9 +---
 ...presentation-layer-spi_ExceptionRecognizer.adoc | 30 ++---------
 ...c_presentation-layer-spi_GridLoaderService.adoc | 10 +---
 ...c_presentation-layer-spi_GridSystemService.adoc | 12 +----
 .../_rgsvc_presentation-layer-spi_HintStore.adoc   | 11 +---
 ...gsvc_presentation-layer-spi_LocaleProvider.adoc | 13 +----
 ...gsvc_presentation-layer-spi_RoutingService.adoc | 15 ++----
 ...entation-layer-spi_TableColumnOrderService.adoc |  5 ++
 ..._presentation-layer-spi_TranslationService.adoc | 15 ++----
 ...resentation-layer-spi_TranslationsResolver.adoc | 14 +-----
 ..._presentation-layer-spi_UrlEncodingService.adoc |  4 +-
 .../_ugtst_integ-test-support_abstract-class.adoc  |  2 +-
 .../isis/applib/fixturescripts/FixtureScript.java  |  5 +-
 .../isis/applib/services/command/Command.java      | 32 +++++++++++-
 .../isis/applib/services/command/Command3.java     | 58 ----------------------
 .../applib/services/command/CommandDefault.java    |  2 +-
 .../applib/services/registry/ServiceRegistry.java  |  4 ++
 .../applib/services/registry/ServiceRegistry2.java |  6 ---
 .../applib/services/registry/package-info.java     |  2 +-
 ...tract.java => CommandContractTestAbstract.java} |  6 +--
 .../services/command/CommandDefaultTest.java       |  4 +-
 .../integtestsupport/IntegrationTestAbstract2.java |  4 +-
 .../core/metamodel/facets/DomainEventHelper.java   |  6 +--
 .../ApplicationFeatureRepositoryDefault.java       |  8 +--
 .../bookmarks/BookmarkServiceInternalDefault.java  |  8 +--
 .../services/registry/ServiceRegistryDefault.java  |  4 +-
 .../ApplicationFeatureRepositoryDefaultTest.java   |  8 +--
 .../fixturedomainservice/ObjectFixtureService.java |  4 +-
 .../services/eventbus/EventBusServiceDefault.java  |  6 +--
 .../system/persistence/PersistenceSession.java     |  6 +--
 .../java/domainapp/dom/impl/HelloWorldObjects.java |  4 +-
 .../simple/dom/impl/SimpleObjectRepository.java    |  4 +-
 .../dom/impl/SimpleObjectRepository_Test.java      |  4 +-
 .../java/domainapp/dom/impl/HelloWorldObjects.java |  2 +-
 .../simple/dom/impl/SimpleObjectRepository.java    |  2 +-
 .../dom/impl/SimpleObjectRepository_Test.java      |  2 +-
 todo-deprecation-list.txt                          | 13 ++++-
 78 files changed, 234 insertions(+), 637 deletions(-)
 delete mode 100644 adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_BulkInteractionContext.adoc
 delete mode 100644 core/applib/src/main/java/org/apache/isis/applib/services/command/Command3.java
 rename core/applib/src/test/java/org/apache/isis/applib/services/command/{Command2ContractTestAbstract.java => CommandContractTestAbstract.java} (96%)

-- 
To stop receiving notification emails like this one, please contact
['"commits@isis.apache.org" <co...@isis.apache.org>'].

[isis] 03/03: ISIS-1742: rolls Command3 up into Command

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch dev/2.0.0/ISIS-1742-remove-deprecations
in repository https://gitbox.apache.org/repos/asf/isis.git

commit d609fd95089b9fe17decdde25a6072ccb6f17047
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Oct 16 22:55:15 2017 +0100

    ISIS-1742: rolls Command3 up into Command
---
 .../isis/applib/services/command/Command.java      | 32 +++++++++++-
 .../isis/applib/services/command/Command3.java     | 58 ----------------------
 .../applib/services/command/CommandDefault.java    |  2 +-
 ...tract.java => CommandContractTestAbstract.java} |  6 +--
 .../services/command/CommandDefaultTest.java       |  4 +-
 .../core/metamodel/facets/DomainEventHelper.java   |  6 +--
 .../system/persistence/PersistenceSession.java     |  6 +--
 todo-deprecation-list.txt                          |  6 ++-
 8 files changed, 42 insertions(+), 78 deletions(-)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/command/Command.java b/core/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
index a876261..d42f8ad 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/command/Command.java
@@ -17,6 +17,7 @@
 package org.apache.isis.applib.services.command;
 
 import java.sql.Timestamp;
+import java.util.List;
 
 import javax.annotation.Nullable;
 
@@ -45,8 +46,7 @@ import org.apache.isis.schema.cmd.v1.CommandDto;
  *     The {@link Command} interface also captures details of the corresponding action invocation (or property edit),
  *     specifically when that action/edit {@link Command#getStartedAt() started} or
  *     {@link Command#getCompletedAt() completed}, and its result, either a {@link Command#getResult() return value}
- *     or an {@link Command#getException() exception}.  The {@link Command3} sub-interface also captures the stack
- *     of {@link ActionDomainEvent}s.
+ *     or an {@link Command#getException() exception}.  Also captures a stack of {@link ActionDomainEvent}s.
  * </p>
  *
  * <p>
@@ -229,6 +229,34 @@ public interface Command extends HasTransactionId {
      */
     void setExecuteIn(final CommandExecuteIn executeIn);
 
+    /**
+     * @deprecated - use {@link Interaction#getCurrentExecution()}, {@link Interaction#getPriorExecution()}  and {@link Interaction#getExecutions()} instead.
+     */
+    @Deprecated
+    @Programmatic
+    ActionDomainEvent<?> peekActionDomainEvent();
+
+    /**
+     * @deprecated - replaced by equivalent functionality in {@link Interaction}.
+     */
+    @Deprecated
+    @Programmatic
+    void pushActionDomainEvent(ActionDomainEvent<?> event);
+
+    /**
+     * @deprecated - replaced by equivalent functionality in {@link Interaction}.
+     */
+    @Deprecated
+    @Programmatic
+    ActionDomainEvent<?> popActionDomainEvent();
+
+    /**
+     * @deprecated - use {@link Interaction#getCurrentExecution()}, {@link Interaction#getPriorExecution()}  and {@link Interaction#getExecutions()} instead.
+     */
+    @Deprecated
+    @Programmatic
+    List<ActionDomainEvent<?>> flushActionDomainEvents();
+
     //endregion
 
     //region > executor (property)
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/command/Command3.java b/core/applib/src/main/java/org/apache/isis/applib/services/command/Command3.java
deleted file mode 100644
index a7eeb79..0000000
--- a/core/applib/src/main/java/org/apache/isis/applib/services/command/Command3.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- *  Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  See the NOTICE file distributed with
- *  this work for additional information regarding copyright ownership.
- *  The ASF licenses this file to You under the Apache License, Version 2.0
- *  (the "License"); you may not use this file except in compliance with
- *  the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.isis.applib.services.command;
-
-import java.util.List;
-import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
-import org.apache.isis.applib.services.iactn.Interaction;
-import org.apache.isis.applib.services.iactn.InteractionContext;
-
-/**
- * @deprecated - the extensions to {@link Command} in this interface have been replaced by functionality in {@link InteractionContext}.
- */
-@Deprecated
-public interface Command3 extends Command {
-
-    /**
-     * @deprecated - use {@link Interaction#getCurrentExecution()}, {@link Interaction#getPriorExecution()}  and {@link Interaction#getExecutions()} instead.
-     */
-    @Deprecated
-    @Programmatic
-    ActionDomainEvent<?> peekActionDomainEvent();
-
-    /**
-     * @deprecated - replaced by equivalent functionality in {@link Interaction}.
-     */
-    @Deprecated
-    @Programmatic
-    void pushActionDomainEvent(ActionDomainEvent<?> event);
-
-    /**
-     * @deprecated - replaced by equivalent functionality in {@link Interaction}.
-     */
-    @Deprecated
-    @Programmatic
-    ActionDomainEvent<?> popActionDomainEvent();
-
-    /**
-     * @deprecated - use {@link Interaction#getCurrentExecution()}, {@link Interaction#getPriorExecution()}  and {@link Interaction#getExecutions()} instead.
-     */
-    @Deprecated
-    @Programmatic
-    List<ActionDomainEvent<?>> flushActionDomainEvents();
-}
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandDefault.java b/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandDefault.java
index d4c8f0f..3a9047d 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandDefault.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/command/CommandDefault.java
@@ -34,7 +34,7 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 import org.apache.isis.applib.util.ObjectContracts;
 
-public class CommandDefault implements Command3 {
+public class CommandDefault implements Command {
 
     //region > constructor
 
diff --git a/core/applib/src/test/java/org/apache/isis/applib/services/command/Command2ContractTestAbstract.java b/core/applib/src/test/java/org/apache/isis/applib/services/command/CommandContractTestAbstract.java
similarity index 96%
rename from core/applib/src/test/java/org/apache/isis/applib/services/command/Command2ContractTestAbstract.java
rename to core/applib/src/test/java/org/apache/isis/applib/services/command/CommandContractTestAbstract.java
index daadc0f..169ee59 100644
--- a/core/applib/src/test/java/org/apache/isis/applib/services/command/Command2ContractTestAbstract.java
+++ b/core/applib/src/test/java/org/apache/isis/applib/services/command/CommandContractTestAbstract.java
@@ -28,9 +28,9 @@ import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 
-public abstract class Command2ContractTestAbstract {
+public abstract class CommandContractTestAbstract {
 
-    Command3 command;
+    Command command;
 
     ActionDomainEvent<Object> ev1;
     ActionDomainEvent<Object> ev2;
@@ -46,7 +46,7 @@ public abstract class Command2ContractTestAbstract {
         command = newCommand();
     }
 
-    protected abstract Command3 newCommand();
+    protected abstract Command newCommand();
 
     @Test
     public void givenEmpty() throws Exception {
diff --git a/core/applib/src/test/java/org/apache/isis/applib/services/command/CommandDefaultTest.java b/core/applib/src/test/java/org/apache/isis/applib/services/command/CommandDefaultTest.java
index 975a9fb..359e007 100644
--- a/core/applib/src/test/java/org/apache/isis/applib/services/command/CommandDefaultTest.java
+++ b/core/applib/src/test/java/org/apache/isis/applib/services/command/CommandDefaultTest.java
@@ -18,9 +18,9 @@
  */
 package org.apache.isis.applib.services.command;
 
-public class CommandDefaultTest extends Command2ContractTestAbstract {
+public class CommandDefaultTest extends CommandContractTestAbstract {
 
-    protected Command3 newCommand() {
+    protected Command newCommand() {
         return new CommandDefault();
     }
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
index 605c827..351f025 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/DomainEventHelper.java
@@ -31,7 +31,6 @@ import com.google.common.collect.Lists;
 import org.apache.isis.applib.FatalException;
 import org.apache.isis.applib.Identifier;
 import org.apache.isis.applib.services.command.Command;
-import org.apache.isis.applib.services.command.Command3;
 import org.apache.isis.applib.services.eventbus.AbstractDomainEvent;
 import org.apache.isis.applib.services.eventbus.ActionDomainEvent;
 import org.apache.isis.applib.services.eventbus.CollectionDomainEvent;
@@ -107,10 +106,7 @@ public class DomainEventHelper {
             // ... and associate command with event
             if(command != null) {
                 if(phase.isExecuting()) {
-                    if(command instanceof Command3) {
-                        final Command3 command3 = (Command3) command;
-                        command3.pushActionDomainEvent(event);
-                    }
+                    command.pushActionDomainEvent(event);
                 }
             }
 
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
index ce80c60..e814ce6 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/system/persistence/PersistenceSession.java
@@ -44,7 +44,6 @@ import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.applib.services.clock.ClockService;
 import org.apache.isis.applib.services.command.Command;
-import org.apache.isis.applib.services.command.Command3;
 import org.apache.isis.applib.services.command.CommandContext;
 import org.apache.isis.applib.services.command.spi.CommandService;
 import org.apache.isis.applib.services.eventbus.AbstractLifecycleEvent;
@@ -500,10 +499,7 @@ public class PersistenceSession implements
 
         commandService.complete(command);
 
-        if(command instanceof Command3) {
-            final Command3 command3 = (Command3) command;
-            command3.flushActionDomainEvents();
-        }
+        command.flushActionDomainEvents();
 
         interaction.clear();
     }
diff --git a/todo-deprecation-list.txt b/todo-deprecation-list.txt
index 6f54486..580fb80 100644
--- a/todo-deprecation-list.txt
+++ b/todo-deprecation-list.txt
@@ -143,13 +143,12 @@ org.apache.isis.applib.services.command
         next(String)
         setCompletedAt(Timestamp)
         setStartedAt(Timestamp)
-    Command3.java  - metods for working with domain events (equiv functionality in Interaction)  [suggest we retain for now]
         flushActionDomainEvents()
         peekActionDomainEvent()
         popActionDomainEvent()
         pushActionDomainEvent(ActionDomainEvent<?>)  (
 
-    MemberGroupLayout.java - entire annotation, use Xxx.layout.xml instead
+    MemberGroupsLayout.java - retain
 
 
 
@@ -386,6 +385,9 @@ org.apache.isis.applib.services.command
         popActionInteractionEvent()
         pushActionInteractionEvent(ActionInteractionEvent<?>)
 
+org.apache.isis.applib.services.command
+    Command3 rolled up into Command
+
 
 org.apache.isis.applib.services.eventbus
     AbstractInteractionEvent.java - remove

-- 
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.

[isis] 01/03: ISIS-1742: updates rgsvc.adoc, removes the 'Registering the Service' section throughout

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch dev/2.0.0/ISIS-1742-remove-deprecations
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 80fbd3fb584c9fdf48f85e9ca4ab9fcc0c528e3f
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Oct 16 22:41:38 2017 +0100

    ISIS-1742: updates rgsvc.adoc, removes the 'Registering the Service' section throughout
---
 ..._application-layer-api_AcceptHeaderService.adoc | 15 +++-------
 ...lication-layer-api_ActionInvocationContext.adoc | 12 ++------
 ...vc_application-layer-api_BackgroundService.adoc |  6 +---
 ...plication-layer-api_BulkInteractionContext.adoc |  9 ------
 ...rgsvc_application-layer-api_CommandContext.adoc | 17 ++++--------
 ...c_application-layer-api_InteractionContext.adoc | 32 ++++++++++++----------
 ...rgsvc_application-layer-api_MessageService.adoc |  8 +-----
 ...ication-layer-api_SessionManagementService.adoc | 11 +-------
 .../_rgsvc_application-layer-api_TitleService.adoc | 10 +------
 ...c_application-layer-api_TransactionService.adoc |  7 +----
 ...rgsvc_application-layer-api_WrapperFactory.adoc |  8 ++----
 ...ication-layer-spi_BackgroundCommandService.adoc |  5 ++--
 ...rgsvc_application-layer-spi_CommandService.adoc | 22 +++++++--------
 ...lication-layer-spi_HomePageProviderService.adoc |  8 ------
 ...vc_bootstrapping-spi_ClassDiscoveryService.adoc | 11 ++------
 .../rgsvc/_rgsvc_core-domain-api_ClockService.adoc | 10 -------
 ...rgsvc_core-domain-api_ConfigurationService.adoc | 13 +--------
 ...gsvc_core-domain-api_DomainObjectContainer.adoc | 10 -------
 .../_rgsvc_core-domain-api_EventBusService.adoc    | 13 ++-------
 .../_rgsvc_core-domain-api_FactoryService.adoc     | 17 ++----------
 .../rgsvc/_rgsvc_core-domain-api_Scratchpad.adoc   | 14 ++--------
 .../rgsvc/_rgsvc_core-domain-api_UserService.adoc  | 13 +--------
 .../_rgsvc_integration-api_BookmarkService.adoc    | 16 +++--------
 .../_rgsvc_integration-api_DeepLinkService.adoc    | 13 +--------
 .../rgsvc/_rgsvc_integration-api_EmailService.adoc |  6 +---
 .../_rgsvc_integration-api_GuiceBeanProvider.adoc  | 17 +++---------
 .../rgsvc/_rgsvc_integration-api_JaxbService.adoc  | 14 ++--------
 .../_rgsvc_integration-api_MementoService.adoc     | 12 ++------
 .../_rgsvc_integration-api_XmlSnapshotService.adoc | 13 ++-------
 ..._metadata-api_ApplicationFeatureRepository.adoc | 17 +++---------
 .../_rgsvc_metadata-api_MetamodelService.adoc      | 12 +-------
 .../rgsvc/_rgsvc_metadata-api_ServiceRegistry.adoc | 15 +---------
 .../rgsvc/_rgsvc_metadata-api_SwaggerService.adoc  | 12 ++++----
 ...rgsvc_persistence-layer-api_IsisJdoSupport.adoc |  6 ++--
 ...rgsvc_persistence-layer-api_MetricsService.adoc |  6 +---
 ...vc_persistence-layer-api_QueryResultsCache.adoc | 14 +++-------
 ...vc_persistence-layer-api_RepositoryService.adoc | 15 +++-------
 ...rgsvc_persistence-layer-spi_AuditerService.adoc | 12 +++-----
 ...svc_persistence-layer-spi_PublisherService.adoc | 22 +++++++++------
 ...sistence-layer-spi_UserRegistrationService.adoc | 12 +-------
 ...ntation-layer-spi_EmailNotificationService.adoc | 14 ++--------
 ...esentation-layer-spi_ErrorReportingService.adoc |  9 ++----
 ...presentation-layer-spi_ExceptionRecognizer.adoc | 30 +++-----------------
 ...c_presentation-layer-spi_GridLoaderService.adoc | 10 +------
 ...c_presentation-layer-spi_GridSystemService.adoc | 12 +-------
 .../_rgsvc_presentation-layer-spi_HintStore.adoc   | 11 +-------
 ...gsvc_presentation-layer-spi_LocaleProvider.adoc | 13 +--------
 ...gsvc_presentation-layer-spi_RoutingService.adoc | 15 +++-------
 ...entation-layer-spi_TableColumnOrderService.adoc |  5 ++++
 ..._presentation-layer-spi_TranslationService.adoc | 15 +++-------
 ...resentation-layer-spi_TranslationsResolver.adoc | 14 +---------
 ..._presentation-layer-spi_UrlEncodingService.adoc |  4 +--
 52 files changed, 147 insertions(+), 510 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_AcceptHeaderService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_AcceptHeaderService.adoc
index c611d46..ca7ce64 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_AcceptHeaderService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_AcceptHeaderService.adoc
@@ -38,6 +38,10 @@ The default implementation is provided by `o.a.i.v.ro.rendering.service.accepthe
 Note that the service will only return a list when the request is initiated through the xref:../ugvro/ugvro.adoc#[Restful Objects viewer].  Otherwise the service will return `null`.
 ====
 
+To use an alternative implementation, use
+xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
+in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+
 
 == Usage
 
@@ -66,14 +70,3 @@ map domain objects to view models/DTOs.
 
 
 
-
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' default
-implementation of `AcceptHeaderService` class is automatically registered (it is annotated with `@DomainService`)
-so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_ActionInvocationContext.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_ActionInvocationContext.adoc
index 8a80f8b..7906e67 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_ActionInvocationContext.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_ActionInvocationContext.adoc
@@ -33,6 +33,8 @@ public static class ActionInvocationContext {
 <4> is the 0-based index to the object being acted upon.
 
 
+To provide an alternative implementation, subclass and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+
 
 == Usage
 
@@ -63,16 +65,6 @@ public class ToDoItem ... {
 
 
 
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' default
-implementation of `ActionInvocationContext` class is automatically registered (it is annotated with `@DomainService`)
-so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_BackgroundService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_BackgroundService.adoc
index 8d9cacf..3a4da86 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_BackgroundService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_BackgroundService.adoc
@@ -36,6 +36,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:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 == Usage
@@ -103,11 +104,6 @@ The user would be returned a domain object representing their action invocation.
 
 
 
-== Registering the Services
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the `AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core implementation of `BackgroundService` is automatically registered (it is annotated with `@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 == Related Services
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_BulkInteractionContext.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_BulkInteractionContext.adoc
deleted file mode 100644
index 7cee49c..0000000
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_BulkInteractionContext.adoc
+++ /dev/null
@@ -1,9 +0,0 @@
-[[_rgsvc_application-layer-api_BulkInteractionContext]]
-= `BulkInteractionContext`
-:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
-:_basedir: ../../
-:_imagesdir: images/
-
-
-This service is deprecated, replaced by xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_ActionInvocationContext[`ActionInvocationContext`].
-
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_CommandContext.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_CommandContext.adoc
index 765fc02..e86abc3 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_CommandContext.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_CommandContext.adoc
@@ -53,7 +53,11 @@ public class CommandContext {
 }
 ----
 
-This class (`o.a.i.applib.services.CommandContext`) is also the default implementation.  Under normal circumstances there shouldn't be any need to replace this implementation with another.
+This class (`o.a.i.applib.services.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:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+
 
 The `Command` type referenced above is in fact an interface, defined as:
 
@@ -202,17 +206,6 @@ String user = commandContext.getCommand().getUser();
 
 
 
-== Registering the Services
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `CommandContext` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
-
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_InteractionContext.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_InteractionContext.adoc
index 5e36933..c50a8f3 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_InteractionContext.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_InteractionContext.adoc
@@ -155,22 +155,13 @@ public class PropertyEdit extends Execution {
 <1> The object used as the new value of the property.  Could be `null` if the property is being cleared.
 
 
+=== Alternate Implementations
 
-== Interacting with the services
-
-Typically domain objects will have little need to interact with the `InteractionContext` and `Interaction` directly.
-The services are used within the framework however, primarily to support the
-xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`] SPI, and to emit domain events over the
-xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`].
-
-
+Apache Isis' default
+implementation of `InteractionContext` class is automatically registered (it is annotated with `@DomainService`).
 
-== Registering the Service
+To use an alternative implementation, subclass and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' default
-implementation of `InteractionContext` class is automatically registered (it is annotated with `@DomainService`)
-so no further configuration is required.
 
 The framework also takes responsibility for instantiating the `Interaction`, using the
 xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_FactoryService[`FactoryService`].
@@ -179,13 +170,26 @@ xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_FactoryService[`FactoryService`]
 ====
 Unlike the similar xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_CommandContext[`CommandContext`] (discussed
 xref:../rgsvc/rgsvc.adoc#__rgsvc_application-layer-api_InteractionContext_Related-Classes[below]) there is no domain service to different
-implementations of `Interaction` to be used.  If this were to be needed, then a custom implementation of
+implementations of `Interaction` to be used.
+If this were to be needed, then a custom implementation of
  xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_FactoryService[`FactoryService`] could always used).
 ====
 
 
 
 
+== Interacting with the services
+
+Typically domain objects will have little need to interact with the `InteractionContext` and `Interaction` directly.
+The services are used within the framework however, primarily to support the
+xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`] SPI, and to emit domain events over the
+xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`].
+
+
+
+
+
+
 [[__rgsvc_application-layer-api_InteractionContext_Related-Classes]]
 == Related Classes
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_MessageService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_MessageService.adoc
index d6c09ed..3048cfa 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_MessageService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_MessageService.adoc
@@ -56,14 +56,8 @@ 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:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the `AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core implementation of `MessageService` service is automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
-
-
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_SessionManagementService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_SessionManagementService.adoc
index 9b03d2a..db5d975 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_SessionManagementService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_SessionManagementService.adoc
@@ -43,14 +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:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `SessionManagementService` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_TitleService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_TitleService.adoc
index 43b1984..6a722ae 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_TitleService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_TitleService.adoc
@@ -54,15 +54,7 @@ In this example, whatever the title of a `Customer`, it is reused within the tit
 The core framework provides a default implementation of this service (`o.a.i.core.metamodel.services.title.TitleServiceDefault`).
 
 
-
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `TitleService` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
+To use an alternative implementation, implement `TitleService` interface and use
 xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
 in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_TransactionService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_TransactionService.adoc
index b294d3f..f4fb4ba 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_TransactionService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_TransactionService.adoc
@@ -97,9 +97,4 @@ try {
 The core framework provides a default implementation of this service, `o.a.i.core.metamodel.services.xactn.TransactionServiceDefault`.
 
 
-
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the `AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core implementation of `TransactionService` service is automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+To use an alternative implementation, implement the `TransactionService` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_WrapperFactory.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_WrapperFactory.adoc
index a15074e..b53baf2 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_WrapperFactory.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-api_WrapperFactory.adoc
@@ -162,10 +162,8 @@ As the time of writing, no such feature has yet been implemented.
 
 
 
-== Registering the Service
+== Implementation
 
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the `AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core implementation of `WrapperFactory` service is automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
+The core framework provides a default implementation of this service, `o.a.i.core.wrapper.WrapperFactoryDefault`.
 
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+To use an alternative implementation, implement the `WrapperFactory` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
\ No newline at end of file
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_BackgroundCommandService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_BackgroundCommandService.adoc
index d4eb268..676d7d6 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_BackgroundCommandService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_BackgroundCommandService.adoc
@@ -85,14 +85,13 @@ The imperative approach involves explicitly calling the xref:../rgsvc/rgsvc.adoc
 
 
 
-== Registering the Services
+== Implementation
 
 The (non-ASF) link:http://platform.incode.org[Incode Platform^]'s command module provides an implementation
 of this service (`BackgroundCommandService`), and also provides a number of related domain services (`BackgroundCommandServiceJdo`, `BackgroundCommandJdoRepository` and `BackgroundCommandServiceJdoContributions`).
 This module also provides service implementations of the xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-spi_CommandService[`CommandService`].
 
-Assuming that an `AppManifest` is being used to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app])
-then this can be activated by updating the `pom.xml` and updating the `AppManifest#getModules()` method.
+This can be activated by updating the `pom.xml` and updating the `AppManifest#getModules()` method.
 
 If contributions are not required in the UI, these can be suppressed either using security or by implementing a xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing subscriber].
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_CommandService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_CommandService.adoc
index c794d3c..275d024 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_CommandService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_CommandService.adoc
@@ -64,34 +64,32 @@ flag and persistence hint (`Command#isPersistHint()`) indicate that it should be
 The framework will automatically have set the `completedAt` property of the `Command`.
 
 
+
 == Implementation
 
-The (non-ASF) link:http://platform.incode.org[Incode Platform^]'s command module provides an implementation (`org.isisaddons.module.command.dom.CommandServiceJdo`) that persists ``Command``s using the JDO/DataNucleus object store.  It further provides a number of supporting services:
+The (non-ASF) link:http://platform.incode.org[Incode Platform^]'s command module provides an implementation (`org.isisaddons.module.command.dom.CommandServiceJdo`) that persists ``Command``s using the JDO/DataNucleus object store.
+It further provides a number of supporting services:
 
 * `org.isisaddons.module.command.dom.CommandServiceJdoRepository` is a repository to search for persisted ``Command``s
 
 * `org.isisaddons.module.command.dom.CommandServiceJdoContributions` contributes actions for searching for persisted child and sibling ``Command``s.
 
+* implementation of the
+xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-spi_CommandService[`BackgroundCommandService`].
 
+All of these can be activated by updating the `pom.xml` and updating the `AppManifest#getModules()` method.
 
-== Usage
-
-The typical way to indicate that an action should be reified into a `Command` is by annotating the action using xref:../rgant/rgant.adoc#_rgant-Action_command[`@Action#command()`].
+If contributions are not required in the UI, these can be suppressed either using security or by implementing a
+xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing subscriber].
 
 
 
+== Usage
 
-== Registering the Services
+The typical way to indicate that an action should be reified into a `Command` is by annotating the action using xref:../rgant/rgant.adoc#_rgant-Action_command[`@Action#command()`].
 
-The (non-ASF) link:http://platform.incode.org[Incode Platform^]'s command module provides an implementation of this service (`CommandService`), and also provides a number of related domain services (`CommandJdoRepository` and `CommandServiceJdoContributions`).
-This module also provides service implementations of the
-xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-spi_CommandService[`BackgroundCommandService`].
 
-Assuming that an `AppManifest` is being used to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app])
-then this can be activated by updating the `pom.xml` and updating the `AppManifest#getModules()` method.
 
-If contributions are not required in the UI, these can be suppressed either using security or by implementing a
-xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing subscriber].
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_HomePageProviderService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_HomePageProviderService.adoc
index 1520b2e..16c8d62 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_HomePageProviderService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_application-layer-spi_HomePageProviderService.adoc
@@ -30,11 +30,3 @@ public interface HomePageProviderService {
 The default implementation is provided by `o.a.i.core.runtime.services.homepage.HomePageProviderServiceDefault`.
 
 
-
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `HomePageProviderService` is automatically registered (it is annotated with `@DomainService`) so no further
-configuration is required.
-
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_bootstrapping-spi_ClassDiscoveryService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_bootstrapping-spi_ClassDiscoveryService.adoc
index cc1bc1c..866fadc 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_bootstrapping-spi_ClassDiscoveryService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_bootstrapping-spi_ClassDiscoveryService.adoc
@@ -41,6 +41,9 @@ 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:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+
+
 
 
 == Usage
@@ -70,12 +73,4 @@ where the three module classes in effect define three different package prefixes
 Other usages of the `ClassDiscoveryService` are likely to work in a similar way, requiring some sort of scope to be specified.
 
 
-== Registering the Services
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core implementation of `ClassDiscoveryService` service is automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
-
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_ClockService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_ClockService.adoc
index 3213a26..7e41452 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_ClockService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_ClockService.adoc
@@ -89,13 +89,3 @@ public class NntpClockServiceInitializer  {
 
 
 
-
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `ClockService` is automatically registered (it is annotated with `@DomainService`) so no further
-configuration is required.
-
-If you want to use a different implementation of `Clock`, eg delegating to NNTP, then do _not_ register directly, but
-instead subclass from `o.a.i.applib.clock.Clock` singleton (as described in the section above).
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_ConfigurationService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_ConfigurationService.adoc
index c5e1cbc..643c9cc 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_ConfigurationService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_ConfigurationService.adoc
@@ -70,18 +70,7 @@ This is provided all properties, not just those with the 'application' prefix.
 The core framework provides a default implementation of this service (`o.a.i.core.runtime.services.config.ConfigurationServiceDefault`).
 
 
-
-
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `ConfigurationService` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+To use an alternative implementation, implement `ConfigurationService` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer.adoc
index 376ea48..1984691 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_DomainObjectContainer.adoc
@@ -33,13 +33,3 @@ include::_rgsvc_core-domain-api_DomainObjectContainer_validation-api.adoc[levelo
 The core framework provides a default implementation of this service (`o.a.i.core.metamodel.services.container.DomainObjectContainerDefault`).
 
 
-
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `DomainObjectContainer` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
-
-
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_EventBusService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_EventBusService.adoc
index 50a9163..658bf23 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_EventBusService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_EventBusService.adoc
@@ -47,6 +47,8 @@ public abstract class EventBusService {
 Isis provides a default implementation of the service, `o.a.i.objectstore.jdo.datanucleus.service.eventbus.EventBusServiceJdo`.
 
 
+To use an alternative implementation, implement the `EventBusService` domain service and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+
 
 
 
@@ -382,17 +384,6 @@ Late registration refers to the idea that a domain service can register itself w
 
 
 
-== Registering the Services
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `EventBusService` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
-
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_FactoryService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_FactoryService.adoc
index b79fda8..402d419 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_FactoryService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_FactoryService.adoc
@@ -52,24 +52,11 @@ repositoryService.persist(cust);
 The core framework provides a default implementation of this service (`o.a.i.core.metamodel.services.factory.FactoryServiceDefault`).
 
 
-
-
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `FactoryService` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+To use an alternative implementation, implement `FactoryService` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 == Related Services
 
 The xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-api_RepositoryService[`RepositoryService`] is often used in conjunction with the `FactoryService`, to persist domain objects after they have been instantiated and populated.
 
-An alternative to using the factory service is to simply instantiate the object ("new is the new new") and then use the
-xref:../rgsvc/rgsvc.adoc#_rgsvc_metadata-api_ServiceRegistry[`ServiceRegistry`] service to inject other domain services into the
-instantiated object.
\ No newline at end of file
+An alternative to using the factory service is to simply instantiate the object ("new is the new new") and then use the xref:../rgsvc/rgsvc.adoc#_rgsvc_metadata-api_ServiceRegistry[`ServiceRegistry`] service to inject other domain services into the instantiated object.
\ No newline at end of file
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_Scratchpad.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_Scratchpad.adoc
index 719310a..083ca18 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_Scratchpad.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_Scratchpad.adoc
@@ -28,9 +28,11 @@ public class Scratchpad {
 }
 ----
 
-This class (`o.a.i.applib.services.scratchpad.Scratchpad`) is also the implementation.  And, as you can see, the service is just a request-scoped wrapper around a `java.util.Map`.
+This class (`o.a.i.applib.services.scratchpad.Scratchpad`) is also the implementation.
+The service is just a request-scoped wrapper around a `java.util.Map`.
 
 
+To use an alternative implementation, subclass and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 
@@ -106,16 +108,6 @@ If using the xref:../ugvw/ugvw.adoc#[Wicket viewer], the `ToDoItemBulkUpdate` vi
 
 
 
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `Scratchpad` service is automatically registered and injected (it is annotated with `@DomainService`)
-so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_UserService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_UserService.adoc
index 8df821f..2cdbd55 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_UserService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_core-domain-api_UserService.adoc
@@ -62,18 +62,7 @@ In addition, when using the xref:../ugvw/ugvw.adoc#[Wicket viewer] there will be
 The core framework provides a default implementation of this service (`o.a.i.core.runtime.services.user.UserServiceDefault`).
 
 
-
-
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `UserService` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+To use an alternative implementation, implement the `UserService` interface use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_BookmarkService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_BookmarkService.adoc
index 76bb6c6..a601edf 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_BookmarkService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_BookmarkService.adoc
@@ -57,6 +57,10 @@ 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:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+
+
+
 
 == `BookmarkHolder`
 
@@ -105,15 +109,3 @@ xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_AuditerService[`AuditerSer
 
 
 
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `BookmarkService` is automatically registered (it is annotated with `@DomainService`) so no further
-configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
-
-
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_DeepLinkService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_DeepLinkService.adoc
index 816d4a2..7797f2f 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_DeepLinkService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_DeepLinkService.adoc
@@ -42,15 +42,4 @@ The Wicket viewer core framework provides a default implementation of this API:
 * `org.apache.isis.viewer.wicket.viewer.services.DeepLinkServiceWicket`
 
 
-
-
-== Registering the Services
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]), _and_ that the
-xref:../ugvw/ugvw.adoc#[Wicket viewer] is being used, then an implementation of `DeepLinkService` is
-automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+To use an alternative implementation, implement the `DeepLinkService` interface use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_EmailService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_EmailService.adoc
index 345a071..8e8c922 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_EmailService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_EmailService.adoc
@@ -38,6 +38,7 @@ If this returns `false` then any attempt to call `send(...)` will fail.
 
 As noted in the introduction, the core framework provides a default implementation (`EmailServiceDefault`) that sends email as an HTML message, using an external SMTP provider.
 
+To use an alternative implementation, implement the `EmailService` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 == Configuration
@@ -114,11 +115,6 @@ To ensure that your alternative implementation takes the place of the default im
 
 
 
-== Registering the Services
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the `AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core implementation of `EmailService` service is automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 == Related Services
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_GuiceBeanProvider.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_GuiceBeanProvider.adoc
index ea9c36e..dd3352e 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_GuiceBeanProvider.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_GuiceBeanProvider.adoc
@@ -29,7 +29,10 @@ public interface GuiceBeanProvider {
 }
 ----
 
-The xref:../ugvw/ugvw.adoc#[Wicket viewer] this provides an implementation of this service.
+The xref:../ugvw/ugvw.adoc#[Wicket viewer] this provides a default implementation of this service.
+
+To use an alternative implementation, implement the `GuideBeanProvider` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+
 
 
 
@@ -77,15 +80,3 @@ should return "ToDo App".
 
 
 
-== Registering the Services
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]), _and_ that the
-xref:../ugvw/ugvw.adoc#[Wicket viewer] is being used, then an implementation of `GuiceBeanProvider` is
-automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
-
-
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_JaxbService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_JaxbService.adoc
index b6fa3b4..8eb3586 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_JaxbService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_JaxbService.adoc
@@ -42,7 +42,9 @@ reference multiple other XSD schemas.  In particular, many JAXB domain objects w
 xref:../rgcms/rgcms.adoc#_rgcms_schema[common Isis schemas] (for example the `OidDto` class that represents a reference to
 a persistent entity).  The enum indicates whether these schemas should be included or excluded from the map.
 
-Isis provides a default implementation of the service, `o.a.i.schema.services.jaxb.JaxbServiceDefault`.
+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:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 
@@ -55,14 +57,4 @@ exposed in the UI through mixins to xref:../rgcms/rgcms.adoc#_rgcms_classes_mixi
 
 
 
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `JaxbService` service is automatically registered and injected (it is annotated with `@DomainService`)
-so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_MementoService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_MementoService.adoc
index 8fa90ec..15bff23 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_MementoService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_MementoService.adoc
@@ -56,6 +56,8 @@ 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:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[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
 entities). Nulls can also be set.
@@ -134,13 +136,3 @@ xref:../rgfis/rgfis.adoc#_rgfis_application-layer_CommandDtoServiceInternal[`Com
 
 
 
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `MementoService` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_XmlSnapshotService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_XmlSnapshotService.adoc
index 8b8bdd1..4fa00e6 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_XmlSnapshotService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_integration-api_XmlSnapshotService.adoc
@@ -14,7 +14,6 @@ Another use case is to grab raw data such that it could be merged into a report
 
 The service offers a basic API to create a snapshot of a single object, and an more flexible API that allows the size of the graph to be customized.
 
-The core framework provides an implementation of this service (`o.a.i.core.runtime.services.xmlsnapshot.XmlSnapshotServiceDefault`).
 
 
 
@@ -189,18 +188,12 @@ public interface XmlSnapshotService {
 
 
 
+== Implementation
 
+The core framework provides an implementation of this service (`o.a.i.core.runtime.services.xmlsnapshot.XmlSnapshotServiceDefault`).
 
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `XmlSnapshotService` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
+To use an alternative implementation, implement use the `XmlSnapshotService` interface and xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_ApplicationFeatureRepository.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_ApplicationFeatureRepository.adoc
index 7be0555..af56cc3 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_ApplicationFeatureRepository.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_ApplicationFeatureRepository.adoc
@@ -15,7 +15,7 @@ This functionality was originally implemented as part of (non-ASF) link:http://p
 ====
 
 
-== API & Implementation
+== API
 
 The API defined by the service is:
 
@@ -46,20 +46,11 @@ These methods are designed primarily to return lists of strings for use in drop-
 
 
 
-== Registering the Service
+== Implementation
 
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `ApplicationFeatureRepository` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
+The default implementation of this service - `ApplicationFeatureRepositoryDefault` uses the `ApplicationFeatureFactory` service to instantiate `ApplicationFeature` instances.
 
-To use an alternative implementation, use
+To use an alternative implementation, implement `ApplicationFeatureRepository` interface and use
 xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
 in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
-
-== Related Services
-
-The default implementation of this service - `ApplicationFeatureRepositoryDefault` uses the `ApplicationFeatureFactory` service to instantiate `ApplicationFeature` instances.
-
-
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_MetamodelService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_MetamodelService.adoc
index 2cfb8ba..d81b1af 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_MetamodelService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_MetamodelService.adoc
@@ -48,17 +48,7 @@ public interface MetaModelService {
 
 The framework provides a default implementation of this service, `o.a.i.c.m.services.metamodel.MetaModelServiceDefault`.
 
-
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `MetamodelService` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+To use an alternative implementation, implement the `MetamodelService` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 == Related Services
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_ServiceRegistry.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_ServiceRegistry.adoc
index 76d17c6..fc15942 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_ServiceRegistry.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_ServiceRegistry.adoc
@@ -54,18 +54,5 @@ The alternative is to use the xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_Fa
 
 The core framework provides a default implementation of this service (`o.a.i.core.runtime.services.registry.ServiceRegistryDefault`).
 
-
-
-
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `ServiceRegistry` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
-
+To use an alternative implementation, implement the `ServiceRegistry` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_SwaggerService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_SwaggerService.adoc
index 5a14ede..08e2d57 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_SwaggerService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_SwaggerService.adoc
@@ -18,7 +18,7 @@ Not all of the REST API exposed by the xref:../ugvro/ugvro.adoc#[Restful Objects
 
 
 [[__rgsvc_metadata-api_SwaggerService_api-and-implementation]]
-== API & Implementation
+== API
 
 The API defined by `SwaggerService` is:
 
@@ -43,6 +43,10 @@ xref:../ugfun/ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_view-mod
 <3> Generate a Swagger spec that is the same as private case (above), but also including any xref:../rgant/rgant.adoc#_rgant-Action_restrictTo[prototype] actions.
 <4> Swagger specs can be written either in JSON or YAML format.
 
+
+
+== Implementation
+
 Isis provides a default implementation of the service, `o.a.i.core.metamodel.services.swagger.SwaggerServiceDefault`.
 
 
@@ -53,12 +57,6 @@ This service is provided as a convenience for applications, it is not (currently
 
 
 
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `SwaggerService` service is automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
-
 
 == Related Services
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_IsisJdoSupport.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_IsisJdoSupport.adoc
index f9fb125..a9062b9 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_IsisJdoSupport.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_IsisJdoSupport.adoc
@@ -279,8 +279,8 @@ public List<Order> findOrders(...) {
 
 
 
-== Registering the Services
+== Implementation
 
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the `AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core implementation of `IsisJdoSupport` service is automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
+The core framework provides a default implementation of this service, `o.a.i.objectstore.jdo.datanucleus.service.support.IsisJdoSupportImpl`
 
-To use an alternative implementation, use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
\ No newline at end of file
+To use an alternative implementation, implement the `IsisJdoSupport` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_MetricsService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_MetricsService.adoc
index 5c742f1..2f2e3a6 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_MetricsService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_MetricsService.adoc
@@ -34,12 +34,8 @@ completes.
 The framework provides a default implementation of this API, namely `o.a.i.c.r.s.metrics.MetricsServiceDefault`.
 
 
-== Registering the Service
+To use an alternative implementation, implement the `MetricsService` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' default
-implementation of `MetricsService` class is automatically registered (it is annotated with `@DomainService`)
-so no further configuration is required.
 
 
 == Related Services
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_QueryResultsCache.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_QueryResultsCache.adoc
index f269c10..92a4832 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_QueryResultsCache.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_QueryResultsCache.adoc
@@ -57,6 +57,10 @@ 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:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
+in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+
 
 
 
@@ -108,16 +112,6 @@ This refactoring will be worthwhile provided that enough of the orders being pro
 
 
 
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `QueryResultsCache` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_RepositoryService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_RepositoryService.adoc
index a36e5ce..36b8e68 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_RepositoryService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-api_RepositoryService.adoc
@@ -224,6 +224,10 @@ It is also possible to query using DataNucleus' type-safe query API.  For more d
 
 The core framework provides a default implementation of this service (`o.a.i.core.metamodel.services.repository.RepositoryServiceDefault`).
 
+To use an alternative implementation, implement `RepositoryService` interface and use
+xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
+in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+
 
 
 
@@ -248,17 +252,6 @@ This key allows this behaviour to be disabled.
 
 
 
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `RepositoryService` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
-
 
 
 == Related Services
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_AuditerService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_AuditerService.adoc
index e1f7abd..5629624 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_AuditerService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_AuditerService.adoc
@@ -83,23 +83,19 @@ audit entries that occurred in a given request/transaction, in other words whene
 another audit entry is displayed.
 
 
+These services can be activated by updating the `pom.xml` and updating the `AppManifest#getModules()` method.
 
+If menu items or contributions are not required in the UI, these can be suppressed either using security or by implementing a xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing subscriber].
 
-== Usage
-
-The typical way to indicate that an object should be audited is to annotate it with the xref:../rgant/rgant.adoc#_rgant-DomainObject_auditing[`@DomainObject#auditing()`] annotation.
 
 
+== Usage
 
+The typical way to indicate that an object should be audited is to annotate it with the xref:../rgant/rgant.adoc#_rgant-DomainObject_auditing[`@DomainObject#auditing()`] annotation.
 
-== Registering the Services
 
-The (non-ASF) link:http://platform.incode.org[Incode Platform^]'s audit module provides an implementation of this service (`AuditerService`), and also provides a number of related domain services (`AuditingServiceMenu`, `AuditingServiceRepository` and `AuditingServiceContributions`).
 
-Assuming that an `AppManifest` is being used to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app])
-then this can be activated by updating the `pom.xml` and updating the `AppManifest#getModules()` method.
 
-If menu items or contributions are not required in the UI, these can be suppressed either using security or by implementing a xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing subscriber].
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_PublisherService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_PublisherService.adoc
index f743d7e..9ffc5e3 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_PublisherService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_PublisherService.adoc
@@ -91,9 +91,19 @@ log4j.additivity.org.apache.isis.applib.services.publish.PublisherServiceLogging
 
 
 The (non-ASF) link:http://platform.incode.org[Incode Platform^]'s publishmq module also provides an implementation (`o.ia.m.publishmq.dom.servicespi.PublisherServiceUsingActiveMq`).
-This implementation publishes each member execution as an event on an link:http://activemq.apache.org[ActiveMQ] message queue.
-It also persists each execution as a `PublishedEvent` entity, allowing the event to be republished if necessary.
-The implementation also provides the ability to log additional `StatusMessage` entities, correlated on the transactionId, useful for diagnosing and monitoring the activity of subscribers of said message queues.
+This implementation:
+
+* publishes each member execution as an event on an link:http://activemq.apache.org[ActiveMQ] message queue.
+
+* persists each execution as a `PublishedEvent` entity, allowing the event to be republished if necessary.
+
+* provides the ability to log additional `StatusMessage` entities, correlated on the transactionId, useful for diagnosing and monitoring the activity of subscribers of said message queues.
+
+
+This service can be activated by updating the `pom.xml` and updating the `AppManifest#getModules()` method.
+
+The module also provide services that contribute to the UI.
+If contributions are not required in the UI, these can be suppressed either using security or by implementing a xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing subscriber].
 
 
 == Usage
@@ -106,13 +116,7 @@ To indicate that a changed object should be published is to annotate it with the
 
 
 
-== Registering the Services
-
-The (non-ASF) link:http://platform.incode.org[Incode Platform^];s publishmq module provides an implementation of this service.
-Assuming that an `AppManifest` is being used to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then this can be activated by updating the `pom.xml` and updating the `AppManifest#getModules()` method.
 
-The module also provide services that contribute to the UI.
-If contributions are not required in the UI, these can be suppressed either using security or by implementing a xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing subscriber].
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_UserRegistrationService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_UserRegistrationService.adoc
index be42bcc..543a2b3 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_UserRegistrationService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_persistence-layer-spi_UserRegistrationService.adoc
@@ -49,17 +49,6 @@ public interface UserRegistrationService {
 
 The core Apache Isis framework itself defines only an API; there is no default implementation. Rather, the implementation will depend on the security mechanism being used.
 
-That said, if you have configured your app to use the http://github.com/isisaddons/isis-module-security[Isis addons security module], then note that the security module does provide an abstract implementation (`SecurityModuleAppUserRegistrationServiceAbstract`) of the `UserRegistrationService`. You will need to extend that service and provide implementation for the two abstract methods: `getInitialRole()` and `getAdditionalInitialRoles()`.
-
-This is needed so that the self-registered users are assigned automatically to your application role(s) and be able to use the application. Without any role such user will be able only to see/use the logout link of the application.
-
-
-
-
-== Registering the Services
-
-There is no default implementation of this service provided by the core Apache Isis framework.
-
 If using the (non-ASF) link:http://platform.incode.org[Incode Platform^]'s security module) for authentication and authorization, then note that it provides an adapter class, `SecurityModuleAppUserRegistrationServiceAbstract`, that provides most of the implementation.
 You are still required to implement a subclass and register.
 
@@ -83,6 +72,7 @@ public class AppUserRegistrationService extends SecurityModuleAppUserRegistratio
 }
 ----
 
+This is needed so that the self-registered users are assigned automatically to your application role(s) and be able to use the application. Without any role such user will be able only to see/use the logout link of the application.
 
 
 == Related Services
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_EmailNotificationService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_EmailNotificationService.adoc
index 4eacac9..53e3d8b 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_EmailNotificationService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_EmailNotificationService.adoc
@@ -55,22 +55,12 @@ If you wish to write an alternative implementation of this service, note that (u
 This implies a couple of additional constraints:
 
 * first, implementation class should also be annotated with `@com.google.inject.Singleton`
-* second, there may not be any Apache Isis session running. (If necessary, one can be created on the fly using `IsisContext.doInSession(...)`)
-
-To ensure that your alternative implementation takes the place of the default implementation, register it explicitly in `isis.properties`.
-
 
+* second, there may not be any Apache Isis session running. (If necessary, one can be created on the fly using `IsisContext.doInSession(...)`)
 
-== Registering the Service
+To use an alternative implementation, implement the `EmailNotificationService` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' default
-implementation of `EmailNotificationService` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
 
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 == Related Services
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_ErrorReportingService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_ErrorReportingService.adoc
index 4184704..6bf08fe 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_ErrorReportingService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_ErrorReportingService.adoc
@@ -68,6 +68,8 @@ For example, these might include text on how to recover from the error, or worka
 
 == Implementation
 
+There is no default implementation of this service.
+
 The (non-ASF) http://github.com/isisaddons/isis-app-kitchensink[Isis addons' kitchensink] app provides an example
 implementation:
 
@@ -99,10 +101,3 @@ which is rendered as:
 image::{_imagesdir}reference-services-spi/ErrorReportingService/kitchensink-example.png[width="860px",link="{_imagesdir}reference-services-spi/ErrorReportingService/kitchensink-example.png"]
 
 
-
-
-== Registering the Services
-
-There is no default implementation of this service.
-To register your own implementation (and assuming that an `AppManifest` is being used to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]), then just ensure that the implementation is on the classpath and the module containing the implementation is returned in `AppManifest#getModules()`.
-
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_ExceptionRecognizer.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_ExceptionRecognizer.adoc
index b7bdfe3..3308d43 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_ExceptionRecognizer.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_ExceptionRecognizer.adoc
@@ -81,39 +81,17 @@ If the implementation recognizes the exception then it returns a user-friendly m
 
 The framework provides two default implementations:
 
-* `o.a.i.core.metamodel.services.container.DomainObjectContainerDefault` provided by Apache Isis core is itself an `ExceptionRecognizer`, and will handle ``ConcurrencyException``s.  It will also handle any application exceptions raised by the system (subclasses of `o.a.i.applib.RecoverableException`).
+* `o.a.i.core.metamodel.services.exceprecog.ExceptionRecognizerDocDefault` provided by Apache Isis core is itself an `ExceptionRecognizer`, and will handle ``ConcurrencyException``s.  It will also handle any application exceptions raised by the system (subclasses of `o.a.i.applib.RecoverableException`).
 
-* `o.a.i.objectstore.jdo.applib.service.exceprecog.ExceptionRecognizerCompositeForJdoObjectStore` bundles up a number of more fine-grained implementations:
+* `o.a.i.applib.services.exceprecog.jdo.ExceptionRecognizerCompositeForJdoObjectStore` bundles up a number of more fine-grained implementations:
 ** `ExceptionRecognizerForSQLIntegrityConstraintViolationUniqueOrIndexException`
 ** `ExceptionRecognizerForJDOObjectNotFoundException`
 ** `ExceptionRecognizerForJDODataStoreException`
 
 
-If you want to recognize and handle additional exceptions (for example to capture error messages specific to the JDBC driver you might be using), then create a fine-grained implementation of `ExceptionRecognizer` for the particular error message (there are some convenience implementations of the interface that you can subclass from if required) and register in `isis.properties`.
+If you want to recognize and handle additional exceptions (for example to capture error messages specific to the JDBC driver you might be using), then create a fine-grained implementation of `ExceptionRecognizer` for the particular error message (there are some convenience implementations of the interface that you can subclass from if required) and annotated with `@DomainService` in the usual way.
+Make sure that the service resides under a module registered in `AppManifest`.
 
 
-
-
-== Registering the Services
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then the default
-implementations provided by the framework (`DomainObjectContainerDefault` and
-`ExceptionRecognizerCompositeForJdoObjectStore`) will be registered.
-
-In addition, you can register any further exception recognizers in `isis.properties`:
-
-[source,ini]
-----
-isis.services=...,\
-              com.mycompany.myapp.MyExceptionRecognizer,\
-              ...
-----
-
-[NOTE]
-====
-Prior to 1.9.0, the `ExceptionRecognizerCompositeForJdoObjectStore` also required manual registration.
-====
-
 If the JDO exception recognizers are not required (rather unlikely), then they can be disabled en-masse using the xref:../rgcfg/rgcfg.adoc#_rgcfg_configuring-core[configuration property] `isis.services.ExceptionRecognizerCompositeForJdoObjectStore.disable`.
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_GridLoaderService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_GridLoaderService.adoc
index 37087bc..8c69fe9 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_GridLoaderService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_GridLoaderService.adoc
@@ -36,16 +36,8 @@ loads the grid from its serialized representation as a `.layout.xml` file, loade
 For example, the layout for a domain class `com.mycompany.myapp.Customer` would be loaded from `com/mycompany/myapp/Customer.layout.xml`.
 
 
-== Registering the Services
+To use an alternative implementation, implement `GridLoaderService` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]), then the
- default implementation of `GridLoaderService` is automatically registered and injected, and no further
- configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 == Related Services
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_GridSystemService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_GridSystemService.adoc
index df0da06..582f73a 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_GridSystemService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_GridSystemService.adoc
@@ -57,17 +57,7 @@ the service with the lowest xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_
 The framework provides `GridSystemServiceBS3`, an implementation that encodes the bootstrap3 grid system.
 (The framework also provides xref:../ugvw/ugvw.adoc#[Wicket viewer] components that are capable of interpreting and rendering this metadata).
 
-
-== Registering the Services
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]), then the
- Bootstrap3 default implementation of `GridSystemService` is automatically registered and injected, and no further
- configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+To use an alternative implementation, implement `GridSystemService` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 == Related Services
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_HintStore.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_HintStore.adoc
index 78ed173..bfad9bc 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_HintStore.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_HintStore.adoc
@@ -42,6 +42,7 @@ per the xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_BookmarkService[`Bookmar
 
 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:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 == View models
@@ -91,16 +92,6 @@ public class CustomerAndOrders implements HintStore.HintIdProvider {
 
 
 
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `HintStore` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 == Related Services
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_LocaleProvider.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_LocaleProvider.adoc
index 8646112..9cfdc8f 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_LocaleProvider.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_LocaleProvider.adoc
@@ -45,18 +45,7 @@ Currently there is no equivalent implementation for the xref:../ugvro/ugvro.adoc
 ====
 
 
-
-
-== Registering the Services
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]), __and__ that the
-xref:../ugvw/ugvw.adoc#[Wicket viewer] is being used, then an implementation of `LocaleProvider` is
-automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+To use an alternative implementation, implement the `LocaleProvider` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_RoutingService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_RoutingService.adoc
index bea08e9..16e6347 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_RoutingService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_RoutingService.adoc
@@ -55,22 +55,15 @@ public interface RoutingService {
 == Implementation
 
 The framework provides a default implementation - `RoutingServiceDefault` - which will always return the original object provided, or the home page
-if a `null` or `void` was provided.  It uses the xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-spi_HomePageProviderService[`HomePageProviderService`].
+if a `null` or `void` was provided.
+It uses the xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-spi_HomePageProviderService[`HomePageProviderService`].
 
-There can be multiple implementations of `RoutingService` registered.  These are checked in turn (chain of responsibility
-pattern), ordered according to xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`]
-(as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+There can be multiple implementations of `RoutingService` registered.
+These are checked in turn (chain of responsibility pattern), ordered according to xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 The route from the first service that returns `true` from its `canRoute(...)` method will be used.
 
 
 
-== Registering the Services
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis'
-default implementation of `RoutingService` service is automatically registered and injected (it is annotated with
-`@DomainService`) so no further configuration is required.
-
 
 
 == Related Services
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_TableColumnOrderService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_TableColumnOrderService.adoc
index a4efd77..6405299 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_TableColumnOrderService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_TableColumnOrderService.adoc
@@ -39,6 +39,11 @@ 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:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+The order from the first service that returns a non null value will be used.
+
+
 
 == Registering the Services
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_TranslationService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_TranslationService.adoc
index 168e037..f2ed5d0 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_TranslationService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_TranslationService.adoc
@@ -49,26 +49,19 @@ If in write mode, then the implementation is saving translation keys, and will a
 
 == Implementation
 
-The Apache Isis framework provides a default implementation (`TranslationServicePo`) that uses the GNU `.pot` and `.po` files for translations.  It relies on the `LocaleProvider` service (to return the `Locale` of the current user) and also the `TranslationsResolver` service (to read existing translations).
+The Apache Isis framework provides a default implementation (`TranslationServicePo`) that uses the GNU `.pot` and `.po` files for translations.
+It relies on the `LocaleProvider` service (to return the `Locale` of the current user) and also the `TranslationsResolver` service (to read existing translations).
 
 The framework also provides a supporting `TranslationServicePoMenu` provides menu items under the "Prototyping" secondary menu for controlling this service and downloading `.pot` files for translation.
 
 For more details on the implementation, see xref:../ugbtb/ugbtb.adoc#_ugbtb_i18n[i18n support].
 
 
+If the menu items are not required then these can be suppressed either using security or by implementing a xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing subscriber].
 
+To use an alternative implementation, implement the `TranslationService` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
-== Registering the Services
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' core
-implementation of `TranslationService` service (along with the supporting menu service) are automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
-
-If the menu items are not required then these can be suppressed either using security or by implementing a xref:../ugbtb/ugbtb.adoc#_ugbtb_hints-and-tips_vetoing-visibility[vetoing subscriber].
 
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_TranslationsResolver.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_TranslationsResolver.adoc
index f3c8438..8bff4ef 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_TranslationsResolver.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_TranslationsResolver.adoc
@@ -40,19 +40,7 @@ Isis' xref:../ugvw/ugvw.adoc#[Wicket viewer] provides an implementation of this
 Currently there is no equivalent implementation for the xref:../ugvro/ugvro.adoc#[RestfulObjects viewer].
 ====
 
-
-
-
-
-== Registering the Service
-
-Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
-`AppManifest` to xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]), _and_ that the xref:../ugvw/ugvw.adoc#[Wicket viewer] is being used, then an implementation of `TranslationsResolver` is
-automatically registered and injected (it is annotated with `@DomainService`) so no further configuration is required.
-
-To use an alternative implementation, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+To use an alternative implementation, implement the `TranslationsResolver` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 
 
 
diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_UrlEncodingService.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_UrlEncodingService.adoc
index 5e77af5..7406f63 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_UrlEncodingService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_presentation-layer-spi_UrlEncodingService.adoc
@@ -53,7 +53,5 @@ using base-64 encoding and UTF-8 character set.  As already noted, be aware that
 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, use
-xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
-in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
+To use an alternative implementation, implement the `UrlEncodingService` interface and use xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained in the xref:../rgsvc/rgsvc.adoc#__rgsvc_intro_overriding-the-services[introduction] to this guide).
 

-- 
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.

[isis] 02/03: ISIS-1742: rolls ServiceRegistry2 up into ServiceRegistry

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch dev/2.0.0/ISIS-1742-remove-deprecations
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 6aaf3731cd068a73ed2fa5300e6aac4c71281ebd
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Oct 16 22:49:01 2017 +0100

    ISIS-1742: rolls ServiceRegistry2 up into ServiceRegistry
---
 .../guides/rgsvc/_rgsvc_metadata-api_ServiceRegistry.adoc         | 8 ++++----
 .../guides/ugtst/_ugtst_integ-test-support_abstract-class.adoc    | 2 +-
 .../java/org/apache/isis/applib/fixturescripts/FixtureScript.java | 5 ++---
 .../org/apache/isis/applib/services/registry/ServiceRegistry.java | 4 ++++
 .../apache/isis/applib/services/registry/ServiceRegistry2.java    | 6 ------
 .../org/apache/isis/applib/services/registry/package-info.java    | 2 +-
 .../isis/core/integtestsupport/IntegrationTestAbstract2.java      | 4 ++--
 .../services/appfeat/ApplicationFeatureRepositoryDefault.java     | 8 ++------
 .../services/bookmarks/BookmarkServiceInternalDefault.java        | 8 ++++----
 .../core/metamodel/services/registry/ServiceRegistryDefault.java  | 4 ++--
 .../services/appfeat/ApplicationFeatureRepositoryDefaultTest.java | 8 ++------
 .../core/runtime/fixturedomainservice/ObjectFixtureService.java   | 4 ++--
 .../core/runtime/services/eventbus/EventBusServiceDefault.java    | 6 +++---
 .../src/main/java/domainapp/dom/impl/HelloWorldObjects.java       | 4 ++--
 .../domainapp/modules/simple/dom/impl/SimpleObjectRepository.java | 4 ++--
 .../modules/simple/dom/impl/SimpleObjectRepository_Test.java      | 4 ++--
 .../src/main/java/domainapp/dom/impl/HelloWorldObjects.java       | 2 +-
 .../domainapp/modules/simple/dom/impl/SimpleObjectRepository.java | 2 +-
 .../modules/simple/dom/impl/SimpleObjectRepository_Test.java      | 2 +-
 todo-deprecation-list.txt                                         | 7 +++++++
 20 files changed, 45 insertions(+), 49 deletions(-)

diff --git a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_ServiceRegistry.adoc b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_ServiceRegistry.adoc
index fc15942..ceee9e7 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_ServiceRegistry.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_metadata-api_ServiceRegistry.adoc
@@ -1,21 +1,21 @@
 [[_rgsvc_metadata-api_ServiceRegistry]]
-= `ServiceRegistry2`
+= `ServiceRegistry`
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or ag [...]
 :_basedir: ../../
 :_imagesdir: images/
 
 
-The `ServiceRegistry2` service collects together methods for injecting or looking up domain services (either provided by the framework or application-specific) currently known to the runtime.
+The `ServiceRegistry` service collects together methods for injecting or looking up domain services (either provided by the framework or application-specific) currently known to the runtime.
 
 
 
 == API
 
-The API of `ServiceRegistry2` is:
+The API of `ServiceRegistry` is:
 
 [source,java]
 ----
-public interface ServiceRegistry2 {
+public interface ServiceRegistry {
     <T> T injectServicesInto(final T domainObject);     // <1>
     <T> T lookupService(Class<T> service);              // <2>
     <T> Iterable<T> lookupServices(Class<T> service);   // <3>
diff --git a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_abstract-class.adoc b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_abstract-class.adoc
index 7b1d341..8621862 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_abstract-class.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugtst/_ugtst_integ-test-support_abstract-class.adoc
@@ -58,7 +58,7 @@ The `IntegrationTestAbstract2` also provides a number of helper/convenience meth
 
 * xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_FactoryService[`FactoryService`]
 
-* xref:../rgsvc/rgsvc.adoc#_rgsvc_metadata-api_ServiceRegistry[`ServiceRegistry2`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_metadata-api_ServiceRegistry[`ServiceRegistry`]
 
 * xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_WrapperFactory[`WrapperFactory`] +
 +
diff --git a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
index 99eb406..e4e1316 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/fixturescripts/FixtureScript.java
@@ -35,7 +35,6 @@ import org.joda.time.LocalDate;
 import org.joda.time.LocalDateTime;
 
 import org.apache.isis.applib.AbstractViewModel;
-import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Title;
@@ -44,7 +43,7 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.fixtures.FixtureType;
 import org.apache.isis.applib.fixtures.InstallableFixture;
 import org.apache.isis.applib.services.factory.FactoryService;
-import org.apache.isis.applib.services.registry.ServiceRegistry2;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.sessmgmt.SessionManagementService;
 import org.apache.isis.applib.services.user.UserService;
@@ -894,7 +893,7 @@ public abstract class FixtureScript
     protected FactoryService factoryService;
 
     @javax.inject.Inject
-    protected ServiceRegistry2 serviceRegistry;
+    protected ServiceRegistry serviceRegistry;
 
     @javax.inject.Inject
     protected RepositoryService repositoryService;
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java b/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
index 882c92d..16fb059 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.applib.services.registry;
 
+import java.util.List;
+
 import org.apache.isis.applib.annotation.Programmatic;
 
 public interface ServiceRegistry {
@@ -32,4 +34,6 @@ public interface ServiceRegistry {
     @Programmatic
     <T> Iterable<T> lookupServices(Class<T> service);
 
+    @Programmatic
+    List<Object> getRegisteredServices();
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry2.java b/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry2.java
index 74bf0d2..54d1cd1 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry2.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/registry/ServiceRegistry2.java
@@ -19,12 +19,6 @@
 
 package org.apache.isis.applib.services.registry;
 
-import java.util.List;
-
-import org.apache.isis.applib.annotation.Programmatic;
-
 public interface ServiceRegistry2 extends ServiceRegistry {
 
-    @Programmatic
-    List<Object> getRegisteredServices();
 }
diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/registry/package-info.java b/core/applib/src/main/java/org/apache/isis/applib/services/registry/package-info.java
index ba3cc43..9d6da01 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/services/registry/package-info.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/registry/package-info.java
@@ -18,7 +18,7 @@
  */
 
 /**
- * The {@link org.apache.isis.applib.services.registry.ServiceRegistry2} service collects together methods injecting
+ * The {@link org.apache.isis.applib.services.registry.ServiceRegistry} service collects together methods injecting
  * or looking up domain services (either provided by the framework or application-specific) currently known to the
  * runtime.
  *
diff --git a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract2.java b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract2.java
index f3a1eee..d90045d 100644
--- a/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract2.java
+++ b/core/integtestsupport/src/main/java/org/apache/isis/core/integtestsupport/IntegrationTestAbstract2.java
@@ -29,7 +29,7 @@ import org.apache.isis.applib.AppManifestAbstract;
 import org.apache.isis.applib.fixturescripts.FixtureScript;
 import org.apache.isis.applib.fixturescripts.FixtureScripts;
 import org.apache.isis.applib.services.factory.FactoryService;
-import org.apache.isis.applib.services.registry.ServiceRegistry2;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.applib.services.sessmgmt.SessionManagementService;
 import org.apache.isis.applib.services.user.UserService;
@@ -103,7 +103,7 @@ public abstract class IntegrationTestAbstract2 extends IntegrationTestAbstract {
     protected FactoryService factoryService;
 
     @javax.inject.Inject
-    protected ServiceRegistry2 serviceRegistry;
+    protected ServiceRegistry serviceRegistry;
 
     @Inject
     RepositoryService repositoryService;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
index 5c323e6..e7c5417 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefault.java
@@ -31,7 +31,6 @@ import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 
-import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
@@ -41,7 +40,7 @@ import org.apache.isis.applib.fixturescripts.FixtureScript;
 import org.apache.isis.applib.services.appfeat.ApplicationFeatureRepository;
 import org.apache.isis.applib.services.appfeat.ApplicationMemberType;
 import org.apache.isis.applib.services.config.ConfigurationService;
-import org.apache.isis.applib.services.registry.ServiceRegistry2;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.SingleIntValueFacet;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
@@ -557,10 +556,7 @@ public class ApplicationFeatureRepositoryDefault implements ApplicationFeatureRe
     //region  > services (injected)
 
     @javax.inject.Inject
-    ServiceRegistry2 serviceRegistry;
-
-    @javax.inject.Inject
-    DomainObjectContainer container;
+    ServiceRegistry serviceRegistry;
 
     @javax.inject.Inject
     ConfigurationService configurationService;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceInternalDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceInternalDefault.java
index 14e0883..9d7f56e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceInternalDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/bookmarks/BookmarkServiceInternalDefault.java
@@ -31,7 +31,7 @@ import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.bookmark.BookmarkHolder;
 import org.apache.isis.applib.services.bookmark.BookmarkService;
-import org.apache.isis.applib.services.registry.ServiceRegistry2;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.runtime.persistence.ObjectNotFoundException;
@@ -156,7 +156,7 @@ public class BookmarkServiceInternalDefault implements BookmarkService {
     private void cacheServicesByClassNameIfNecessary() {
         if (servicesByClassName == null) {
             final Map<String,Object> servicesByClassName = Maps.newHashMap();
-            final List<Object> registeredServices = serviceRegistry2.getRegisteredServices();
+            final List<Object> registeredServices = serviceRegistry.getRegisteredServices();
             for (Object registeredService : registeredServices) {
                 final String serviceClassName = registeredService.getClass().getName();
                 servicesByClassName.put(serviceClassName, registeredService);
@@ -170,9 +170,9 @@ public class BookmarkServiceInternalDefault implements BookmarkService {
     PersistenceSessionServiceInternal persistenceSessionServiceInternal;
 
     @javax.inject.Inject
-    private WrapperFactory wrapperFactory;
+    WrapperFactory wrapperFactory;
 
     @Inject
-    ServiceRegistry2 serviceRegistry2;
+    ServiceRegistry serviceRegistry;
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
index 6e1c057..f2a744d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
@@ -24,7 +24,7 @@ import java.util.List;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.applib.services.registry.ServiceRegistry2;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.ServicesInjectorAware;
@@ -33,7 +33,7 @@ import org.apache.isis.core.metamodel.services.ServicesInjectorAware;
         nature = NatureOfService.DOMAIN,
         menuOrder = "" + Integer.MAX_VALUE
 )
-public class ServiceRegistryDefault implements ServiceRegistry2, ServicesInjectorAware {
+public class ServiceRegistryDefault implements ServiceRegistry, ServicesInjectorAware {
 
 
     @Programmatic
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
index ca1a1e2..c9cb899 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/services/appfeat/ApplicationFeatureRepositoryDefaultTest.java
@@ -36,7 +36,7 @@ import org.apache.isis.applib.DomainObjectContainer;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.services.factory.FactoryService;
-import org.apache.isis.applib.services.registry.ServiceRegistry2;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.facets.all.hide.HiddenFacet;
 import org.apache.isis.core.metamodel.facets.members.hidden.HiddenFacetAbstract;
@@ -76,13 +76,10 @@ public class ApplicationFeatureRepositoryDefaultTest {
     ObjectAction mockActThatIsHidden;
 
     @Mock
-    DomainObjectContainer mockContainer;
-
-    @Mock
     FactoryService mockFactoryService;
 
     @Mock
-    ServiceRegistry2 mockServiceRegistry;
+    ServiceRegistry mockServiceRegistry;
 
     @Mock
     SpecificationLoader mockSpecificationLoader;
@@ -92,7 +89,6 @@ public class ApplicationFeatureRepositoryDefaultTest {
     @Before
     public void setUp() throws Exception {
         applicationFeatureRepository = new ApplicationFeatureRepositoryDefault();
-        applicationFeatureRepository.container = mockContainer;
         applicationFeatureRepository.serviceRegistry = mockServiceRegistry;
         applicationFeatureRepository.specificationLoader = mockSpecificationLoader;
 
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureService.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureService.java
index c05cb27..f26b7c5 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureService.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/fixturedomainservice/ObjectFixtureService.java
@@ -40,7 +40,7 @@ import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.RestrictTo;
-import org.apache.isis.applib.services.registry.ServiceRegistry2;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.core.commons.config.ConfigurationConstants;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.commons.exceptions.IsisException;
@@ -259,6 +259,6 @@ public class ObjectFixtureService {
     IsisConfiguration configuration;
 
     @javax.inject.Inject
-    ServiceRegistry2 serviceRegistry;
+    ServiceRegistry serviceRegistry;
 
 }
\ No newline at end of file
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefault.java
index 2fc5b72..14d2e23 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/eventbus/EventBusServiceDefault.java
@@ -27,7 +27,7 @@ import org.apache.isis.applib.NonRecoverableException;
 import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.services.eventbus.EventBusImplementation;
 import org.apache.isis.applib.services.eventbus.EventBusService;
-import org.apache.isis.applib.services.registry.ServiceRegistry2;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.core.commons.lang.ClassUtil;
 import org.apache.isis.core.metamodel.facets.Annotations;
 import org.apache.isis.core.runtime.services.RequestScopedService;
@@ -121,7 +121,7 @@ public abstract class EventBusServiceDefault extends EventBusService {
     @Override
     protected org.apache.isis.applib.services.eventbus.EventBusImplementation newEventBus() {
         final EventBusImplementation implementation = instantiateEventBus();
-        serviceRegistry2.injectServicesInto(implementation);
+        serviceRegistry.injectServicesInto(implementation);
         return implementation;
     }
 
@@ -147,6 +147,6 @@ public abstract class EventBusServiceDefault extends EventBusService {
     //endregion
 
     @javax.inject.Inject
-    ServiceRegistry2 serviceRegistry2;
+    ServiceRegistry serviceRegistry;
 
 }
diff --git a/example/application/helloworld/src/main/java/domainapp/dom/impl/HelloWorldObjects.java b/example/application/helloworld/src/main/java/domainapp/dom/impl/HelloWorldObjects.java
index a8c4d39..2f4dc51 100644
--- a/example/application/helloworld/src/main/java/domainapp/dom/impl/HelloWorldObjects.java
+++ b/example/application/helloworld/src/main/java/domainapp/dom/impl/HelloWorldObjects.java
@@ -29,7 +29,7 @@ import org.apache.isis.applib.annotation.ParameterLayout;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.query.QueryDefault;
-import org.apache.isis.applib.services.registry.ServiceRegistry2;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.repository.RepositoryService;
 
 @DomainService(
@@ -69,7 +69,7 @@ public class HelloWorldObjects {
     RepositoryService repositoryService;
 
     @javax.inject.Inject
-    ServiceRegistry2 serviceRegistry;
+    ServiceRegistry serviceRegistry;
     //endregion
 
 }
diff --git a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository.java b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository.java
index 7a0f14e..aaafaf5 100644
--- a/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository.java
+++ b/example/application/simpleapp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository.java
@@ -23,7 +23,7 @@ import java.util.List;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.applib.annotation.NatureOfService;
 import org.apache.isis.applib.query.QueryDefault;
-import org.apache.isis.applib.services.registry.ServiceRegistry2;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.repository.RepositoryService;
 
 @DomainService(
@@ -51,5 +51,5 @@ public class SimpleObjectRepository {
     @javax.inject.Inject
     RepositoryService repositoryService;
     @javax.inject.Inject
-    ServiceRegistry2 serviceRegistry;
+    ServiceRegistry serviceRegistry;
 }
diff --git a/example/application/simpleapp/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository_Test.java b/example/application/simpleapp/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository_Test.java
index eea0c81..268a57a 100644
--- a/example/application/simpleapp/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository_Test.java
+++ b/example/application/simpleapp/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository_Test.java
@@ -29,7 +29,7 @@ import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 
-import org.apache.isis.applib.services.registry.ServiceRegistry2;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.applib.services.repository.RepositoryService;
 import org.apache.isis.core.unittestsupport.jmocking.JMockActions;
 import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
@@ -43,7 +43,7 @@ public class SimpleObjectRepository_Test {
     public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
 
     @Mock
-    ServiceRegistry2 mockServiceRegistry;
+    ServiceRegistry mockServiceRegistry;
     
     @Mock
     RepositoryService mockRepositoryService;
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObjects.java b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObjects.java
index b27729a..d618a83 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObjects.java
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObjects.java
@@ -72,7 +72,7 @@ public class HelloWorldObjects {
     RepositoryService repositoryService;
 
     @javax.inject.Inject
-    ServiceRegistry2 serviceRegistry;
+    ServiceRegistry serviceRegistry;
     //endregion
 
 }
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository.java
index a0bbaf9..85c7bfe 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository.java
@@ -54,5 +54,5 @@ public class SimpleObjectRepository {
     @javax.inject.Inject
     RepositoryService repositoryService;
     @javax.inject.Inject
-    ServiceRegistry2 serviceRegistry;
+    ServiceRegistry serviceRegistry;
 }
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository_Test.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository_Test.java
index ed90361..2851df3 100644
--- a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository_Test.java
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjectRepository_Test.java
@@ -46,7 +46,7 @@ public class SimpleObjectRepository_Test {
     public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
 
     @Mock
-    ServiceRegistry2 mockServiceRegistry;
+    ServiceRegistry mockServiceRegistry;
     
     @Mock
     RepositoryService mockRepositoryService;
diff --git a/todo-deprecation-list.txt b/todo-deprecation-list.txt
index 79d89f9..6f54486 100644
--- a/todo-deprecation-list.txt
+++ b/todo-deprecation-list.txt
@@ -5,6 +5,7 @@
 TO REMOVE:
 
 
+org.apache.isis.core.runtime.services.eventbus.adapter.EventBusImplementationForGuava
 
 
 org.apache.isis.applib.clock
@@ -419,6 +420,12 @@ org.apache.isis.applib.services.publish - remove classes pertaining to original
     PublishingService.java - remove domain service interface
     StatusMessageMessageType.java - remove class
 
+org.apache.isis.applib.services.registry
+    ServiceRegistry2 - roll up to ServiceRegistry
+
+
+
+
 org.apache.isis.applib.services.settings
     SettingTypes.java - remove, used only by 3rd party code (incode platform settings module)
 

-- 
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.