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

danhaywood pushed a commit to branch CAUSEWAY-2873
in repository https://gitbox.apache.org/repos/asf/causeway.git

commit 0217dc07247768eb3979accebbaf4f2ed9fbdd1b
Author: Dan Haywood <[email protected]>
AuthorDate: Tue Jun 4 10:14:01 2024 +0100

    updates refguide docs
---
 .../bookmarks/BookmarkServiceDefault.adoc}         | 21 ++++---
 .../command/CommandDtoFactoryDefault.adoc}         | 19 +++----
 .../command/CommandExecutorServiceDefault.adoc}    | 19 +++----
 .../command/SchemaValueMarshallerDefault.adoc}     | 15 +----
 .../email/EmailServiceDefault.adoc}                | 28 +++++++---
 .../eventbus/EventBusServiceSpring.adoc}           | 16 ++----
 .../executor/MemberExecutorServiceDefault.adoc     | 28 ++++++++++
 .../factory/FactoryServiceDefault.adoc}            | 23 ++++----
 .../homepage/HomePageResolverServiceDefault.adoc}  | 18 ++----
 .../runtimeservices/i18n/po/ContextAndMsgId.adoc   | 48 ++++++++++++++++
 .../i18n/po/TranslationServicePo.adoc              | 64 ++++++++++++++++++++++
 .../i18n/po/TranslationServicePoMenu.adoc}         | 25 +++++----
 .../icons/ObjectIconServiceDefault.adoc}           | 16 ++----
 .../interaction/InteractionDtoFactoryDefault.adoc} | 18 +++---
 .../runtimeservices/jaxb/JaxbServiceDefault.adoc}  | 15 +----
 .../locale/LanguageProviderDefault.adoc}           | 16 ++----
 .../locale/LocaleChoiceProviderDefault.adoc}       | 16 ++----
 .../menubars/MenuBarsLoaderServiceDefault.adoc}    | 19 +++----
 .../MenuBarsMarshallerServiceBootstrap.adoc}       | 19 +++----
 .../bootstrap/MenuBarsServiceBootstrap.adoc}       | 22 ++++----
 .../message/MessageServiceDefault.adoc}            | 26 +++++----
 .../publish/CommandPublisherDefault.adoc}          | 19 +++----
 .../publish/EntityChangesPublisherDefault.adoc}    | 17 ++----
 .../EntityPropertyChangePublisherDefault.adoc}     | 17 ++----
 .../publish/ExecutionPublisherDefault.adoc}        | 20 +++----
 ...ExceptionRecognizerForDataAccessException.adoc} | 17 ++----
 .../routing/RoutingServiceDefault.adoc}            | 17 ++----
 .../scratchpad/ScratchpadDefault.adoc}             | 44 ++++++++++++---
 .../serializing/SerializingAdapterDefault.adoc}    | 17 ++----
 .../session/InteractionIdGenerator.adoc}           | 16 ++----
 .../session/InteractionIdGeneratorDefault.adoc}    | 16 ++----
 .../session/InteractionServiceDefault.adoc         | 50 +++++++++++++++++
 .../sitemap/SitemapServiceDefault.adoc}            | 16 ++----
 .../user/ImpersonateMenuAdvisorDefault.adoc}       | 21 ++++---
 .../UserCurrentSessionTimeZoneHolderDefault.adoc}  | 18 ++----
 .../userreg/EmailNotificationServiceDefault.adoc}  | 25 ++++++---
 .../wrapper/WrapperFactoryDefault.adoc             | 27 +++++++++
 .../xmlsnapshot/XmlSnapshotBuilder.adoc}           | 28 ++++++----
 .../xmlsnapshot/XmlSnapshotServiceDefault.adoc     | 38 +++++++++++++
 .../applib/fakescheduler/FakeScheduler.adoc        |  2 +
 .../spi/RunBackgroundCommandsJobListener.adoc      | 31 +++++++++++
 core/adoc/modules/_overview/pages/about.adoc       |  5 +-
 .../config/pages/sections/causeway.extensions.adoc | 11 ++++
 43 files changed, 582 insertions(+), 381 deletions(-)

diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/bookmarks/BookmarkServiceDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/bookmarks/BookmarkServiceDefault.adoc
index b18d06fad8..dbbcc980c9 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/bookmarks/BookmarkServiceDefault.adoc
@@ -1,21 +1,20 @@
-= FakeScheduler
+= BookmarkServiceDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
+This service enables a serializable 'bookmark' to be created for an entity.
 
 == API
 
 [source,java]
-.FakeScheduler.java
+.BookmarkServiceDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class BookmarkServiceDefault {
+  Optional<Object> lookup(BookmarkHolder bookmarkHolder)
+  List<Bookmark> bookmarksFor(Object domainObject)
+  Optional<Object> lookup(Bookmark bookmark)
+  Optional<Bookmark> bookmarkFor(Object domainObject)
+  Optional<Bookmark> bookmarkFor(Class<?> cls, String identifier)
+  Bookmark bookmarkForElseFail(Object domainObject)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/command/CommandDtoFactoryDefault.adoc
similarity index 51%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/command/CommandDtoFactoryDefault.adoc
index b18d06fad8..b851b86881 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/command/CommandDtoFactoryDefault.adoc
@@ -1,21 +1,18 @@
-= FakeScheduler
+= CommandDtoFactoryDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
+The design of this service is similar to 
_org.apache.causeway.core.runtimeservices.interaction.InteractionDtoFactoryDefault_
 .
 
 == API
 
 [source,java]
-.FakeScheduler.java
+.CommandDtoFactoryDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class CommandDtoFactoryDefault {
+  CommandDto asCommandDto(UUID interactionId, InteractionHead targetHead, 
ObjectAction objectAction, Can<ManagedObject> argAdapters)
+  CommandDto asCommandDto(UUID interactionId, InteractionHead targetHead, 
OneToOneAssociation property, ManagedObject valueAdapter)
+  void addActionArgs(InteractionHead head, ObjectAction objectAction, 
ActionDto actionDto, Can<ManagedObject> argAdapters)
+  void addPropertyValue(InteractionHead interactionHead, OneToOneAssociation 
property, PropertyDto propertyDto, ManagedObject valueAdapter)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/command/CommandExecutorServiceDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/command/CommandExecutorServiceDefault.adoc
index b18d06fad8..08b546d4a4 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/command/CommandExecutorServiceDefault.adoc
@@ -1,21 +1,16 @@
-= FakeScheduler
+= CommandExecutorServiceDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.CommandExecutorServiceDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class CommandExecutorServiceDefault {
+  Try<Bookmark> executeCommand(Command command)
+  Try<Bookmark> executeCommand(InteractionContextPolicy 
interactionContextPolicy, Command command)
+  Try<Bookmark> executeCommand(CommandDto dto)
+  Try<Bookmark> executeCommand(InteractionContextPolicy 
interactionContextPolicy, CommandDto dto)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/command/SchemaValueMarshallerDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/command/SchemaValueMarshallerDefault.adoc
index b18d06fad8..60abf83ac2 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/command/SchemaValueMarshallerDefault.adoc
@@ -1,21 +1,12 @@
-= FakeScheduler
+= SchemaValueMarshallerDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.SchemaValueMarshallerDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class SchemaValueMarshallerDefault {
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/email/EmailServiceDefault.adoc
similarity index 50%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/email/EmailServiceDefault.adoc
index b18d06fad8..ffd6a53758 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/email/EmailServiceDefault.adoc
@@ -1,21 +1,33 @@
-= FakeScheduler
+= EmailServiceDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
+A service that sends email notifications when specific events occur
+
+Note that this default implementation requires that an implementation of 
Spring's _JavaMailSender_ is configured.
 
 == API
 
 [source,java]
-.FakeScheduler.java
+.EmailServiceDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class EmailServiceDefault {
+  void init()     // <.>
+  boolean isConfigured()
+  boolean send(List<String> toList, List<String> ccList, List<String> bccList, 
String subject, String body, DataSource... attachments)
+  String[] originalUnlessOverridden(List<String> original, String 
overrideIfAny)
+  boolean notEmpty(String[] addresses)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
+<.> xref:#init_[init()]
++
+--
+Loads responsive email templates borrowed from 
http://zurb.com/ink/templates.php (Basic)
+--
 
 == Members
 
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
+[#init_]
+=== init()
+
+Loads responsive email templates borrowed from 
http://zurb.com/ink/templates.php (Basic)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/eventbus/EventBusServiceSpring.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/eventbus/EventBusServiceSpring.adoc
index b18d06fad8..325a2e8290 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/eventbus/EventBusServiceSpring.adoc
@@ -1,21 +1,13 @@
-= FakeScheduler
+= EventBusServiceSpring
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.EventBusServiceSpring.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class EventBusServiceSpring {
+  void post(Object event)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/executor/MemberExecutorServiceDefault.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/executor/MemberExecutorServiceDefault.adoc
new file mode 100644
index 0000000000..41a00d134b
--- /dev/null
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/executor/MemberExecutorServiceDefault.adoc
@@ -0,0 +1,28 @@
+= MemberExecutorServiceDefault
+: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 [...]
+
+== API
+
+[source,java]
+.MemberExecutorServiceDefault.java
+----
+class MemberExecutorServiceDefault {
+  Optional<InteractionInternal> getInteraction()
+  ManagedObject invokeAction(ActionExecutor actionExecutor)
+  ManagedObject setOrClearProperty(PropertyModifier propertyExecutor)
+  void prepareCommandForPublishing(Command command, InteractionHead 
interactionHead, ObjectMember objectMember, FacetHolder facetHolder)     // <.>
+}
+----
+
+<.> 
xref:#prepareCommandForPublishing_Command_InteractionHead_ObjectMember_FacetHolder[prepareCommandForPublishing(Command,
 InteractionHead, ObjectMember, FacetHolder)]
++
+--
+Will set the command's CommandPublishingPhase to READY, if command and 
objectMember have a matching member-id and if the facetHolder has a 
CommandPublishingFacet (has commandPublishing=ENABLED).
+--
+
+== Members
+
+[#prepareCommandForPublishing_Command_InteractionHead_ObjectMember_FacetHolder]
+=== prepareCommandForPublishing(Command, InteractionHead, ObjectMember, 
FacetHolder)
+
+Will set the command's CommandPublishingPhase to READY, if command and 
objectMember have a matching member-id and if the facetHolder has a 
CommandPublishingFacet (has commandPublishing=ENABLED).
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/factory/FactoryServiceDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/factory/FactoryServiceDefault.adoc
index b18d06fad8..19a240a9fd 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/factory/FactoryServiceDefault.adoc
@@ -1,21 +1,20 @@
-= FakeScheduler
+= FactoryServiceDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.FactoryServiceDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class FactoryServiceDefault {
+  T getOrCreate(Class<T> requiredType)
+  T get(Class<T> requiredType)
+  T detachedEntity(Class<T> domainClass)
+  T detachedEntity(T entityPojo)
+  T mixin(Class<T> mixinClass, Object mixee)
+  T viewModel(T viewModelPojo)
+  T viewModel(Class<T> viewModelClass, Bookmark bookmark)
+  T create(Class<T> domainClass)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/homepage/HomePageResolverServiceDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/homepage/HomePageResolverServiceDefault.adoc
index b18d06fad8..e2aafa8b5d 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/homepage/HomePageResolverServiceDefault.adoc
@@ -1,21 +1,15 @@
-= FakeScheduler
+= HomePageResolverServiceDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.HomePageResolverServiceDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class HomePageResolverServiceDefault {
+  HomePageResolverServiceDefault(FactoryService factoryService, 
CausewayBeanTypeRegistry causewayBeanTypeRegistry)
+  void init()
+  Object getHomePage()
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/i18n/po/ContextAndMsgId.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/i18n/po/ContextAndMsgId.adoc
new file mode 100644
index 0000000000..7e83f325c5
--- /dev/null
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/i18n/po/ContextAndMsgId.adoc
@@ -0,0 +1,48 @@
+= ContextAndMsgId
+:Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
+
+The combination of a `msgId` and context (optionally null) that represents a 
key to a translatable resource.
+
+For example, with this _.pot_ file:
+
+----
+#: 
org.causewayaddons.module.sessionlogger.dom.SessionLoggingServiceMenu#activeSessions()
+ msgid: "Active Sessions"
+
+ #: org.causewayaddons.module.audit.dom.AuditingServiceMenu
+ #: org.causewayaddons.module.command.dom.CommandServiceMenu
+ #: org.causewayaddons.module.publishing.dom.PublishingServiceMenu
+ msgid: "Activity"
+----
+
+the combination of 
`{org.causewayaddons.module.sessionlogger.dom.SessionLoggingServiceMenu#activeSessions(),
 "Active Sessions"}` represents such a key, as does 
`{org.causewayaddons.module.audit.dom.AuditingServiceMenu, "Activity"}` 
+
+== API
+
+[source,java]
+.ContextAndMsgId.java
+----
+class ContextAndMsgId {
+  ContextAndMsgId(String context, String msgId, Type type)
+  String getMsgId()
+  String getContext()
+  Type getType()     // <.>
+  boolean equals(Object o)
+  int hashCode()
+  int compareTo(ContextAndMsgId o)
+  String toString()
+}
+----
+
+<.> xref:#getType_[getType()]
++
+--
+Not part of equals/hashCode impl.
+--
+
+== Members
+
+[#getType_]
+=== getType()
+
+Not part of equals/hashCode impl.
diff --git 
a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/i18n/po/TranslationServicePo.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/i18n/po/TranslationServicePo.adoc
new file mode 100644
index 0000000000..1f6cbd3a8a
--- /dev/null
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/i18n/po/TranslationServicePo.adoc
@@ -0,0 +1,64 @@
+= TranslationServicePo
+: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 [...]
+
+== API
+
+[source,java]
+.TranslationServicePo.java
+----
+class TranslationServicePo {
+  TranslationServicePo()     // <.>
+  void init()
+  void shutdown()
+  String translate(TranslationContext context, String text)
+  String translate(TranslationContext context, String singularText, String 
pluralText, int num)
+  Mode getMode()
+  Optional<String> toPot()     // <.>
+  void clearCache()     // <.>
+  void toggleMode()     // <.>
+  Can<TranslationsResolver> getTranslationsResolver()
+}
+----
+
+<.> xref:#TranslationServicePo_[TranslationServicePo()]
++
+--
+Defaults to writer mode because the service won't have been init'd while the 
metamodel is bring instantiated, and we want to ensure that we capture all 
requests for translation.
+--
+<.> xref:#toPot_[toPot()]
++
+--
+Not API
+--
+<.> xref:#clearCache_[clearCache()]
++
+--
+Not API
+--
+<.> xref:#toggleMode_[toggleMode()]
++
+--
+Not API
+--
+
+== Members
+
+[#TranslationServicePo_]
+=== TranslationServicePo()
+
+Defaults to writer mode because the service won't have been init'd while the 
metamodel is bring instantiated, and we want to ensure that we capture all 
requests for translation.
+
+[#toPot_]
+=== toPot()
+
+Not API
+
+[#clearCache_]
+=== clearCache()
+
+Not API
+
+[#toggleMode_]
+=== toggleMode()
+
+Not API
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/i18n/po/TranslationServicePoMenu.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/i18n/po/TranslationServicePoMenu.adoc
index b18d06fad8..734b8143b7 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/i18n/po/TranslationServicePoMenu.adoc
@@ -1,21 +1,22 @@
-= FakeScheduler
+= TranslationServicePoMenu
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.TranslationServicePoMenu.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class TranslationServicePoMenu {
+  public static final String LOGICAL_TYPE_NAME;
+  Clob downloadTranslations(String potFileName)
+  String default0DownloadTranslations()
+  String disableDownloadTranslations()
+  void resetTranslationCache()
+  String disableResetTranslationCache()
+  void switchToReadingTranslations()
+  String disableSwitchToReadingTranslations()
+  void switchToWritingTranslations()
+  String disableSwitchToWritingTranslations()
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/icons/ObjectIconServiceDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/icons/ObjectIconServiceDefault.adoc
index b18d06fad8..a2c7febce7 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/icons/ObjectIconServiceDefault.adoc
@@ -1,21 +1,13 @@
-= FakeScheduler
+= ObjectIconServiceDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.ObjectIconServiceDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class ObjectIconServiceDefault {
+  ObjectIcon getObjectIcon(ObjectSpecification spec, String iconNameModifier)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/interaction/InteractionDtoFactoryDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/interaction/InteractionDtoFactoryDefault.adoc
index b18d06fad8..34aa8b4699 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/interaction/InteractionDtoFactoryDefault.adoc
@@ -1,21 +1,17 @@
-= FakeScheduler
+= InteractionDtoFactoryDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
+The design of this service is similar to 
_org.apache.causeway.core.runtimeservices.command.CommandDtoFactoryDefault_
 
 == API
 
 [source,java]
-.FakeScheduler.java
+.InteractionDtoFactoryDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class InteractionDtoFactoryDefault {
+  ActionInvocationDto asActionInvocationDto(ObjectAction objectAction, 
InteractionHead head, Can<ManagedObject> argumentAdapters)
+  ActionInvocationDto updateResult(ActionInvocationDto actionInvocationDto, 
ObjectAction objectAction, ManagedObject resultObject)
+  PropertyEditDto asPropertyEditDto(OneToOneAssociation property, 
InteractionHead interactionHead, ManagedObject newValueAdapterIfAny)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/jaxb/JaxbServiceDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/jaxb/JaxbServiceDefault.adoc
index b18d06fad8..42b3116a38 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/jaxb/JaxbServiceDefault.adoc
@@ -1,21 +1,12 @@
-= FakeScheduler
+= JaxbServiceDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.JaxbServiceDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class JaxbServiceDefault {
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/locale/LanguageProviderDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/locale/LanguageProviderDefault.adoc
index b18d06fad8..2e2a8352d6 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/locale/LanguageProviderDefault.adoc
@@ -1,21 +1,13 @@
-= FakeScheduler
+= LanguageProviderDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.LanguageProviderDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class LanguageProviderDefault {
+  Optional<Locale> getPreferredLanguage()
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/locale/LocaleChoiceProviderDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/locale/LocaleChoiceProviderDefault.adoc
index b18d06fad8..4f6ea08694 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/locale/LocaleChoiceProviderDefault.adoc
@@ -1,21 +1,13 @@
-= FakeScheduler
+= LocaleChoiceProviderDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.LocaleChoiceProviderDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class LocaleChoiceProviderDefault {
+  List<Locale> getAvailableLocales()
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/menubars/MenuBarsLoaderServiceDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/menubars/MenuBarsLoaderServiceDefault.adoc
index b18d06fad8..de46086c2f 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/menubars/MenuBarsLoaderServiceDefault.adoc
@@ -1,21 +1,16 @@
-= FakeScheduler
+= MenuBarsLoaderServiceDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.MenuBarsLoaderServiceDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class MenuBarsLoaderServiceDefault {
+  MenuBarsLoaderServiceDefault(MetaModelContext mmc)
+  MenuBarsLoaderServiceDefault(AtomicReference<AbstractResource> 
menubarsLayoutResourceRef, CommonMimeType formatUnderTest)
+  boolean supportsReloading()
+  Optional<T> menuBars(MenuBarsMarshallerService<T> marshaller)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/menubars/bootstrap/MenuBarsMarshallerServiceBootstrap.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/menubars/bootstrap/MenuBarsMarshallerServiceBootstrap.adoc
index b18d06fad8..1bcc16e249 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/menubars/bootstrap/MenuBarsMarshallerServiceBootstrap.adoc
@@ -1,21 +1,16 @@
-= FakeScheduler
+= MenuBarsMarshallerServiceBootstrap
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.MenuBarsMarshallerServiceBootstrap.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class MenuBarsMarshallerServiceBootstrap {
+  MenuBarsMarshallerServiceBootstrap(JaxbService jaxbService)
+  Class<BSMenuBars> supportedClass()
+  String marshal(BSMenuBars menuBars, CommonMimeType format)
+  Try<BSMenuBars> unmarshal(String layoutFileContent, CommonMimeType format)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/menubars/bootstrap/MenuBarsServiceBootstrap.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/menubars/bootstrap/MenuBarsServiceBootstrap.adoc
index b18d06fad8..de131c09ba 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/menubars/bootstrap/MenuBarsServiceBootstrap.adoc
@@ -1,21 +1,19 @@
-= FakeScheduler
+= MenuBarsServiceBootstrap
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.MenuBarsServiceBootstrap.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class MenuBarsServiceBootstrap {
+  public static final String MB3_TNS;
+  public static final String MB3_SCHEMA_LOCATION;
+  public static final String COMPONENT_TNS;
+  public static final String COMPONENT_SCHEMA_LOCATION;
+  public static final String LINKS_TNS;
+  public static final String LINKS_SCHEMA_LOCATION;
+  BSMenuBars menuBars(Type type)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/message/MessageServiceDefault.adoc
similarity index 50%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/message/MessageServiceDefault.adoc
index b18d06fad8..c4b69b9e6c 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/message/MessageServiceDefault.adoc
@@ -1,21 +1,23 @@
-= FakeScheduler
+= MessageServiceDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.MessageServiceDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class MessageServiceDefault {
+  void onMetamodelLoaded()
+  void informUser(String message)
+  String informUser(TranslatableString message, Class<?> contextClass, String 
contextMethod)
+  String informUser(TranslatableString message, TranslationContext 
translationContext)
+  void warnUser(String message)
+  String warnUser(TranslatableString message, Class<?> contextClass, String 
contextMethod)
+  String warnUser(TranslatableString message, TranslationContext 
translationContext)
+  void raiseError(String message)
+  void setError(String message)
+  String raiseError(TranslatableString message, Class<?> contextClass, String 
contextMethod)
+  String raiseError(TranslatableString message, TranslationContext 
translationContext)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/publish/CommandPublisherDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/publish/CommandPublisherDefault.adoc
index b18d06fad8..2f05e94186 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/publish/CommandPublisherDefault.adoc
@@ -1,21 +1,16 @@
-= FakeScheduler
+= CommandPublisherDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.CommandPublisherDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class CommandPublisherDefault {
+  CommandPublisherDefault(List<CommandSubscriber> subscribers, 
Provider<InteractionLayerTracker> interactionServiceProvider)
+  void ready(Command command)
+  void start(Command command)
+  void complete(Command command)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/publish/EntityChangesPublisherDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/publish/EntityChangesPublisherDefault.adoc
index b18d06fad8..0ac5392e9f 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/publish/EntityChangesPublisherDefault.adoc
@@ -1,21 +1,14 @@
-= FakeScheduler
+= EntityChangesPublisherDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.EntityChangesPublisherDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class EntityChangesPublisherDefault {
+  void init()
+  void publishChangingEntities(HasEnlistedEntityChanges 
hasEnlistedEntityChanges)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/publish/EntityPropertyChangePublisherDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/publish/EntityPropertyChangePublisherDefault.adoc
index b18d06fad8..9a77078466 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/publish/EntityPropertyChangePublisherDefault.adoc
@@ -1,21 +1,14 @@
-= FakeScheduler
+= EntityPropertyChangePublisherDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.EntityPropertyChangePublisherDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class EntityPropertyChangePublisherDefault {
+  void init()
+  void publishChangedProperties()
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/publish/ExecutionPublisherDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/publish/ExecutionPublisherDefault.adoc
index b18d06fad8..ddbaf91242 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/publish/ExecutionPublisherDefault.adoc
@@ -1,21 +1,17 @@
-= FakeScheduler
+= ExecutionPublisherDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.ExecutionPublisherDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class ExecutionPublisherDefault {
+  void init()
+  void destroy()
+  void publishActionInvocation(Execution<?, ?> execution)
+  void publishPropertyEdit(Execution<?, ?> execution)
+  T withPublishingSuppressed(Supplier<T> block)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/recognizer/dae/ExceptionRecognizerForDataAccessException.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/recognizer/dae/ExceptionRecognizerForDataAccessException.adoc
index b18d06fad8..6045ecce42 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/recognizer/dae/ExceptionRecognizerForDataAccessException.adoc
@@ -1,21 +1,16 @@
-= FakeScheduler
+= ExceptionRecognizerForDataAccessException
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
+Translates _DataAccessException_ (s) to 
xref:refguide:applib:index/services/exceprecog/Recognition.adoc[Recognition] 
(s), unless disabled via _CausewayConfiguration_ .
 
 == API
 
 [source,java]
-.FakeScheduler.java
+.ExceptionRecognizerForDataAccessException.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class ExceptionRecognizerForDataAccessException {
+  ExceptionRecognizerForDataAccessException(CausewayConfiguration conf)
+  Optional<Recognition> recognize(Throwable ex)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/routing/RoutingServiceDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/routing/RoutingServiceDefault.adoc
index b18d06fad8..97d3d016e2 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/routing/RoutingServiceDefault.adoc
@@ -1,21 +1,14 @@
-= FakeScheduler
+= RoutingServiceDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.RoutingServiceDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class RoutingServiceDefault {
+  boolean canRoute(Object original)
+  Object route(Object original)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/scratchpad/ScratchpadDefault.adoc
similarity index 52%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/scratchpad/ScratchpadDefault.adoc
index b18d06fad8..dd5de02d82 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/scratchpad/ScratchpadDefault.adoc
@@ -1,21 +1,47 @@
-= FakeScheduler
+= ScratchpadDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.ScratchpadDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class ScratchpadDefault {
+  Object get(Object key)     // <.>
+  void put(Object key, Object value)     // <.>
+  void destroy()     // <.>
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
+<.> xref:#get_Object[get(Object)]
++
+--
+Obtain user-data, as set by a previous object being acted upon.
+--
+<.> xref:#put_Object_Object[put(Object, Object)]
++
+--
+Set user-data, for the use of a subsequent object being acted upon.
+--
+<.> xref:#destroy_[destroy()]
++
+--
+Clear any user data.
+--
 
 == Members
 
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
+[#get_Object]
+=== get(Object)
+
+Obtain user-data, as set by a previous object being acted upon.
+
+[#put_Object_Object]
+=== put(Object, Object)
+
+Set user-data, for the use of a subsequent object being acted upon.
+
+[#destroy_]
+=== destroy()
+
+Clear any user data.
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/serializing/SerializingAdapterDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/serializing/SerializingAdapterDefault.adoc
index b18d06fad8..943fa4cfd5 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/serializing/SerializingAdapterDefault.adoc
@@ -1,21 +1,16 @@
-= FakeScheduler
+= SerializingAdapterDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
+Default implementation of _SerializingAdapter_ , intended as an 'internal' 
service.
 
 == API
 
 [source,java]
-.FakeScheduler.java
+.SerializingAdapterDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class SerializingAdapterDefault {
+  Serializable write(Object value)
+  T read(Class<T> valueClass, Serializable value)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/session/InteractionIdGenerator.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/session/InteractionIdGenerator.adoc
index b18d06fad8..9b10ecad5d 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/session/InteractionIdGenerator.adoc
@@ -1,21 +1,13 @@
-= FakeScheduler
+= InteractionIdGenerator
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.InteractionIdGenerator.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+interface InteractionIdGenerator {
+  UUID interactionId()
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/session/InteractionIdGeneratorDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/session/InteractionIdGeneratorDefault.adoc
index b18d06fad8..518f897dda 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/session/InteractionIdGeneratorDefault.adoc
@@ -1,21 +1,13 @@
-= FakeScheduler
+= InteractionIdGeneratorDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.InteractionIdGeneratorDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class InteractionIdGeneratorDefault {
+  UUID interactionId()
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/session/InteractionServiceDefault.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/session/InteractionServiceDefault.adoc
new file mode 100644
index 0000000000..da44175f55
--- /dev/null
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/session/InteractionServiceDefault.adoc
@@ -0,0 +1,50 @@
+= InteractionServiceDefault
+: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 [...]
+
+Is the factory of 
xref:refguide:applib:index/services/iactn/Interaction.adoc[Interaction] s.
+
+== API
+
+[source,java]
+.InteractionServiceDefault.java
+----
+class InteractionServiceDefault {
+  InteractionServiceDefault(MetamodelEventService runtimeEventService, 
SpecificationLoader specificationLoader, ServiceInjector serviceInjector, 
TransactionServiceSpring transactionServiceSpring, ClockService clockService, 
Provider<CommandPublisher> commandPublisherProvider, ConfigurableBeanFactory 
beanFactory, InteractionIdGenerator interactionIdGenerator)
+  void init(ContextRefreshedEvent event)
+  int getInteractionLayerCount()
+  InteractionLayer openInteraction()
+  InteractionLayer openInteraction(InteractionContext interactionContextToUse)
+  void closeInteractionLayers()
+  Optional<InteractionLayer> currentInteractionLayer()
+  boolean isInInteraction()
+  R call(InteractionContext interactionContext, Callable<R> callable)
+  void run(InteractionContext interactionContext, ThrowingRunnable runnable)
+  R callAnonymous(Callable<R> callable)
+  void runAnonymous(ThrowingRunnable runnable)     // <.>
+  Optional<UUID> getInteractionId()
+  void completeAndPublishCurrentCommand()     // <.>
+}
+----
+
+<.> xref:#runAnonymous_ThrowingRunnable[runAnonymous(ThrowingRunnable)]
++
+--
+Variant of _#callAnonymous(Callable)_ that takes a runnable.
+--
+<.> xref:#completeAndPublishCurrentCommand_[completeAndPublishCurrentCommand()]
++
+--
+called by 
xref:refguide:core:index/runtimeservices/transaction/TransactionServiceSpring.adoc[TransactionServiceSpring]
 , but to be moved.
+--
+
+== Members
+
+[#runAnonymous_ThrowingRunnable]
+=== runAnonymous(ThrowingRunnable)
+
+Variant of _#callAnonymous(Callable)_ that takes a runnable.
+
+[#completeAndPublishCurrentCommand_]
+=== completeAndPublishCurrentCommand()
+
+called by 
xref:refguide:core:index/runtimeservices/transaction/TransactionServiceSpring.adoc[TransactionServiceSpring]
 , but to be moved.
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/sitemap/SitemapServiceDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/sitemap/SitemapServiceDefault.adoc
index b18d06fad8..bb02ce27cc 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/sitemap/SitemapServiceDefault.adoc
@@ -1,21 +1,13 @@
-= FakeScheduler
+= SitemapServiceDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.SitemapServiceDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class SitemapServiceDefault {
+  String toSitemapAdoc(String title)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/user/ImpersonateMenuAdvisorDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/user/ImpersonateMenuAdvisorDefault.adoc
index b18d06fad8..b3211e9b2a 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/user/ImpersonateMenuAdvisorDefault.adoc
@@ -1,21 +1,20 @@
-= FakeScheduler
+= ImpersonateMenuAdvisorDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
+This default implementation simply returns empty lists.
+
+This has the effect that the 
_org.apache.causeway.applib.services.user.ImpersonateMenu_ 's 
_org.apache.causeway.applib.services.user.ImpersonateMenu.impersonateWithRoles#act(String,
 List, String) impersonateWithRoles_ action will be hidden.
 
 == API
 
 [source,java]
-.FakeScheduler.java
+.ImpersonateMenuAdvisorDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class ImpersonateMenuAdvisorDefault {
+  List<String> allUserNames()
+  List<String> allRoleNames()
+  List<String> roleNamesFor(String username)
+  String multiTenancyTokenFor(String username)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/user/UserCurrentSessionTimeZoneHolderDefault.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/user/UserCurrentSessionTimeZoneHolderDefault.adoc
index b18d06fad8..2708e1a530 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/user/UserCurrentSessionTimeZoneHolderDefault.adoc
@@ -1,21 +1,15 @@
-= FakeScheduler
+= UserCurrentSessionTimeZoneHolderDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.UserCurrentSessionTimeZoneHolderDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class UserCurrentSessionTimeZoneHolderDefault {
+  void setUserTimeZone(ZoneId zoneId)
+  Optional<ZoneId> getUserTimeZone()
+  void clearUserTimeZone()
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/userreg/EmailNotificationServiceDefault.adoc
similarity index 54%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/userreg/EmailNotificationServiceDefault.adoc
index b18d06fad8..f8ef81a722 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/userreg/EmailNotificationServiceDefault.adoc
@@ -1,21 +1,28 @@
-= FakeScheduler
+= EmailNotificationServiceDefault
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
-
 == API
 
 [source,java]
-.FakeScheduler.java
+.EmailNotificationServiceDefault.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class EmailNotificationServiceDefault {
+  void init()     // <.>
+  boolean isConfigured()
+  boolean send(EmailRegistrationEvent emailRegistrationEvent)
+  boolean send(PasswordResetEvent passwordResetEvent)
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
+<.> xref:#init_[init()]
++
+--
+Loads responsive email templates borrowed from 
http://zurb.com/ink/templates.php (Basic)
+--
 
 == Members
 
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
+[#init_]
+=== init()
+
+Loads responsive email templates borrowed from 
http://zurb.com/ink/templates.php (Basic)
diff --git 
a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/wrapper/WrapperFactoryDefault.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/wrapper/WrapperFactoryDefault.adoc
new file mode 100644
index 0000000000..fe252231be
--- /dev/null
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/wrapper/WrapperFactoryDefault.adoc
@@ -0,0 +1,27 @@
+= WrapperFactoryDefault
+: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 [...]
+
+== API
+
+[source,java]
+.WrapperFactoryDefault.java
+----
+class WrapperFactoryDefault {
+  void init()
+  void close()
+  T wrap(T domainObject)
+  T wrap(T domainObject, SyncControl syncControl)
+  T wrapMixin(Class<T> mixinClass, Object mixee)
+  T wrapMixin(Class<T> mixinClass, Object mixee, SyncControl syncControl)
+  boolean isWrapper(Object obj)
+  T unwrap(T possibleWrappedDomainObject)
+  T asyncWrap(T domainObject, AsyncControl<R> asyncControl)
+  T asyncWrapMixin(Class<T> mixinClass, Object mixee, AsyncControl<R> 
asyncControl)
+  List<InteractionListener> getListeners()
+  boolean addInteractionListener(InteractionListener listener)
+  boolean removeInteractionListener(InteractionListener listener)
+  void notifyListeners(InteractionEvent interactionEvent)
+  R execute(AsyncCallable<R> asyncCallable)
+}
+----
+
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/xmlsnapshot/XmlSnapshotBuilder.adoc
similarity index 53%
copy from 
antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
copy to 
antora/components/refguide-index/modules/core/pages/index/runtimeservices/xmlsnapshot/XmlSnapshotBuilder.adoc
index b18d06fad8..93819e4374 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/xmlsnapshot/XmlSnapshotBuilder.adoc
@@ -1,21 +1,27 @@
-= FakeScheduler
+= XmlSnapshotBuilder
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 
-Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
+Builds a _XmlSnapshot_ fluently with a builder:
+
+----
+XmlSnapshot snapshot = XmlSnapshotBuilder
+    .create(customer)
+    .includePath("placeOfBirth")
+    .includePath("orders/product")
+    .build();
+Element customerAsXml = snapshot.toXml();
+----
 
 == API
 
 [source,java]
-.FakeScheduler.java
+.XmlSnapshotBuilder.java
 ----
-class FakeScheduler {
-  CommandBulkExecutionResult runBackgroundCommands(long waitForMillis, 
NoCommandsPolicy noCommandsPolicy)     // <.>
+class XmlSnapshotBuilder {
+  XmlSnapshotBuilder usingSchema(XmlSchema schema)
+  XmlSnapshotBuilder includePath(String path)
+  XmlSnapshotBuilder includePathAndAnnotation(String path, String annotation)
+  XmlSnapshot build()
 }
 ----
 
-<.> 
xref:#runBackgroundCommands_long_NoCommandsPolicy[runBackgroundCommands(long, 
NoCommandsPolicy)]
-
-== Members
-
-[#runBackgroundCommands_long_NoCommandsPolicy]
-=== runBackgroundCommands(long, NoCommandsPolicy)
diff --git 
a/antora/components/refguide-index/modules/core/pages/index/runtimeservices/xmlsnapshot/XmlSnapshotServiceDefault.adoc
 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/xmlsnapshot/XmlSnapshotServiceDefault.adoc
new file mode 100644
index 0000000000..3d18de9bb6
--- /dev/null
+++ 
b/antora/components/refguide-index/modules/core/pages/index/runtimeservices/xmlsnapshot/XmlSnapshotServiceDefault.adoc
@@ -0,0 +1,38 @@
+= XmlSnapshotServiceDefault
+: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 [...]
+
+== API
+
+[source,java]
+.XmlSnapshotServiceDefault.java
+----
+class XmlSnapshotServiceDefault {
+  XmlSnapshotServiceDefault(XmlService xmlService, SpecificationLoader 
specificationLoader)
+  XmlSnapshotService.Snapshot snapshotFor(Object domainObject)     // <.>
+  Snapshot.Builder builderFor(Object domainObject)     // <.>
+  T getChildElementValue(Element el, String tagname, Class<T> expectedCls)
+}
+----
+
+<.> xref:#snapshotFor_Object[snapshotFor(Object)]
++
+--
+Creates a simple snapshot of the domain object.
+--
+<.> xref:#builderFor_Object[builderFor(Object)]
++
+--
+Creates a builder that allows a custom snapshot - traversing additional 
associated properties or collections (using 
_org.apache.causeway.applib.services.xmlsnapshot.XmlSnapshotService.Snapshot.Builder#includePath(String)_
 and 
_org.apache.causeway.applib.services.xmlsnapshot.XmlSnapshotService.Snapshot.Builder#includePathAndAnnotation(String,
 String)_ ) - to be created.
+--
+
+== Members
+
+[#snapshotFor_Object]
+=== snapshotFor(Object)
+
+Creates a simple snapshot of the domain object.
+
+[#builderFor_Object]
+=== builderFor(Object)
+
+Creates a builder that allows a custom snapshot - traversing additional 
associated properties or collections (using 
_org.apache.causeway.applib.services.xmlsnapshot.XmlSnapshotService.Snapshot.Builder#includePath(String)_
 and 
_org.apache.causeway.applib.services.xmlsnapshot.XmlSnapshotService.Snapshot.Builder#includePathAndAnnotation(String,
 String)_ ) - to be created.
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
 
b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
index b18d06fad8..a43348ce57 100644
--- 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
+++ 
b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/fakescheduler/FakeScheduler.adoc
@@ -3,6 +3,8 @@
 
 Intended to support integration testing which uses the 
_org.apache.causeway.extensions.commandlog.applib.dom.BackgroundService_ to 
create background 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[CommandLogEntry]
 s, that the integration test then needs to be executed.
 
+In effect, emulates the work performed by 
_org.apache.causeway.extensions.commandlog.applib.job.RunBackgroundCommandsJob_ 
.
+
 == API
 
 [source,java]
diff --git 
a/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/spi/RunBackgroundCommandsJobListener.adoc
 
b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/spi/RunBackgroundCommandsJobListener.adoc
new file mode 100644
index 0000000000..584b8535bf
--- /dev/null
+++ 
b/antora/components/refguide-index/modules/extensions/pages/index/commandlog/applib/spi/RunBackgroundCommandsJobListener.adoc
@@ -0,0 +1,31 @@
+= RunBackgroundCommandsJobListener
+: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 [...]
+
+Listens to the processing of the 
_org.apache.causeway.extensions.commandlog.applib.job.RunBackgroundCommandsJob_ 
.
+
+== API
+
+[source,java]
+.RunBackgroundCommandsJobListener.java
+----
+interface RunBackgroundCommandsJobListener {
+  void executed(List<String> commandInteractionIds)     // <.>
+}
+----
+
+<.> xref:#executed_List[executed(List)]
++
+--
+The _CommandDto#getInteractionId() interactionId_ s of the _CommandDto_ s that 
were executed.
+--
+
+== Members
+
+[#executed_List]
+=== executed(List)
+
+The _CommandDto#getInteractionId() interactionId_ s of the _CommandDto_ s that 
were executed.
+
+The commands thus identified may or may not have executed successfully; indeed 
if there was a deadlock then the transaction will have been rolled back and so 
the command may not even have been executed at all.
+
+Implementation note: the _CommandDto_ s are not passed in, instead only the 
command's _CommandDto#getInteractionId() interactionId_ , to avoid issues and 
complications with the state of the in-memory _CommandDto_ ; is it in sync with 
the database if a deadlock occurred for example? Passing in just the identifier 
means that it's the responsibility of the listener to determine the state, 
typically by refetching the 
xref:refguide:extensions:index/commandlog/applib/dom/CommandLogEntry.adoc[C 
[...]
diff --git a/core/adoc/modules/_overview/pages/about.adoc 
b/core/adoc/modules/_overview/pages/about.adoc
index 00f002fa3c..3d6fc9f1aa 100644
--- a/core/adoc/modules/_overview/pages/about.adoc
+++ b/core/adoc/modules/_overview/pages/about.adoc
@@ -1367,7 +1367,7 @@ org.springframework:spring-context-support:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:core:index/runtimeservices/publish/LifecycleCallbackNotifier.adoc[LifecycleCallbackNotifier],
 
xref:refguide:core:index/runtimeservices/publish/ObjectLifecyclePublisherDefault.adoc[ObjectLifecyclePublisherDefault],
 
xref:refguide:core:index/runtimeservices/spring/BeanDescriptor.adoc[BeanDescriptor],
 
xref:refguide:core:index/runtimeservices/spring/ContextBeans.adoc[ContextBeans],
 
xref:refguide:core:index/runtimeservices/spring/SpringBeansService.adoc[SpringBeansService],
 xref: [...]
+xref:refguide:core:index/runtimeservices/bookmarks/BookmarkServiceDefault.adoc[BookmarkServiceDefault],
 
xref:refguide:core:index/runtimeservices/command/CommandDtoFactoryDefault.adoc[CommandDtoFactoryDefault],
 
xref:refguide:core:index/runtimeservices/command/CommandExecutorServiceDefault.adoc[CommandExecutorServiceDefault],
 
xref:refguide:core:index/runtimeservices/command/SchemaValueMarshallerDefault.adoc[SchemaValueMarshallerDefault],
 xref:refguide:core:index/runtimeservices/email/Email [...]
 ****
 
 |Apache Causeway Core - Security
@@ -5624,6 +5624,7 @@ 
o.a.i.extensions.commandlog.applib.dom.CommandLogEntry$TableColumnOrderDefault +
 o.a.i.extensions.commandlog.applib.fakescheduler.FakeScheduler +
 o.a.i.extensions.commandlog.applib.job.BackgroundCommandsJobControl +
 o.a.i.extensions.commandlog.applib.job.RunBackgroundCommandsJob +
+o.a.i.extensions.commandlog.applib.spi.RunBackgroundCommandsJobListener$Noop +
 o.a.i.extensions.commandlog.applib.subscriber.CommandSubscriberForCommandLog +
 ****
 
@@ -5640,7 +5641,7 @@ org.quartz-scheduler:quartz:jar:<managed> +
 
 .Document Index Entries
 ****
-xref:refguide:extensions:index/commandlog/applib/app/CommandLogMenu.adoc[CommandLogMenu],
 
xref:refguide:extensions:index/commandlog/applib/contributions/HasInteractionId_commandLogEntry.adoc[HasInteractionId_commandLogEntry],
 
xref:refguide:extensions:index/commandlog/applib/contributions/HasUsername_recentCommandsByUser.adoc[HasUsername_recentCommandsByUser],
 
xref:refguide:extensions:index/commandlog/applib/contributions/Object_recentCommands.adoc[Object_recentCommands],
 xref:refguide:ex [...]
+xref:refguide:extensions:index/commandlog/applib/app/CommandLogMenu.adoc[CommandLogMenu],
 
xref:refguide:extensions:index/commandlog/applib/contributions/HasInteractionId_commandLogEntry.adoc[HasInteractionId_commandLogEntry],
 
xref:refguide:extensions:index/commandlog/applib/contributions/HasUsername_recentCommandsByUser.adoc[HasUsername_recentCommandsByUser],
 
xref:refguide:extensions:index/commandlog/applib/contributions/Object_recentCommands.adoc[Object_recentCommands],
 xref:refguide:ex [...]
 ****
 
 |Apache Causeway Ext - Command Log Implementation (JDO)
diff --git 
a/core/config/src/main/adoc/modules/config/pages/sections/causeway.extensions.adoc
 
b/core/config/src/main/adoc/modules/config/pages/sections/causeway.extensions.adoc
index a3d0aaf367..1e59ad1296 100644
--- 
a/core/config/src/main/adoc/modules/config/pages/sections/causeway.extensions.adoc
+++ 
b/core/config/src/main/adoc/modules/config/pages/sections/causeway.extensions.adoc
@@ -33,6 +33,17 @@ persist
 One reason to use this option is if you wish to provide your own 
implementation that wraps or delegates to the default implementation of 
``CommandSubscriber`` that is provided by the _commandlog_ extension. Because 
commands are published to _all_ subscribers on the class path, you can disable 
the default implementation from doing anything using this setting.
 
 
+|
+[[causeway.extensions.command-log.run-background-commands.batch-size]]
+causeway.extensions.command-log. +
+run-background-commands.batch-size
+
+|  25
+| Limits the number of pending commands that the ``RunBackgroundCommandsJob`` 
will execute. After these have been executed, any 
``RunBackgroundCommandsJobListener``s are called.
+
+By default, quartz runs this command every 10 seconds, so the size should be 
proportion to that.
+
+
 |
 [[causeway.extensions.command-replay.analyser.exception.enabled]]
 causeway.extensions.command-replay. +

Reply via email to