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 2016/07/12 22:54:14 UTC

[21/21] isis git commit: ISIS-1465: updating docs for the new internal services introduced in 1.13.0

ISIS-1465: updating docs for the new internal services introduced in 1.13.0


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/97726546
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/97726546
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/97726546

Branch: refs/heads/master
Commit: 97726546117481f7cdf63078fa92ca25df3e8533
Parents: 1d0c459
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Jul 12 23:43:12 2016 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Jul 12 23:43:12 2016 +0100

----------------------------------------------------------------------
 .../_migration-notes_1.12.0-to-1.13.0.adoc      |   8 +-
 .../guides/_cgcom_post-release-successful.adoc  |   2 +-
 .../guides/_rgfis_application-layer.adoc        |  24 ++++-
 .../guides/_rgfis_persistence-layer.adoc        |  25 ++++-
 ...rgfis_spi_AuthenticationSessionProvider.adoc |  32 ++++++
 .../_rgfis_spi_ContentNegotiationService.adoc   |  22 ++--
 ..._rgfis_spi_MessageBrokerServiceInternal.adoc |  44 ++++++++
 ...s_spi_PersistenceSessionServiceInternal.adoc |  96 ++++++++++++++++++
 .../_rgfis_spi_RepresentationService.adoc       |   7 +-
 ...is_spi_TransactionStateProviderInternal.adoc |  38 +++++++
 ..._rgsvc_api_ApplicationFeatureRepository.adoc |   7 ++
 .../guides/_rgsvc_api_BookmarkService.adoc      |   7 +-
 .../guides/_rgsvc_api_EmailService.adoc         |   4 +-
 .../_rgsvc_api_ExecutionParametersService.adoc  |  30 ++++++
 .../guides/_rgsvc_api_MementoService.adoc       |  21 ++--
 .../guides/_rgsvc_api_MessageService.adoc       |   2 +-
 .../guides/_rgsvc_api_SwitchUserService.adoc    |  42 ++++++++
 .../guides/_rgsvc_api_TransactionService.adoc   |   2 +-
 .../guides/_rgsvc_spi_AuditerService.adoc       |   2 +-
 .../guides/_rgsvc_spi_AuditingService.adoc      |   4 +-
 .../guides/_rgsvc_spi_EventSerializer.adoc      |   2 +-
 .../guides/_rgsvc_spi_PublisherService.adoc     |   2 +-
 .../guides/_rgsvc_spi_PublishingService.adoc    |   4 +-
 .../guides/_rgsvc_spi_RoutingService.adoc       |   4 +-
 .../main/asciidoc/guides/_rgsvc_testing.adoc    |  24 ++++-
 ...re-concepts_framework-provided-services.adoc |   1 -
 .../src/main/asciidoc/screencasts.adoc          | 100 +++++++++----------
 27 files changed, 455 insertions(+), 101 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/_migration-notes_1.12.0-to-1.13.0.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/_migration-notes_1.12.0-to-1.13.0.adoc b/adocs/documentation/src/main/asciidoc/_migration-notes_1.12.0-to-1.13.0.adoc
index 811788a..24e914a 100644
--- a/adocs/documentation/src/main/asciidoc/_migration-notes_1.12.0-to-1.13.0.adoc
+++ b/adocs/documentation/src/main/asciidoc/_migration-notes_1.12.0-to-1.13.0.adoc
@@ -34,8 +34,12 @@ was an amalgam of `cmd.xsd` and `ixn.xsd`).
 
 The reworked `CommandService` now properly supports property edits in the exact same way as action invocations.
 
-As a side-effect of this work, note also that the `CommandService#startTransaction(...)` SPI is *NO LONGER CALLED* by
-the framework.
+As a side-effect of this work, note also that:
+
+* the `CommandService#startTransaction(...)` SPI is *NO LONGER CALLED* by the framework.
+
+* the `BackgroundService#asActionInvocationMemento(...)` (not formally part of the API) is also no longer called by the
+framework; moreover the default implementation now throws an exception to this effect.
 
 
 == Auditing

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_cgcom_post-release-successful.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_cgcom_post-release-successful.adoc b/adocs/documentation/src/main/asciidoc/guides/_cgcom_post-release-successful.adoc
index 7b379c9..2dc5f03 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_cgcom_post-release-successful.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_cgcom_post-release-successful.adoc
@@ -304,8 +304,8 @@ Because we release from a branch, the changes made in the branch (changes to `po
 git checkout master                           # update master with latest
 git pull
 git merge release-1.14.0-RC1                  # merge branch onto master
-git branch -d release-1.14.0-RC1              # branch no longer needed
 git push origin --delete release-1.14.0-RC1   # remote branch no longer needed
+git branch -d release-1.14.0-RC1              # branch no longer needed
 ----
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgfis_application-layer.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgfis_application-layer.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgfis_application-layer.adoc
index 00585c5..46d7e42 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgfis_application-layer.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgfis_application-layer.adoc
@@ -26,6 +26,17 @@ Impl'n (g: a:)
 
 
 
+
+|xref:rgfis.adoc#_rgfis_spi_AuthenticationSessionProvider[`o.a.i.core.commons.` +
+`authentication.` +
+`AuthenticationSessionProvider`]
+|Simply responsible for obtaining the current `AuthenticationSession` (the framework's internal representation of the currently logged-in user).
+|`AuthenticationSession-` +
+`ProviderDefault` +
+``isis-core-runtime``
+|Default implementation looks up from `IsisSessionFactory` singleton's thread-local
+
+
 |xref:rgfis.adoc#_rgfis_spi_CommandDtoServiceInternal[`o.a.i.c.m.s.command` +
 `CommandDtoServiceInternal`]
 |Creates memento of current action invocation, for use as a serializable XML reified command.  The
@@ -34,17 +45,24 @@ xref:rgant.adoc#_rgant-Action_command[`@Action#commandExecuteIn()`] or
 xref:rgant.adoc#_rgant-Property_command[`@Property#commandExecuteIn()`].
 |`CommandDtoService-` +
 `InternalServiceDefault` +
-``o.a.i.c.r.s.command`` +
 ``isis-core-runtime``
 |
 
 
+|xref:rgfis.adoc#_rgfis_spi_MessageBrokerServiceInternal[`o.a.i.c.m.s.msgbroker` +
+`MessageBrokerServiceInternal`]
+|A wrapper around xref:rgsvc.adoc#_rgsvc_api_MessageService[`MessageService`].
+|MessageBrokerService-` +
+`InternalDefault` +
+``isis-core-runtime``
+|This service does not provide any additional capabilities over `MessageService`, and will (most likely) be conflated with that service in the future.
+
+
 |xref:rgfis.adoc#_rgfis_spi_InteractionDtoServiceInternal[`o.a.i.c.m.s.ixn` +
 `InteractionDtoServiceInternal`]
 |Creates DTO for the current execution of an action invocation or property edit, for use either as a reified command or for implementations of the xref:rgsvc.adoc#_rgsvc_spi_PublishingService[`PublishingService`].
 |`CommandDtoService-` +
 `InternalServiceDefault` +
-``o.a.i.c.m.s.command`` +
 ``isis-core-metamodel``
 |
 
@@ -63,5 +81,7 @@ Key:
 
 
 
+include::_rgfis_spi_AuthenticationSessionProvider.adoc[leveloffset=+1]
 include::_rgfis_spi_CommandDtoServiceInternal.adoc[leveloffset=+1]
+include::_rgfis_spi_MessageBrokerServiceInternal.adoc[leveloffset=+1]
 include::_rgfis_spi_InteractionDtoServiceInternal.adoc[leveloffset=+1]

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgfis_persistence-layer.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgfis_persistence-layer.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgfis_persistence-layer.adoc
index 4a6b665..1e268c0 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgfis_persistence-layer.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgfis_persistence-layer.adoc
@@ -43,6 +43,17 @@ xref:rgfis.adoc#_rgfis_spi_AuditerService[`AuditerService`].
 |
 
 
+|xref:rgfis.adoc#_rgfis_spi_PersistenceSessionServiceInternal[`o.a.i.c.m.s.` +
+`persistsession.` +
+`PersistenceSessionServiceInternal`]
+|Acts as a facade to the underlying JDO persistence session / database connection.  As such it provides methods for
+querying and for persisting objects.
+|`PersistenceSessionService-` +
+`InternalDefault` +
+`isis-core-runtime`
+|
+
+
 |xref:rgfis.adoc#_rgfis_spi_PublishingServiceInternal[`o.a.i.c.m.s.publishing.` +
 `PublishingServiceInternal`]
 |Co-ordinates between
@@ -52,11 +63,21 @@ xref:rgsvc.adoc#_rgsvc_spi_PublisherService[`PublisherService`] and (deprecated)
 xref:rgsvc.adoc#_rgsvc_spi_PublishingService[`PublishingService`].
 |`PublishingService-` +
 `InternalDefault` +
-`o.a.i.c.r.publishing` +
 `isis-core-runtime`
 |
 
 
+|xref:rgfis.adoc#_rgfis_spi_TransactionStateProviderInternal[`o.a.i.c.m.s.` +
+`transtate.` +
+`TransactionStateProviderInternal`]
+|Simply provides the ability to check as to the state of the current transaction.
+|`TransactionStateProvider-` +
+`InternalDefault` +
+`isis-core-runtime`
+|
+
+
+
 
 |===
 
@@ -72,4 +93,6 @@ Key:
 
 include::_rgfis_spi_AuditingServiceInternal.adoc[leveloffset=+1]
 include::_rgfis_spi_ChangedObjectsServiceInternal.adoc[leveloffset=+1]
+include::_rgfis_spi_PersistenceSessionServiceInternal.adoc[leveloffset=+1]
 include::_rgfis_spi_PublishingServiceInternal.adoc[leveloffset=+1]
+include::_rgfis_spi_TransactionStateProviderInternal.adoc[leveloffset=+1]

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_AuthenticationSessionProvider.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_AuthenticationSessionProvider.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_AuthenticationSessionProvider.adoc
new file mode 100644
index 0000000..567dc59
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_AuthenticationSessionProvider.adoc
@@ -0,0 +1,32 @@
+[[_rgfis_spi_AuthenticationSessionProvider]]
+= `AuthenticationSessionProvider`
+: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 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.
+:_basedir: ../
+:_imagesdir: images/
+
+
+The (internal) `AuthenticationSessionProvider` domain service is simply responsible for obtaining the `AuthenticationSession` (being the framework's internal representation of the currently logged in user).
+
+
+
+
+== SPI and Implementation
+
+The SPI of the service is:
+
+[source,java]
+----
+public interface AuthenticationSessionProvider {
+    AuthenticationSession getAuthenticationSession();
+}
+----
+
+
+The framework provides a default implementation of the service, `AuthenticationSessionProviderDefault`, which looks up
+the current `AuthenticationSession` from `IsisSessionFactory` singleton service:
+
+[source,java]
+----
+isisSessionFactory.getCurrentSession().getAuthenticationSession();
+----
+

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_ContentNegotiationService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_ContentNegotiationService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_ContentNegotiationService.adoc
index d1d4a14..6801e6c 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_ContentNegotiationService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_ContentNegotiationService.adoc
@@ -26,9 +26,9 @@ If the underlying tables change (as the result of a change in their correspondin
 +
 The `ContentNegotiationService` is responsible for inspecting the HTTP `Accept` header, and use this to select the correct representation to render.  +
 +
-The Apache Isis framework provides a default implementation of `ContentNegotiationService` which inspects the "x-ro-domaintype" component of the HTTP `Accept` header.  If present, this implementation will delegate to the companion xref:rgsvc.adoc#_rgsvc_spi_ContentMappingService[`ContentMappingService`] service, if configured.  +
+The Apache Isis framework provides three implementations of `ContentNegotiationService` which inspects different elements of the HTTP `Accept` header.  One of these implementations, `ContentNegotiationServiceXRoDomainType` will further delegate down to the companion xref:rgsvc.adoc#_rgsvc_spi_ContentMappingService[`ContentMappingService`] service (if configured/available), based on the value of the "x-ro-domain-type" parameter of the header. +
 +
-A typical implementation of `ContentMappingService` will convert the domain object into some sort of DTO (data transfer object) as specified by the "x-ro-domaintype".  If this DTO is annotated with JAXB or Jackson mappings, then the RO viewer (courtesy of the underlying link:http://resteasy.jboss.org/[RestEasy] framework) can serialize these directly  +
+A typical implementation of `ContentMappingService` will convert the domain object into some sort of DTO (data transfer object) as specified by the "x-ro-domaintype".  If this DTO is annotated with JAXB or Jackson mappings, then the RO viewer (courtesy of the underlying link:http://resteasy.jboss.org/[RestEasy] framework) can serialize these directly. +
 +
 What all that means is that, if the underlying entities change, we are required to update the mappings in the `ContentMappingService` to map to the same DTOs.
 
@@ -46,23 +46,18 @@ The SPI defined by this service is:
 [source,java]
 ----
 public interface ContentNegotiationService {
-    @Programmatic
     Response.ResponseBuilder buildResponse(                     // <1>
             RepresentationService.Context2 renderContext2,
             ObjectAdapter objectAdapter);
-    @Programmatic
     Response.ResponseBuilder buildResponse(                     // <2>
             RepresentationService.Context2 renderContext2,
             ObjectAndProperty objectAndProperty);
-    @Programmatic
     Response.ResponseBuilder buildResponse(                     // <3>
             RepresentationService.Context2 renderContext2,
             ObjectAndCollection objectAndCollection);
-    @Programmatic
     Response.ResponseBuilder buildResponse(                     // <4>
             RepresentationService.Context2 renderContext2,
             ObjectAndAction objectAndAction);
-    @Programmatic
     Response.ResponseBuilder buildResponse(                     // <5>
             RepresentationService.Context2 renderContext2,
             ObjectAndActionInvocation objectAndActionInvocation);
@@ -107,7 +102,7 @@ public abstract class ContentNegotiationServiceAbstract implements ContentNegoti
 }
 ----
 
-As discussed in the introduction, the framework also provides a default implementation, `o.a.i.v.ro.rendering.service.conneg.ContentNegotiationServiceXRoDomainType`.   This handles content negotiation for two of the possible representations, object representations and for action result representations:
+As discussed in the introduction, the framework also provides three implementation of this service, one of which is `o.a.i.v.ro.rendering.service.conneg.ContentNegotiationServiceXRoDomainType`.   This implementation handles content negotiation for two of the possible representations, object representations and for action result representations:
 
 * For object representations it will handle requests with HTTP `Accept` headers of the form:
 ** `application/json;profile=urn:org.restfulobjects:repr-types/object;x-ro-domain-type=...`
@@ -122,6 +117,15 @@ The value of the `x-ro-domain-type` parameter corresponds to the DTO to be mappe
 
 If the DTO is annotated with JAXB, then also note that the runtime type must be annotated with the JAXB `javax.xml.bind.annotation.XmlRootElement` so that RestEasy is able to unambiguously serialize it.
 
+The other two implementations of `ContentNegotiationService` are:
+
+* `ContentNegotiationServiceForRestfulObjectsV1_0` +
++
+which returns representations according to the link:http://restfulobjects.org[Restful Objects] spec
+
+* `ContentNegotiationServiceOrgApacheIsisV1` +
++
+which returns xref:ugvro.adoc#_ugvro_simplified-representations[simplified representations]
 
 
 
@@ -184,7 +188,7 @@ If the property is not set, then the default depends on the xref:rgcfg.adoc#_rgc
 
 Assuming that the `configuration-and-annotation` services installer is configured (implicit if using the
 `AppManifest` to xref:rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[bootstrap the app]) then Apache Isis' default
-implementation of `ContentNegotiationService` service is automatically registered and injected (it is annotated with
+implementations of `ContentNegotiationService` service are automatically registered and injected (it is annotated with
 `@DomainService`) so no further configuration is required.
 
 To use an alternative implementation, use

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_MessageBrokerServiceInternal.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_MessageBrokerServiceInternal.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_MessageBrokerServiceInternal.adoc
new file mode 100644
index 0000000..67b78be
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_MessageBrokerServiceInternal.adoc
@@ -0,0 +1,44 @@
+[[_rgfis_spi_MessageBrokerServiceInternal]]
+= `MessageBrokerServiceInternal`
+: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 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.
+:_basedir: ../
+:_imagesdir: images/
+
+
+The (internal) `MessageBrokerServiceInternal` domain service is a wrapper around
+xref:rgsvc.adoc#_rgsvc_api_MessageService[`MessageService`].
+
+
+[NOTE]
+====
+The service does not provide any additional capabilities over and those of `MessageService`, and will (most likely) be
+conflated with that service in the future.
+====
+
+
+
+
+
+== SPI
+
+The SPI of the service is:
+
+[source,java]
+----
+public interface MessageBrokerServiceInternal {
+    void informUser(String message);
+    void warnUser(String message);
+    void raiseError(String message);
+}
+----
+
+
+== Runtime vs Noop implementation
+
+The framework provides two implementations:
+
+* `MessageBrokerServiceInternalDefault` is provided by `isis-core-runtime`, and is used during normal use and integration tests
+
+* `MessageBrokerServiceInternalNoop` is provided as a fallback by `isis-core-metamodel`, and is provided to allow the xref:rgmvn.adoc[maven plugin] to be bootstrapped without any "backend" database.
+
+The `...Default` implementation takes priority over the `...Noop` implementation.

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_PersistenceSessionServiceInternal.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_PersistenceSessionServiceInternal.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_PersistenceSessionServiceInternal.adoc
new file mode 100644
index 0000000..bb89ade
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_PersistenceSessionServiceInternal.adoc
@@ -0,0 +1,96 @@
+[[_rgfis_spi_PersistenceSessionServiceInternal]]
+= `PersistenceSessionServiceInternal`
+: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 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.
+:_basedir: ../
+:_imagesdir: images/
+
+
+The (internal) `PersistenceSessionServiceInternal` domain service acts as a facade to the underlying JDO persistence session / database connection.  As such it provides methods for querying and for persisting objects.
+
+[NOTE]
+====
+The default implementation of this service is not (as of `1.13.0`) request-scoped, however all of the methods delegate
+to the `PersistenceSession` of the current `IsisSession` - obtained from the thread-local of `IsisSessionFactory` singleton service.
+So, in effect the service does act as if it is request scoped.
+====
+
+
+
+== SPI
+
+The SPI of the service is a hierarchy of types.  First is `AdapterManagerBase`:
+
+[source,java]
+----
+public interface AdapterManagerBase {
+    ObjectAdapter getAdapterFor(Object pojo);           // <1>
+    ObjectAdapter adapterFor(Object domainObject);      // <2>
+----
+<1> Gets the `ObjectAdapter` for the specified domain object if it exists in the identity map, else returns `null`.
+<2> Looks up or creates a standalone (value) or root adapter.
+
+The `AdapterManager` is the immediate subtype:
+
+[source,java]
+----
+public interface AdapterManager extends AdapterManagerBase {
+    ObjectAdapter getAdapterFor(Object pojo);                       // <1>
+    ObjectAdapter adapterFor(                                       // <2>
+        Object pojo, ObjectAdapter parentAdapter,
+        OneToManyAssociation collection);
+    ObjectAdapter mapRecreatedPojo(Oid oid, Object recreatedPojo);  // <3>
+    void removeAdapter(ObjectAdapter adapter);                      // <4>
+}
+----
+<1> Gets the `ObjectAdapter` for the `Oid` if it exists in the identity map.
+<2> Looks up or creates a collection adapter.
+<3> Enable RecreatableObjectFacet to 'temporarily' map an existing pojo to an oid.
+<4> Enable RecreatableObjectFacet to remove a 'temporarily' mapped an adapter for a pojo.
+
+
+Finally, `PersistenceSessionServiceInternal` is a subtype of `AdapterManager`:
+
+[source,java]
+----
+public interface PersistenceSessionServiceInternal extends AdapterManager {
+
+    // instantiate
+    ObjectAdapter createTransientInstance(
+                    ObjectSpecification spec);
+    ObjectAdapter createViewModelInstance(
+                    ObjectSpecification spec, String memento);
+
+    // retrieve
+    void resolve(Object parent);
+    @Deprecated
+    void resolve(Object parent, Object field);
+    Object lookup(Bookmark bookmark, final BookmarkService2.FieldResetPolicy fieldResetPolicy);
+    Bookmark bookmarkFor(Object domainObject);
+    Bookmark bookmarkFor(Class<?> cls, String identifier);
+
+    // beginTran, flush, commit, currentTransaction
+    void beginTran();
+    boolean flush();
+    void commit();
+    Transaction currentTransaction();
+    void executeWithinTransaction(TransactionalClosure transactionalClosure);
+
+    // makePersistent, remove
+    void makePersistent(ObjectAdapter adapter);
+    void remove(ObjectAdapter adapter);
+    // allMatchingQuery, firstMatchingQuery
+    <T> List<ObjectAdapter> allMatchingQuery(Query<T> query);
+    <T> ObjectAdapter firstMatchingQuery(Query<T> query);
+}
+----
+
+
+== Runtime vs Noop implementation
+
+The framework provides two implementations:
+
+* `PersistenceSessionServiceInternalDefault` is provided by `isis-core-runtime`, and is used during normal use and integration tests
+
+* `PersistenceSessionServiceInternalNoop` is provided as a fallback by `isis-core-metamodel`, and is provided to allow the xref:rgmvn.adoc[maven plugin] to be bootstrapped without any "backend" database.
+
+The `...Default` implementation takes priority over the `...Noop` implementation.

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_RepresentationService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_RepresentationService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_RepresentationService.adoc
index 1f55c5f..2828f45 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_RepresentationService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_RepresentationService.adoc
@@ -27,25 +27,20 @@ The SPI defined by this service is:
 [source,java]
 ----
 public interface RepresentationService {
-    @Programmatic
     Response objectRepresentation(                  // <1>
             Context rendererContext,
             ObjectAdapter objectAdapter);
-    @Programmatic
     Response propertyDetails(                       // <2>
             Context rendererContext,
             ObjectAndProperty objectAndProperty,
             MemberReprMode memberReprMode);
-    @Programmatic
     Response collectionDetails(                     // <3>
             Context rendererContext,
             ObjectAndCollection objectAndCollection,
             MemberReprMode memberReprMode);
-    @Programmatic
     Response actionPrompt(                          // <4>
             Context rendererContext,
             ObjectAndAction objectAndAction);
-    @Programmatic
     Response actionResult(                          // <5>
             Context rendererContext,
             ObjectAndActionInvocation objectAndActionInvocation,
@@ -80,7 +75,7 @@ ie `MemberReprMode`
 
 == Implementation
 
-As discussed in the introduction, the framework provides a default implementation, `o.a.i.v.ro.rendering.service.RepresentationServiceForRestfulObjects`.   This delegates to xref:rgfis.adoc#_rgfis_spi_ContentNegotiationService[`ContentNegotiationService`] to generate an alternative representation; but if none is provided then it falls back on generating the representations as defined in the link:http://restfulobjects.org[Restful Objects spec] v1.0.
+As discussed in the introduction, the framework provides a default implementation, `o.a.i.v.ro.rendering.service.RepresentationServiceContentNegotiator`.   This delegates to xref:rgfis.adoc#_rgfis_spi_ContentNegotiationService[`ContentNegotiationService`] to generate an alternative representation; but if none is provided then it falls back on generating the representations as defined in the link:http://restfulobjects.org[Restful Objects spec] v1.0.
 
 To use an alternative implementation, use
 xref:rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_TransactionStateProviderInternal.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_TransactionStateProviderInternal.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_TransactionStateProviderInternal.adoc
new file mode 100644
index 0000000..2f0491c
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgfis_spi_TransactionStateProviderInternal.adoc
@@ -0,0 +1,38 @@
+[[_rgfis_spi_TransactionStateProviderInternal]]
+= `TransactionStateProviderInternal`
+: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 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.
+:_basedir: ../
+:_imagesdir: images/
+
+
+The (internal) `TransactionStateProviderInternal` domain service simply provides the ability to check as to the
+state of the current transaction.
+
+[NOTE]
+====
+The service will probably be combined with xref:rgsvc.adoc#_rgsvc_api_TransactionService[`TransactionService`]
+in the future.
+====
+
+
+== SPI and Implementation
+
+The SPI of the service is simply:
+
+[source,java]
+----
+public interface TransactionStateProviderInternal {
+    TransactionState getTransactionState();
+}
+----
+
+
+== Runtime vs Noop implementation
+
+The framework provides two implementations:
+
+* `TransactionStateProviderInternalDefault` is provided by `isis-core-runtime`, and is used during normal use and integration tests
+
+* `TransactionStateProviderInternalNoop` is provided as a fallback by `isis-core-metamodel`, and is provided to allow the xref:rgmvn.adoc[maven plugin] to be bootstrapped without any "backend" database.
+
+The `...Default` implementation takes priority over the `...Noop` implementation.

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_ApplicationFeatureRepository.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_ApplicationFeatureRepository.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_ApplicationFeatureRepository.adoc
index c443e6c..7d5abe6 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_ApplicationFeatureRepository.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_ApplicationFeatureRepository.adoc
@@ -57,3 +57,10 @@ implementation of `ApplicationFeatureRepository` service is automatically regist
 To use an alternative implementation, use
 xref:rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`] (as explained
 in the xref: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.
+
+

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_BookmarkService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_BookmarkService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_BookmarkService.adoc
index 7507024..2e22b29 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_BookmarkService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_BookmarkService.adoc
@@ -46,15 +46,10 @@ public interface BookmarkService2 {
         RESET,
         DONT_RESET
     }
-    @Programmatic
     Object lookup(BookmarkHolder bookmarkHolder, FieldResetPolicy policy);
-    @Programmatic
     Object lookup(Bookmark bookmark, FieldResetPolicy policy);
-    @Programmatic
     <T> T lookup(Bookmark bookmark, FieldResetPolicy policy, Class<T> cls);     // <2>
-    @Programmatic
     Bookmark bookmarkFor(Object domainObject);
-    @Programmatic
     Bookmark bookmarkFor(Class<?> cls, String identifier);
 }
 ----
@@ -62,7 +57,7 @@ public interface BookmarkService2 {
 <2> same as `lookup(Bookmark bookmark)`, but downcasts to the specified type.
 
 
-The core framework provides a default implementation of this API, namely `o.a.i.core.metamodel.services.bookmarks.BookmarkServiceDefault`
+The core framework provides a default implementation of this API, namely `o.a.i.core.metamodel.services.bookmarks.BookmarkServiceInternalDefault`
 
 
 == `BookmarkHolder`

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
index 13d51ff..71c4993 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_EmailService.adoc
@@ -19,15 +19,13 @@ The API for the service is:
 [source,java]
 ----
 public interface EmailService {
-    @Programmatic
     boolean send(                                                   // <1>
         List<String> to, List<String> cc, List<String> bcc,         // <2>
         String subject,
         String body,                                                // <3>
         DataSource... attachments);
-    @Programmatic
     boolean isConfigured();                                         // <4>
-  }
+}
 ----
 <1> is the main API to send the email (and optional attachments). Will return `false` if failed to send
 <2> pass either `null` or `Collections.emptyList()` if not required

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_ExecutionParametersService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_ExecutionParametersService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_ExecutionParametersService.adoc
new file mode 100644
index 0000000..02ce4e6
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_ExecutionParametersService.adoc
@@ -0,0 +1,30 @@
+[[_rgsvc_api_ExecutionParametersService]]
+= `ExecutionParametersService`
+: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 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.
+:_basedir: ../
+:_imagesdir: images/
+
+
+
+The `ExecutionParametersService` ...
+
+Apache Isis provides a default implementation
+
+
+
+== API & Implementation
+
+The API and implementation of this service is simply:
+
+[source,java]
+----
+public class ExecutionParametersService {
+    public ExecutionParameters newExecutionParameters(final String parameters) {
+        return new ExecutionParameters(parameters);
+    }
+}
+----
+
+
+
+

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_MementoService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_MementoService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_MementoService.adoc
index 82731e9..2c43ede 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_MementoService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_MementoService.adoc
@@ -1,5 +1,5 @@
 [[_rgsvc_api_MementoService]]
-= `MementoService`
+= `MementoService` (deprecated)
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or 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.
 :_basedir: ../
 :_imagesdir: images/
@@ -8,16 +8,18 @@
 
 The `MementoService` was originally introduced to simplify the implementation of
 xref:ugbtb.adoc#_ugbtb_view-models[ViewModel]s which are required by the framework to return string representation of
-all of their backing state, moreover which is safe for use within a URL.
+all of their backing state, moreover which is safe for use within a URL.  This usage is deprecated; use xref:ugbtb.adoc#_ugbtb_view-models_jaxb[JAXB view models] instead.
 
-However, it can also be used to create a memento of arbitrary objects.  (Prior to `1.13.0` it wass used
-internally by the core implementation of xref:rgsvc.adoc#_rgsvc_api_BackgroundService[`BackgroundService`] to capture
-the state of action invocations so that they can be executed by a background process; this is now done using xref:rgfis.adoc#_rgfis_spi_CommandDtoServiceInternal[`CommandDtoServiceInternal`]
+The service can also be used to create a memento of arbitrary objects, however this usage is also deprecated.  (Prior
+to `1.13.0` it was used internally by the core implementation of
+xref:rgsvc.adoc#_rgsvc_api_BackgroundService[`BackgroundService`] to capture the state of action invocations so that
+they can be executed by a background process; this is now done using
+xref:rgfis.adoc#_rgfis_spi_CommandDtoServiceInternal[`CommandDtoServiceInternal`]).
 
 
 [NOTE]
 ====
-As of `1.13.0` this service is deprecated.
+As of `1.13.0` this service is deprecated, replaced by internal domain services.
 ====
 
 
@@ -123,8 +125,11 @@ public class ExternalEntity implements ViewModel {
 
 == Related Services
 
-(Prior to `1.13.0`), the memento service was used by the xref:rgsvc.adoc#_rgsvc_api_CommandContext[`CommandContext`] service and also
-xref:rgsvc.adoc#_rgsvc_spi_BackgroundCommandService[`BackgroundCommandService`]. These both use a memento to capture a representation of an action invocation.  This is now done using xref:rgfis.adoc#_rgfis_spi_CommandDtoServiceInternal[`CommandDtoServiceInternal`].
+(Prior to `1.13.0`), the memento service was used by the xref:rgsvc.adoc#_rgsvc_api_CommandContext[`CommandContext`]
+service and also
+xref:rgsvc.adoc#_rgsvc_spi_BackgroundCommandService[`BackgroundCommandService`]. These both use a memento to capture a
+representation of an action invocation.  This is now done using
+xref:rgfis.adoc#_rgfis_spi_CommandDtoServiceInternal[`CommandDtoServiceInternal`].
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_MessageService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_MessageService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_MessageService.adoc
index ba23db4..104100f 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_MessageService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_MessageService.adoc
@@ -58,7 +58,7 @@ public Order addItem(Product product, @ParameterLayout(named="Quantity") int qua
 
 == Implementation
 
-The core framework provides a default implementation of this service (`o.a.i.core.runtime.services.message.MessageServiceDefault`).
+The core framework provides a default implementation of this service (`o.a.i.core.runtime.services.message.MessageServiceInternalDefault`).
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_SwitchUserService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_SwitchUserService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_SwitchUserService.adoc
new file mode 100644
index 0000000..8305ae2
--- /dev/null
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_SwitchUserService.adoc
@@ -0,0 +1,42 @@
+[[_rgsvc_api_SwitchUserService]]
+= `SwitchUserService` (deprecated)
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or 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.
+:_basedir: ../
+:_imagesdir: images/
+
+
+
+The `SwitchUserService` domain service provides the ability to install fixtures changing the effective user half-way
+through.  For example, this allows the setup of a test of a workflow system which checks that work is moved between
+different users of the system.
+
+
+[NOTE]
+====
+This service is deprecated; use xref:ugtst.adoc#_ugtst_fixture-scripts[fixture scripts] and the
+xref:rgsvc.adoc#_rgsvc_api_SudoService[`SudoService`] instead.
+====
+
+
+
+== API
+
+The API of this service:
+
+[source,java]
+----
+public class SwitchUserService {
+    void switchUser(String username, String... roles);      // <1>
+    void switchUser(String username, List<String> roles);   // <2>
+}
+----
+<1> Switches the current user with the list of specified roles.
+<2> Switches the current user with the list of specified roles.
+
+
+
+
+
+== Implementation
+
+The framework provides a default implementation of this service: `SwitchUserServiceImpl` in `isis-core-runtime`
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_TransactionService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_TransactionService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_TransactionService.adoc
index 8ff3de1..3c0d7b4 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_TransactionService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_api_TransactionService.adoc
@@ -59,7 +59,7 @@ to distinguish such.
 
 == Implementation
 
-The core framework provides a default implementation of this service (`o.a.i.core.metamodel.services.xactn.TransactionServiceDefault`).
+The core framework provides a default implementation of this service (`o.a.i.core.metamodel.services.xactn.TransactionServiceInternalDefault`).
 
 
 == Registering the Service

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_AuditerService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_AuditerService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_AuditerService.adoc
index 332e99b..a19a083 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_AuditerService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_AuditerService.adoc
@@ -68,7 +68,7 @@ log4j.appender.AuditerServiceLogging.layout=org.apache.log4j.PatternLayout
 log4j.appender.AuditerServiceLogging.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n
 
 log4j.logger.org.apache.isis.applib.services.audit.AuditerServiceLogging=DEBUG,AuditerServiceLogging
-log4j.additivity.log4j.logger.org.apache.isis.applib.services.audit.AuditerServiceLogging=false
+log4j.additivity.org.apache.isis.applib.services.audit.AuditerServiceLogging=false
 ----
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_AuditingService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_AuditingService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_AuditingService.adoc
index e48f5b0..6bb7869 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_AuditingService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_AuditingService.adoc
@@ -1,5 +1,5 @@
 [[_rgsvc_spi_AuditingService]]
-= `AuditingService3`
+= `AuditingService3` (deprecated)
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or 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.
 :_basedir: ../
 :_imagesdir: images/
@@ -11,7 +11,7 @@ The `AuditingService3` auditing service provides a simple mechanism to capture c
 
 [NOTE]
 ====
-In case you are wondering what happened to `AuditingService` and `AuditingService2`, these were earlier versions of the SPI that have since been deprecated and removed.
+This service is deprecated, replaced by xref:rgsvc.adoc#_rgsvc_spi_AuditerService[`AuditerService`].
 ====
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_EventSerializer.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_EventSerializer.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_EventSerializer.adoc
index afa5556..c314d95 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_EventSerializer.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_EventSerializer.adoc
@@ -1,5 +1,5 @@
 [[_rgsvc_spi_EventSerializer]]
-= `EventSerializer`
+= `EventSerializer` (deprecated)
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or 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.
 :_basedir: ../
 :_imagesdir: images/

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_PublisherService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_PublisherService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_PublisherService.adoc
index 4f34104..41f257b 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_PublisherService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_PublisherService.adoc
@@ -86,7 +86,7 @@ log4j.appender.PublisherServiceLogging.layout=org.apache.log4j.PatternLayout
 log4j.appender.PublisherServiceLogging.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %m%n
 
 log4j.logger.org.apache.isis.applib.services.publish.PublisherServiceLogging=DEBUG,PublisherServiceLogging
-log4j.additivity.log4j.logger.org.apache.isis.applib.services.publish.PublisherServiceLogging=false
+log4j.additivity.org.apache.isis.applib.services.publish.PublisherServiceLogging=false
 ----
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_PublishingService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_PublishingService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_PublishingService.adoc
index 67f0c08..5407434 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_PublishingService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_PublishingService.adoc
@@ -1,5 +1,5 @@
 [[_rgsvc_spi_PublishingService]]
-= `PublishingService`
+= `PublishingService` (deprecated)
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or 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.
 :_basedir: ../
 :_imagesdir: images/
@@ -11,7 +11,7 @@ The `PublishingService` API is intended for coarse-grained publish/subscribe for
 
 [WARNING]
 ====
-This service is deprecated, replaced with xref:rgsvc.adoc#_rgsvc_spi_PublisherService[`PublisherService`].
+As of `1.13.0` this service is deprecated, replaced with xref:rgsvc.adoc#_rgsvc_spi_PublisherService[`PublisherService`].
 ====
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_RoutingService.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_RoutingService.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_RoutingService.adoc
index 452d9a7..643630d 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_RoutingService.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_spi_RoutingService.adoc
@@ -54,7 +54,7 @@ public interface RoutingService {
 
 == Implementation
 
-The framework provides a default implementation which will always return the original object provided, or the home page
+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.adoc#_rgsvc_api_HomePageProviderService[`HomePageProviderService`].
 
 There can be multiple implementations of `RoutingService` registered.  These are checked in turn (chain of responsibility
@@ -75,5 +75,5 @@ default implementation of `RoutingService` service is automatically registered a
 
 == Related Services
 
-The default implementation of ths service uses the
+The default implementation of this service uses the
 xref:rgsvc.adoc#_rgsvc_api_HomePageProviderService[`HomePageProviderService`].

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_rgsvc_testing.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_testing.adoc b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_testing.adoc
index 05b9bda..bf83f6a 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_rgsvc_testing.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_rgsvc_testing.adoc
@@ -24,6 +24,16 @@ The table below summarizes the testing APIs defined by Apache Isis.  It also lis
 |Notes
 
 
+|xref:rgsvc.adoc#_rgsvc_api_ExecutionParametersService[`o.a.i.applib.` +
+`fixturescripts.` +
+`ExecutionParametersService`]
+|...
+|`ExecutionParametersService` +
+``o.a.i.core`` +
+``isis-core-applib``
+|API is also a concrete class
+
+
 |xref:rgsvc.adoc#_rgsvc_api_FixtureScriptsDefault[`o.a.i.applib.` +
 `services.` +
 `fixturespec` +
@@ -56,6 +66,16 @@ SpecificationProvider`].
 |API is also a concrete class
 
 
+|xref:rgsvc.adoc#_rgsvc_api_SwitchUserService[`o.a.i.applib.` +
+`fixtures.switchuser` +
+`SwitchUserServiceService`]
+|(deprecated)
+|`SwitchUserServiceImpl` +
+``o.a.i.core`` +
+``isis-core-runtime``
+|
+
+
 
 
 |===
@@ -84,6 +104,8 @@ The table below summarizes the testing SPIs defined by Apache Isis.  It also lis
 
 
 
+include::_rgsvc_api_ExecutionParametersService.adoc[leveloffset=+1]
 include::_rgsvc_api_FixtureScriptsDefault.adoc[leveloffset=+1]
-include::_rgsvc_api_SudoService.adoc[leveloffset=+1]
 include::_rgsvc_spi_FixtureScriptsSpecificationProvider.adoc[leveloffset=+1]
+include::_rgsvc_api_SudoService.adoc[leveloffset=+1]
+include::_rgsvc_api_SwitchUserService.adoc[leveloffset=+1]

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/guides/_ugfun_core-concepts_framework-provided-services.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/guides/_ugfun_core-concepts_framework-provided-services.adoc b/adocs/documentation/src/main/asciidoc/guides/_ugfun_core-concepts_framework-provided-services.adoc
index a12c999..df8aa73 100644
--- a/adocs/documentation/src/main/asciidoc/guides/_ugfun_core-concepts_framework-provided-services.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/_ugfun_core-concepts_framework-provided-services.adoc
@@ -31,7 +31,6 @@ Commands/Interactions/Background/Auditing/Publishing/Profiling:
 
 * xref:rgsvc.adoc#_rgsvc_api_CommandContext[`CommandContext`] (SPI)
 * xref:rgsvc.adoc#_rgsvc_spi_CommandService[`CommandService`] (SPI)
-* xref:rgsvc.adoc#_rgsvc_spi_CommandMementoService[`CommandMementoService`] (SPI)
 * xref:rgsvc.adoc#_rgsvc_api_InteractionContext[`InteractionContext`] (SPI)
 * xref:rgsvc.adoc#_rgsvc_spi_AuditingService[`AuditingService`] (SPI) (deprecated)
 * xref:rgsvc.adoc#_rgsvc_spi_AuditerService[`AuditerService`] (SPI)

http://git-wip-us.apache.org/repos/asf/isis/blob/97726546/adocs/documentation/src/main/asciidoc/screencasts.adoc
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/screencasts.adoc b/adocs/documentation/src/main/asciidoc/screencasts.adoc
index d4f1985..dfb9612 100644
--- a/adocs/documentation/src/main/asciidoc/screencasts.adoc
+++ b/adocs/documentation/src/main/asciidoc/screencasts.adoc
@@ -43,26 +43,26 @@ include::_screencasts-playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=OTNHR5EdAs8[001^] +
-Generating an app using the xref:ug.adoc#_ug_getting-started_simpleapp-archetype[SimpleApp Maven archetype]
+Generating an app using the xref:guides/ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype]
 
 |x|||||||||
 
 
 
 |link:https://www.youtube.com/watch?v=6GPtec5Hu5Q[002^] +
-Importing the generated app into an xref:dg.adoc#_dg_ide[IDE] +
+Importing the generated app into an xref:guides/dg.adoc#_dg_ide[IDE] +
 
 |x||x|||||||
 
 
 
 |link:https://www.youtube.com/watch?v=xVTjtiJM8XM[003^] +
-Walking through the main classes that make up the SimpleApp: `SimpleObject` persistent entity, `HomePageViewModel` xref:ugbtb.adoc#_ugbtb_view-models[view model] and `SimpleObjects` domain service (repository).
+Walking through the main classes that make up the SimpleApp: `SimpleObject` persistent entity, `HomePageViewModel` xref:guides/ugbtb.adoc#_ugbtb_view-models[view model] and `SimpleObjects` domain service (repository).
 ||||x||||||
 
 
 |link:https://www.youtube.com/watch?v=KCJ1ZPPB3pA[004^] +
-Using the optional `Xxx.layout.xml` file to provide xref:ugfun.adoc#_ugfun_object-layout_dynamic_xml[layout metadata] to dynamically render a domain object using the link:http://getbootstrap.com[Bootstrap 3] grid system.
+Using the optional `Xxx.layout.xml` file to provide xref:guides/ugfun.adoc#_ugfun_object-layout_dynamic_xml[layout metadata] to dynamically render a domain object using the link:http://getbootstrap.com[Bootstrap 3] grid system.
 ||x||||||||
 
 
@@ -75,24 +75,24 @@ include::_screencasts-playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=pH02g0l2GKY[005^] +
-Using xref:ugtst.adoc#_ugtst_fixture-scripts[fixture scripts] to initialize the database, eg while prototyping and for demos
+Using xref:guides/ugtst.adoc#_ugtst_fixture-scripts[fixture scripts] to initialize the database, eg while prototyping and for demos
 ||x||||||||
 
 
 
 
 |link:https://www.youtube.com/watch?v=dXtmxmYxa30[006^] +
-Implementing xref:ugfun.adoc#_ugfun_how-tos_business-rules[business rules]for domain object members, using supporting methods ("see it, use it, do it")
+Implementing xref:guides/ugfun.adoc#_ugfun_how-tos_business-rules[business rules]for domain object members, using supporting methods ("see it, use it, do it")
 |x|||||||||
 
 |link:https://www.youtube.com/watch?v=imHfxQGUgV8[007^] +
-Writing xref:ugtst.adoc#_ugtst_unit-test-support[unit tests] for a domain object responsibility
+Writing xref:guides/ugtst.adoc#_ugtst_unit-test-support[unit tests] for a domain object responsibility
 ||x||||||||
 
 
 
 |link:https://www.youtube.com/watch?v=-lAt4UWiBjE[008^] +
-Writing end-to-end xref:ugtst.adoc#_ugtst_integ-test-support[integration tests] for a domain object responsibility
+Writing end-to-end xref:guides/ugtst.adoc#_ugtst_integ-test-support[integration tests] for a domain object responsibility
 ||x||||||||
 
 
@@ -104,14 +104,14 @@ Writing end-to-end xref:ugtst.adoc#_ugtst_integ-test-support[integration tests]
 include::_screencasts-playlists.adoc[]
 
 |link:https://www.youtube.com/watch?v=lkZxRSS0Zwg[009^] +
-Using the Swagger UI to access the xref:ugvro.adoc#[REST API] automatically exposed for domain services, entities, and/or view models
+Using the Swagger UI to access the xref:guides/ugvro.adoc#[REST API] automatically exposed for domain services, entities, and/or view models
 ||||||||||x
 
 
 
 
 |link:https://www.youtube.com/watch?v=yOh3WphhR1E[010^] +
-Using the xref:rgmvn.adoc[Apache Isis maven plugin] to validate domain object models during the build process (rather than at runtime).
+Using the xref:guides/rgmvn.adoc[Apache Isis maven plugin] to validate domain object models during the build process (rather than at runtime).
 ||||||||x||
 
 
@@ -122,7 +122,7 @@ Using the xref:rgmvn.adoc[Apache Isis maven plugin] to validate domain object mo
 
 
 |link:https://www.youtube.com/watch?v=1sNiR3Y84c0[011^] +
-How the framework uses the xref:rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[`AppManifest`] is used to bootstrap the application
+How the framework uses the xref:guides/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[`AppManifest`] is used to bootstrap the application
 ||||||||||x
 
 
@@ -135,13 +135,13 @@ include::_screencasts-playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=dfRZeYqzMtI[012^] +
-Implementing business logic using a (no-arg) action, and associating with a property using either the xref:rgant.adoc#_rgant-MemberOrder[`@MemberOrder`] annotations or using xref:ugfun.adoc#_ugfun_object-layout_dynamic_xml[dynamic (XML) layouts].
+Implementing business logic using a (no-arg) action, and associating with a property using either the xref:guides/rgant.adoc#_rgant-MemberOrder[`@MemberOrder`] annotations or using xref:guides/ugfun.adoc#_ugfun_object-layout_dynamic_xml[dynamic (XML) layouts].
 |x||||||||x|
 
 
 
 |link:https://www.youtube.com/watch?v=0naoVsWppuQ[013^] +
-Invoking (no-arg) action on multiple objects at once (using xref:rgant.adoc#_rgant-Action_invokeOn[`@Action#invokeOn()`], and using the xref:rgsvc.adoc#_rgsvc_api_ActionInvocationContext[`ActionInvocationContext`] domain service for a smoother end-user experience.
+Invoking (no-arg) action on multiple objects at once (using xref:guides/rgant.adoc#_rgant-Action_invokeOn[`@Action#invokeOn()`], and using the xref:guides/rgsvc.adoc#_rgsvc_api_ActionInvocationContext[`ActionInvocationContext`] domain service for a smoother end-user experience.
 |||x||||||x|
 
 
@@ -155,13 +155,13 @@ include::_screencasts-playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=CwM430UH5WE[014^] +
-Using the xref:rgcms.adoc#_rgcms_methods_reserved_title[`title()`], xref:rgcms.adoc#_rgcms_methods_reserved_iconName[`iconName()`] and xref:rgcms.adoc#_rgcms_methods_reserved_cssClass[`cssClass()`] so that end-users can distinguish domain objects within the UI.
+Using the xref:guides/rgcms.adoc#_rgcms_methods_reserved_title[`title()`], xref:guides/rgcms.adoc#_rgcms_methods_reserved_iconName[`iconName()`] and xref:guides/rgcms.adoc#_rgcms_methods_reserved_cssClass[`cssClass()`] so that end-users can distinguish domain objects within the UI.
 |x||x||||||x|
 
 
 
 |link:https://www.youtube.com/watch?v=7ToRKBOeemM[015^] +
-Moving the responsibility to specify the icon for a domain object out and into a subscriber, using the xref:rgcms.adoc#_rgcms_classes_uievent_IconUiEvent[`IconUiEvent`] as per the xref:rgant.adoc#_rgant-DomainObjectLayout_iconUiEvent[`@DomainObjectLayout#iconUiEvent()`] annotation
+Moving the responsibility to specify the icon for a domain object out and into a subscriber, using the xref:guides/rgcms.adoc#_rgcms_classes_uievent_IconUiEvent[`IconUiEvent`] as per the xref:guides/rgant.adoc#_rgant-DomainObjectLayout_iconUiEvent[`@DomainObjectLayout#iconUiEvent()`] annotation
 ||||||x||||
 
 
@@ -183,7 +183,7 @@ How to implement a derived collection on a domain object.
 
 
 |link:https://www.youtube.com/watch?v=l_oZymgb65I[017^] +
-Extending a xref:ugtst.adoc#_ugtst_fixture-scripts[fixture script] to more easily demonstrate new functionality.
+Extending a xref:guides/ugtst.adoc#_ugtst_fixture-scripts[fixture script] to more easily demonstrate new functionality.
 ||x||||||||
 
 
@@ -194,7 +194,7 @@ Extending a xref:ugtst.adoc#_ugtst_fixture-scripts[fixture script] to more easil
 
 
 |link:https://www.youtube.com/watch?v=39Hpd7C4Kvo[018^] +
-Using xref:ugfun.adoc#_ugfun_object-layout_dynamic_xml[dynamic (XML) layouts] to specify the page size for a domain object's collection.
+Using xref:guides/ugfun.adoc#_ugfun_object-layout_dynamic_xml[dynamic (XML) layouts] to specify the page size for a domain object's collection.
 ||||x||||||
 
 
@@ -208,20 +208,20 @@ Using xref:ugfun.adoc#_ugfun_object-layout_dynamic_xml[dynamic (XML) layouts] to
 include::_screencasts-playlists.adoc[]
 
 |link:https://www.youtube.com/watch?v=0d713-V4vrg[019^] +
-Demonstrates how Apache Isis' xref:ugvw.adoc[Wicket viewer] remembers the state of rendered domain objects, and how the end-user of the
- application can clear these UI hints using the (framework-provided) xref:rgcms.adoc#_rgcms_classes_mixins_Object_clearHints["clear hints"] action.
+Demonstrates how Apache Isis' xref:guides/ugvw.adoc[Wicket viewer] remembers the state of rendered domain objects, and how the end-user of the
+ application can clear these UI hints using the (framework-provided) xref:guides/rgcms.adoc#_rgcms_classes_mixins_Object_clearHints["clear hints"] action.
 |||x|||||||
 
 
 
 |link:https://www.youtube.com/watch?v=Kqch-XNlBMA[020^] +
-Demonstrates how the end-user can copy and share URLs for domain objects - including UI hints - using Apache Isis' xref:ugvw.adoc[Wicket viewer].
+Demonstrates how the end-user can copy and share URLs for domain objects - including UI hints - using Apache Isis' xref:guides/ugvw.adoc[Wicket viewer].
 |||x|||||||
 
 
 
 |link:https://www.youtube.com/watch?v=a0QQLT_16To[021^] +
-Demonstrates how the end-user can use bookmarks and breadcrumbs within Apache Isis' xref:ugvw.adoc[Wicket viewer], and how the developer can ensure that xref:rgant.adoc#_rgant-DomainObjectLayout_bookmarking[domain objects] and (xref:rgant.adoc#_rgant-Action_semantics[query-only]) xref:rgant.adoc#_rgant-ActionLayout_bookmarking[actions] can be bookmarked.
+Demonstrates how the end-user can use bookmarks and breadcrumbs within Apache Isis' xref:guides/ugvw.adoc[Wicket viewer], and how the developer can ensure that xref:guides/rgant.adoc#_rgant-DomainObjectLayout_bookmarking[domain objects] and (xref:guides/rgant.adoc#_rgant-Action_semantics[query-only]) xref:guides/rgant.adoc#_rgant-ActionLayout_bookmarking[actions] can be bookmarked.
 |||x|||||||
 
 
@@ -236,26 +236,26 @@ include::_screencasts-playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=Wn5215K7_Jg[022^] +
-Shows how to refactor a domain object to move an action implementation out of the domain object itself, and instead implement as a xref:ugbtb.adoc#_ugbtb_decoupling_mixins[mixin] (useful for decoupling).
+Shows how to refactor a domain object to move an action implementation out of the domain object itself, and instead implement as a xref:guides/ugbtb.adoc#_ugbtb_decoupling_mixins[mixin] (useful for decoupling).
 |x|||||x||||
 
 
 
 |link:https://www.youtube.com/watch?v=m633OEBpWqQ[023^] +
-Shows how to refactor a domain object to move (derived) collections out of the domain object and reimplement as a xref:ugbtb.adoc#_ugbtb_decoupling_mixins[mixin].
+Shows how to refactor a domain object to move (derived) collections out of the domain object and reimplement as a xref:guides/ugbtb.adoc#_ugbtb_decoupling_mixins[mixin].
 ||||||x||||
 
 
 
 |link:https://www.youtube.com/watch?v=-AQJb9GtIqI[024^] +
-Using a domain event xref:rgcms.adoc#_rgcms_classes_super_AbstractSubscriber[subscriber] to xref:ugbtb.adoc#_ugbtb_decoupling_event-bus[decouple] and abstract business rules ( xref:rgcms.adoc#_rgcms_methods_prefixes_validate[validation]).
+Using a domain event xref:guides/rgcms.adoc#_rgcms_classes_super_AbstractSubscriber[subscriber] to xref:guides/ugbtb.adoc#_ugbtb_decoupling_event-bus[decouple] and abstract business rules ( xref:guides/rgcms.adoc#_rgcms_methods_prefixes_validate[validation]).
 ||||||x||||
 
 
 
 |link:https://www.youtube.com/watch?v=6GjLW0hlrm4[025^] +
-Using a domain event xref:rgcms.adoc#_rgcms_classes_super_AbstractSubscriber[subscriber] to hide functionality, in this
-  case the xref:rgcms.adoc#_rgcms_classes_mixins_Object_clearHints["clear hints"] action automatically provided by the framework.
+Using a domain event xref:guides/rgcms.adoc#_rgcms_classes_super_AbstractSubscriber[subscriber] to hide functionality, in this
+  case the xref:guides/rgcms.adoc#_rgcms_classes_mixins_Object_clearHints["clear hints"] action automatically provided by the framework.
 ||||||||||x
 
 
@@ -267,7 +267,7 @@ Using a domain event xref:rgcms.adoc#_rgcms_classes_super_AbstractSubscriber[sub
 
 
 |link:https://www.youtube.com/watch?v=qj4bMkQRBUY[026^] +
-Using the xref:rgant.adoc#_rgant-Title[`@Title`] annotation (instead of the xref:rgcms.adoc#_rgcms_methods_reserved_title[`title()`] reserved method) to obtain the title of a domain object, so that the end-user can distinguish one object from another.
+Using the xref:guides/rgant.adoc#_rgant-Title[`@Title`] annotation (instead of the xref:guides/rgcms.adoc#_rgcms_methods_reserved_title[`title()`] reserved method) to obtain the title of a domain object, so that the end-user can distinguish one object from another.
 |x||||||||x|
 
 
@@ -280,7 +280,7 @@ Using the xref:rgant.adoc#_rgant-Title[`@Title`] annotation (instead of the xref
 
 
 |link:https://www.youtube.com/watch?v=yi52Gbd3lmY[027^] +
-How to write an xref:ugtst.adoc#_ugtst_integ-test-support[integration test] for an xref:rgant.adoc#_rgant-Mixin[mixin].
+How to write an xref:guides/ugtst.adoc#_ugtst_integ-test-support[integration test] for an xref:guides/rgant.adoc#_rgant-Mixin[mixin].
 ||x||||||||
 
 
@@ -303,7 +303,7 @@ Using link:https://projectlombok.org/[Project Lombok] to remove boilerplate from
 
 
 |link:https://www.youtube.com/watch?v=AXuxULuRtm0[029^] +
-Using the (non-ASF) http://github.com/isisaddons/isis-metamodel-paraname8[Isis addons' paraname8] module to remove boilerplate from your domain object (xref:rgant.adoc#_rgant-ParameterLayout_named[`@ParameterLayout#named()`] annotation attribute on action parameters).
+Using the (non-ASF) http://github.com/isisaddons/isis-metamodel-paraname8[Isis addons' paraname8] module to remove boilerplate from your domain object (xref:guides/rgant.adoc#_rgant-ParameterLayout_named[`@ParameterLayout#named()`] annotation attribute on action parameters).
 |||||x|||x||
 
 
@@ -318,13 +318,13 @@ include::_screencasts-playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=ORoEYlg6XFM[030^] +
-How to validate action parameters using a supporting xref:rgcms.adoc#_rgcms_methods_prefixes_validate[`validateNXxx()`] method.
+How to validate action parameters using a supporting xref:guides/rgcms.adoc#_rgcms_methods_prefixes_validate[`validateNXxx()`] method.
 |x||||||||x|
 
 
 
 |link:https://www.youtube.com/watch?v=1Vlzob89pYI[031^] +
-How to validate action parameters using the xref:rgant.adoc#_rgant-Parameter_mustSatisfy[`@Parameter#mustSatisfy()`]  and the Specification interface.
+How to validate action parameters using the xref:guides/rgant.adoc#_rgant-Parameter_mustSatisfy[`@Parameter#mustSatisfy()`]  and the Specification interface.
 |||||||||x|
 
 
@@ -337,7 +337,7 @@ How to validate action parameters using the xref:rgant.adoc#_rgant-Parameter_mus
 
 
 |link:https://www.youtube.com/watch?v=fYJjXAepWAs[032^] +
-How to instantiate/initialize objects using xref:rgsvc.adoc#_rgsvc_api_RepositoryService[`RepositoryService`], xref:rgsvc.adoc#_rgsvc_api_ServiceRegistry[`ServiceRegistry`] and/or xref:rgsvc.adoc#_rgsvc_api_FactoryService[`FactoryService`].
+How to instantiate/initialize objects using xref:guides/rgsvc.adoc#_rgsvc_api_RepositoryService[`RepositoryService`], xref:guides/rgsvc.adoc#_rgsvc_api_ServiceRegistry[`ServiceRegistry`] and/or xref:guides/rgsvc.adoc#_rgsvc_api_FactoryService[`FactoryService`].
 |x||||||||x|
 
 
@@ -351,19 +351,19 @@ include::_screencasts-playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=cQ06PoMNDPw[033^] +
-How to provide a set of xref:rgcms.adoc#_rgcms_methods_prefixes_choices[choices] (a drop-down list) when editing a property.
+How to provide a set of xref:guides/rgcms.adoc#_rgcms_methods_prefixes_choices[choices] (a drop-down list) when editing a property.
 |x||||||||x|
 
 
 
 |link:https://www.youtube.com/watch?v=afEnYKljBQs[034^] +
-How to provide a set of xref:rgcms.adoc#_rgcms_methods_prefixes_choices[choices] (a drop-down list) when invoking an action.
+How to provide a set of xref:guides/rgcms.adoc#_rgcms_methods_prefixes_choices[choices] (a drop-down list) when invoking an action.
 |||||||||x|
 
 
 
 |link:https://www.youtube.com/watch?v=fKo6aTPK-gk[035^] +
-How to use the xref:rgcms.adoc#_rgcms_methods_prefixes_choices[choices] supporting methods as a source for default values within a xref:ugtst.adoc#_ugtst_fixture-scripts[fixture script].
+How to use the xref:guides/rgcms.adoc#_rgcms_methods_prefixes_choices[choices] supporting methods as a source for default values within a xref:guides/ugtst.adoc#_ugtst_fixture-scripts[fixture script].
 ||x|||||||x|
 
 
@@ -383,7 +383,7 @@ include::_screencasts-playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=1SCyBlMM2Bo[037^] +
-How to hide properties as columns in tables (parented collections or standalone collections), using the dynamic XML layout (equivalent to xref:rgant.adoc#_rgant-PropertyLayout_hidden[`@PropertyLayout#hidden()`]).
+How to hide properties as columns in tables (parented collections or standalone collections), using the dynamic XML layout (equivalent to xref:guides/rgant.adoc#_rgant-PropertyLayout_hidden[`@PropertyLayout#hidden()`]).
 ||||x||||||
 
 
@@ -402,7 +402,7 @@ include::_screencasts-playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=NKaR7ZedI8E[039^] +
-Using the xref:rgcms.adoc#_rgcms_classes_super_FixtureScript[`FixtureScript`] `defaultParam(...)` method to reflectively default parameters to fixture scripts that have not been set by the caller.
+Using the xref:guides/rgcms.adoc#_rgcms_classes_super_FixtureScript[`FixtureScript`] `defaultParam(...)` method to reflectively default parameters to fixture scripts that have not been set by the caller.
 ||x||||||||
 
 
@@ -421,14 +421,14 @@ include::_screencasts-playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=esujf_DFeWA[041^] +
-Using BigDecimal as a property within a domain object, also demonstrating the "summary" view within the xref:ugvw.adoc[Wicket viewer].
+Using BigDecimal as a property within a domain object, also demonstrating the "summary" view within the xref:guides/ugvw.adoc[Wicket viewer].
 |||||||x||x|x
 
 
 
 
 |link:https://www.youtube.com/watch?v=n9Oy0m2bplw[042^] +
-How to use the xref:rgant.adoc#_rgant-Digits[`@Digits`] annotation for action parameters of type ``java.math.BigDecimal``.
+How to use the xref:guides/rgant.adoc#_rgant-Digits[`@Digits`] annotation for action parameters of type ``java.math.BigDecimal``.
 |||||||||x|
 
 
@@ -442,22 +442,22 @@ include::_screencasts-playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=Rt4JoV4ssVY[043^] +
-How to use the supporting xref:rgcms.adoc#_rgcms_methods_prefixes_default[`defaultXxx(...)`] supporting method to provide a default argument value for action parameters.
+How to use the supporting xref:guides/rgcms.adoc#_rgcms_methods_prefixes_default[`defaultXxx(...)`] supporting method to provide a default argument value for action parameters.
 |x||||||||x|
 
 
 |link:https://www.youtube.com/watch?v=qAJDGxztWIQ[044^] +
-How to use xref:rgant.adoc#_rgant-DomainObject_bounded[`@DomainObject#bounded()`] so that a drop-down list is automatically provided for any parameters to actions that are for (domain entity) reference types.
+How to use xref:guides/rgant.adoc#_rgant-DomainObject_bounded[`@DomainObject#bounded()`] so that a drop-down list is automatically provided for any parameters to actions that are for (domain entity) reference types.
 |||||||||x|
 
 
 |link:https://www.youtube.com/watch?v=0ro_YhXOpJU[045^] +
-How to use the xref:rgcms.adoc#_rgcms_methods_prefixes_choices[`choicesXxx(...)`] supporting method to provide a drop-down list for parameters to actions that are for reference types (domain entities or view models).
+How to use the xref:guides/rgcms.adoc#_rgcms_methods_prefixes_choices[`choicesXxx(...)`] supporting method to provide a drop-down list for parameters to actions that are for reference types (domain entities or view models).
 |||||||||x|
 
 
 |link:https://www.youtube.com/watch?v=K36IJQ_hDfs[046^] +
-How to use the xref:rgcms.adoc#_rgcms_methods_prefixes_autoComplete[`autoCompleteXxx(...)`] supporting method to provide a drop-down list for parameters to actions that are for reference types (domain entities or view models).
+How to use the xref:guides/rgcms.adoc#_rgcms_methods_prefixes_autoComplete[`autoCompleteXxx(...)`] supporting method to provide a drop-down list for parameters to actions that are for reference types (domain entities or view models).
 |||||||||x|
 
 
@@ -483,7 +483,7 @@ extension.
 
 
 |link:https://www.youtube.com/watch?v=0YoFa44Xr6M[049^] +
-Using the xref:rgant.adoc#_rgant-Programmatic[`@Programmatic`] annotation to exclude methods from a domain object
+Using the xref:guides/rgant.adoc#_rgant-Programmatic[`@Programmatic`] annotation to exclude methods from a domain object
 (eg implementing methods of an interface as defined by the (non-ASF)
 http://github.com/isisaddons/isis-wicket-fullcalendar2[Isis addons' fullcalendar2 ] wicket extension) that would
 otherwise be part of the Apache Isis metamodel (and thus show up in the UI).
@@ -512,22 +512,22 @@ include::_screencasts-playlists.adoc[]
 
 
 |link:https://www.youtube.com/watch?v=puG-pzxRSd0[052^] +
-How to write a xref:ugbtb.adoc#_ugbtb_view-models_jaxb[(JAXB) view model], holding references to two domain objects.
+How to write a xref:guides/ugbtb.adoc#_ugbtb_view-models_jaxb[(JAXB) view model], holding references to two domain objects.
 |x||||||||x|
 
 
 |link:https://www.youtube.com/watch?v=tdBkmA2CCZY[053^] +
-Updating the title, icon and layout of a xref:ugbtb.adoc#_ugbtb_view-models_jaxb[(JAXB) view model].
+Updating the title, icon and layout of a xref:guides/ugbtb.adoc#_ugbtb_view-models_jaxb[(JAXB) view model].
 ||||x||||||
 
 
 |link:https://www.youtube.com/watch?v=TKF0FB_od00[054^] +
-How to expose information from underlying domain entities referenced by a xref:ugbtb.adoc#_ugbtb_view-models_jaxb[(JAXB) view model] using derived properties
+How to expose information from underlying domain entities referenced by a xref:guides/ugbtb.adoc#_ugbtb_view-models_jaxb[(JAXB) view model] using derived properties
 ||||||||||x
 
 
 |link:https://www.youtube.com/watch?v=TMMeVhRNi8A[055^] +
-Adding an action to a xref:ugbtb.adoc#_ugbtb_view-models_jaxb[(JAXB) view model], and adjusting the layout using custom CSS.
+Adding an action to a xref:guides/ugbtb.adoc#_ugbtb_view-models_jaxb[(JAXB) view model], and adjusting the layout using custom CSS.
 ||||x||||||
 
 
@@ -547,12 +547,12 @@ The (very simple) steps required to rename a domain entity class.
 
 
 |link:https://www.youtube.com/watch?v=J5xobU6X0ng[057^] +
-How to rename a menu (on the top-level menubar) as rendered in the xref:ugvw.adoc[Wicket viewer].
+How to rename a menu (on the top-level menubar) as rendered in the xref:guides/ugvw.adoc[Wicket viewer].
 |x|||||||||
 
 
 |link:https://www.youtube.com/watch?v=mgHqRxQrp28[058^] +
-How to rename various elements (collections, title) of the xref:rgant.adoc#_rgant-HomePage[home page] view model,
+How to rename various elements (collections, title) of the xref:guides/rgant.adoc#_rgant-HomePage[home page] view model,
 for an improved initial page.
 ||||||||||x