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

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


The following commit(s) were added to refs/heads/master by this push:
     new 134f1d0  ISIS-2464: semantic renaming audit/dispatch -> publishing (9)
134f1d0 is described below

commit 134f1d01162d41dfb4d3611c5f3e14813aeb503f
Author: Andi Huber <[email protected]>
AuthorDate: Fri Nov 20 13:33:00 2020 +0100

    ISIS-2464: semantic renaming audit/dispatch -> publishing (9)
---
 antora/components/system/antora.yml                |  3 +-
 antora/components/system/modules/ROOT/nav.adoc     |  8 ---
 .../system/modules/ROOT/pages/system-overview.adoc | 38 +++++------
 .../applib-ant/examples/annotation/Action.java     | 16 ++---
 .../applib-ant/examples/annotation/Auditing.java   | 61 -----------------
 .../examples/annotation/Dispatching.java           | 70 -------------------
 .../examples/annotation/DomainObject.java          | 12 ++--
 .../applib-ant/examples/annotation/Property.java   | 16 ++---
 .../applib-ant/examples/annotation/Publishing.java | 79 ++++++++++++++++++++++
 .../examples/services/DomainChangeRecord.java      |  2 +
 .../RepresentsInteractionMemberExecution.java      |  1 +
 .../services/audit/AuditEntryPropertyIdType.java   | 33 ---------
 .../audit/AuditEntryPropertyValueType.java         | 33 ---------
 .../examples/services/audit/package-info.java      | 26 -------
 .../audit/spi/ChangingEntitiesListener.java        |  9 ---
 .../services/audit/spi/EntityAuditListener.java    | 55 ---------------
 .../examples/services/command/Command.java         | 12 ++--
 .../examples/services/iactn/Interaction.java       |  2 +-
 .../examples/services/iactn/spi/package-info.java  | 28 --------
 .../log/CommandLogger.java}                        | 33 +++++----
 .../log/EntityChangesLogger.java}                  | 21 +++---
 .../log/EntityPropertyChangeLogger.java}           | 33 ++-------
 .../log/ExecutionLogger.java}                      | 16 +++--
 .../examples/services/publishing/package-info.java | 34 ++++++++++
 .../spi/CommandSubscriber.java}                    | 34 +++-------
 .../spi/EntityChanges.java}                        |  8 +--
 .../spi/EntityChangesSubscriber.java}              | 25 +++----
 .../publishing/spi/EntityPropertyChange.java       | 59 ++++++++++++++++
 .../spi/EntityPropertyChangeSubscriber.java}       | 21 +++---
 .../spi/ExecutionSubscriber.java}                  |  5 +-
 .../services/session/SessionLoggingService.java    |  5 +-
 .../examples/services/xactn/TransactionId.java     |  2 +-
 ...ommandDispatcher.adoc => CommandPublisher.adoc} | 13 ++--
 ...bjectsService.adoc => EntityChangeTracker.adoc} |  6 +-
 ...Dispatcher.adoc => EntityChangesPublisher.adoc} | 20 +++---
 ...her.adoc => EntityPropertyChangePublisher.adoc} | 20 +++---
 ...tionDispatcher.adoc => ExecutionPublisher.adoc} | 22 +++---
 37 files changed, 349 insertions(+), 532 deletions(-)

diff --git a/antora/components/system/antora.yml 
b/antora/components/system/antora.yml
index 6819401..49d1c12 100644
--- a/antora/components/system/antora.yml
+++ b/antora/components/system/antora.yml
@@ -19,5 +19,4 @@ name: system
 title: "System Overview"
 version: latest
 start_page: ROOT:system-overview.adoc
-nav:
-- modules/ROOT/nav.adoc
+
diff --git a/antora/components/system/modules/ROOT/nav.adoc 
b/antora/components/system/modules/ROOT/nav.adoc
deleted file mode 100644
index d7f0725..0000000
--- a/antora/components/system/modules/ROOT/nav.adoc
+++ /dev/null
@@ -1,8 +0,0 @@
-
-: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 [...]
-
-* xref:system:ROOT:system-overview.adoc[System Overview]
-
-
-
-
diff --git a/antora/components/system/modules/ROOT/pages/system-overview.adoc 
b/antora/components/system/modules/ROOT/pages/system-overview.adoc
index 0272d06..d796182 100644
--- a/antora/components/system/modules/ROOT/pages/system-overview.adoc
+++ b/antora/components/system/modules/ROOT/pages/system-overview.adoc
@@ -2418,8 +2418,8 @@ _Dependencies_
 
 * org.apache.isis.testdomain.applayer.ApplicationLayerTestFactory
 * org.apache.isis.testdomain.applayer.ApplicationLayerTestFactory$PreAuditHook
-* org.apache.isis.testdomain.applayer.auditing.EntityAuditListenerForTesting
-* org.apache.isis.testdomain.applayer.publishing.PublisherServiceForTesting
+* 
org.apache.isis.testdomain.applayer.publishing.EntityChangesSubscriberForTesting
+* 
org.apache.isis.testdomain.applayer.publishing.EntityPropertyChangeSubscriberForTesting
 * org.apache.isis.testdomain.conf.Configuration_headless$HeadlessCommandSupport
 * org.apache.isis.testdomain.util.kv.KVStoreForTesting
 * org.apache.isis.testdomain.util.rest.RestEndpointService
@@ -3837,23 +3837,23 @@ package "package-ecosystem\n[Software System]" {
 * demoapp.dom._infra.resources.ResourceReaderService
 * demoapp.dom._infra.samples.NameSamples
 * demoapp.dom._infra.urlencoding.UrlEncodingServiceNaiveInMemory
-* demoapp.dom.annotDomain.Action.command.ActionCommandJdoEntities
-* demoapp.dom.annotDomain.Action.command.ActionCommandJdoSeedService
-* demoapp.dom.annotDomain.Action.publishing.ActionPublishingJdoEntities
-* demoapp.dom.annotDomain.Action.publishing.ActionPublishingJdoSeedService
-* 
demoapp.dom.annotDomain.DomainObject.publishing.annotated.disabled.DomainObjectPublishingDisabledJdoEntities
-* 
demoapp.dom.annotDomain.DomainObject.publishing.annotated.disabled.DomainObjectPublishingDisabledJdoSeedService
-* 
demoapp.dom.annotDomain.DomainObject.publishing.annotated.enabled.DomainObjectPublishingEnabledJdoEntities
-* 
demoapp.dom.annotDomain.DomainObject.publishing.annotated.enabled.DomainObjectPublishingEnabledJdoSeedService
-* 
demoapp.dom.annotDomain.DomainObject.publishing.metaAnnot.enabled.DomainObjectPublishingEnabledMetaAnnotatedJdoEntities
-* 
demoapp.dom.annotDomain.DomainObject.publishing.metaAnnot.enabled.DomainObjectPublishingEnabledMetaAnnotatedJdoSeedService
-* 
demoapp.dom.annotDomain.DomainObject.publishing.metaAnnotOverridden.enabled.DomainObjectPublishingEnabledMetaAnnotOverriddenJdoEntities
-* 
demoapp.dom.annotDomain.DomainObject.publishing.metaAnnotOverridden.enabled.DomainObjectPublishingEnabledMetaAnnotOverriddenJdoSeedService
-* demoapp.dom.annotDomain.Property.command.PropertyCommandJdoEntities
-* demoapp.dom.annotDomain.Property.command.PropertyCommandJdoSeedService
-* demoapp.dom.annotDomain.Property.publishing.PropertyPublishingJdoEntities
-* demoapp.dom.annotDomain.Property.publishing.PropertyPublishingJdoSeedService
-* 
demoapp.dom.annotDomain._changes.ChangingEntitiesListenerToCaptureChangesInMemory
+* 
demoapp.dom.annotDomain.Action.commandDispatch.ActionCommandDispatchJdoEntities
+* 
demoapp.dom.annotDomain.Action.commandDispatch.ActionCommandDispatchJdoSeedService
+* 
demoapp.dom.annotDomain.Action.executionDispatch.ActionExecutionDispatchJdoEntities
+* 
demoapp.dom.annotDomain.Action.executionDispatch.ActionExecutionDispatchJdoSeedService
+* 
demoapp.dom.annotDomain.DomainObject.auditing.annotated.disabled.DomainObjectAuditingDisabledJdoEntities
+* 
demoapp.dom.annotDomain.DomainObject.auditing.annotated.disabled.DomainObjectAuditingDisabledJdoSeedService
+* 
demoapp.dom.annotDomain.DomainObject.auditing.annotated.enabled.DomainObjectAuditingEnabledJdoEntities
+* 
demoapp.dom.annotDomain.DomainObject.auditing.annotated.enabled.DomainObjectAuditingEnabledJdoSeedService
+* 
demoapp.dom.annotDomain.DomainObject.auditing.metaAnnot.enabled.DomainObjectAuditingEnabledMetaAnnotatedJdoEntities
+* 
demoapp.dom.annotDomain.DomainObject.auditing.metaAnnot.enabled.DomainObjectAuditingEnabledMetaAnnotatedJdoSeedService
+* 
demoapp.dom.annotDomain.DomainObject.auditing.metaAnnotOverridden.enabled.DomainObjectAuditingEnabledMetaAnnotOverriddenJdoEntities
+* 
demoapp.dom.annotDomain.DomainObject.auditing.metaAnnotOverridden.enabled.DomainObjectAuditingEnabledMetaAnnotOverriddenJdoSeedService
+* 
demoapp.dom.annotDomain.Property.commandDispatch.PropertyCommandDispatchJdoEntities
+* 
demoapp.dom.annotDomain.Property.commandDispatch.PropertyCommandDispatchJdoSeedService
+* 
demoapp.dom.annotDomain.Property.executionDispatch.PropertyExecutionDispatchJdoEntities
+* 
demoapp.dom.annotDomain.Property.executionDispatch.PropertyExecutionDispatchJdoSeedService
+* 
demoapp.dom.annotDomain._changes.EntityChangesSubscriberToCaptureChangesInMemory
 * 
demoapp.dom.annotDomain._commands.ExposePersistedCommands$TableColumnOrderDefault
 * 
demoapp.dom.annotDomain._interactions.ExecutionListenerToCaptureInteractionsInMemory
 * demoapp.dom.annotLayout.PropertyLayout.navigable.FileTreeNodeService
diff --git 
a/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Action.java 
b/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Action.java
index 09f8b61..f731d4d 100644
--- 
a/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Action.java
+++ 
b/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Action.java
@@ -27,12 +27,12 @@ import java.lang.annotation.Target;
 
 import org.apache.isis.applib.events.domain.ActionDomainEvent;
 import org.apache.isis.applib.services.command.Command;
-import org.apache.isis.applib.services.command.spi.CommandListener;
 import 
org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandDto;
 import 
org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandsDto;
 import 
org.apache.isis.applib.services.commanddto.processor.CommandDtoProcessor;
 import org.apache.isis.applib.services.iactn.Interaction;
-import org.apache.isis.applib.services.iactn.spi.ExecutionListener;
+import org.apache.isis.applib.services.publishing.spi.CommandSubscriber;
+import org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber;
 
 /**
  * Domain semantics for domain object collection.
@@ -92,11 +92,11 @@ public @interface Action {
     // end::refguide[]
     /**
      * Whether action invocations, captured as {@link Command}s, 
-     * should be dispatched to {@link CommandListener}s.
+     * should be published to {@link CommandSubscriber}s.
      */
     // tag::refguide[]
-    Dispatching commandDispatch()                               // <.>
-            default Dispatching.NOT_SPECIFIED;
+    Publishing commandPublishing()                               // <.>
+            default Publishing.NOT_SPECIFIED;
 
     // end::refguide[]
     /**
@@ -141,11 +141,11 @@ public @interface Action {
     // end::refguide[]
     /**
      * Whether {@link Interaction.Execution}s (triggered by action 
invocations), should
-     * be dispatched to {@link ExecutionListener}s.
+     * be published to {@link ExecutionSubscriber}s.
      */
     // tag::refguide[]
-    Dispatching executionDispatch()                           // <.>
-            default Dispatching.NOT_SPECIFIED;
+    Publishing executionPublishing()                                // <.>
+            default Publishing.NOT_SPECIFIED;
     
     // end::refguide[]
     /**
diff --git 
a/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Auditing.java 
b/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Auditing.java
deleted file mode 100644
index 01fdf3c..0000000
--- 
a/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Auditing.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.applib.annotation;
-
-/**
- * The available policies for auditing changes to the properties of the object.
- */
-// tag::refguide[]
-public enum Auditing {
-
-    // end::refguide[]
-    /**
-     * The auditing of the object should be as per the default auditing policy 
configured in <tt>application.properties</tt>.
-     *
-     * <p>
-     *     If no auditing policy is configured, then the auditing is disabled.
-     * </p>
-     */
-    // tag::refguide[]
-    AS_CONFIGURED,
-
-    // end::refguide[]
-    /**
-     * Audit changes to this object.
-     */
-    // tag::refguide[]
-    ENABLED,
-
-    // end::refguide[]
-    /**
-     * Do not audit changes to this object (even if otherwise configured to 
enable auditing).
-     */
-    // tag::refguide[]
-    DISABLED,
-
-    // end::refguide[]
-    /**
-     * Ignore the value provided by this annotation (meaning that the 
framework will keep searching, in meta
-     * annotations or superclasses/interfaces).
-     */
-    // tag::refguide[]
-    NOT_SPECIFIED
-
-}
-// end::refguide[]
diff --git 
a/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Dispatching.java
 
b/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Dispatching.java
deleted file mode 100644
index e7374b1..0000000
--- 
a/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Dispatching.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.applib.annotation;
-
-/**
- * The available policies as to whether data should be dispatched to  
- * corresponding listeners. The framework supports several kinds of data 
- * that are available for dispatching:
- * <ul>
- * <li><b>EntityAudit</b> ... dispatched via EntityAuditDispatcher and 
subscribed to via EntityAuditListener (SPI)</li>
- * <li><b>ChangingEntities</b> ... dispatched via ChangingEntitiesDispatcher 
and subscribed to via ChangingEntitiesListener (SPI)</li>
- * <li><b>Execution</b> ... dispatched via ExecutionDispatcher and subscribed 
to via ExecutionListener (SPI)</li>
- * <li><b>Command</b> ... dispatched via CommandDispatcher and subscribed to 
via CommandListener (SPI)</li>
- * </ul>
- */
-// tag::refguide[]
-public enum Dispatching {
-
-    // end::refguide[]
-    /**
-     * Dispatching of data triggered by interaction with this object 
-     * should be handled as per the default dispatching policy 
-     * configured in <tt>application.properties</tt>.
-     * <p>
-     * If no dispatching policy is configured, then dispatching is disabled.
-     */
-    // tag::refguide[]
-    AS_CONFIGURED,
-
-    // end::refguide[]
-    /**
-     * Do dispatch data triggered by interaction with this object.
-     */
-    // tag::refguide[]
-    ENABLED,
-
-    // end::refguide[]
-    /**
-     * Do <b>not</b> dispatch data triggered by interaction with this object
-     * (even if otherwise configured to enable dispatching).
-     */
-    // tag::refguide[]
-    DISABLED,
-
-    // end::refguide[]
-    /**
-     * Ignore the value provided by this annotation (meaning that the 
framework will keep searching, in meta
-     * annotations or superclasses/interfaces).
-     */
-    // tag::refguide[]
-    NOT_SPECIFIED
-
-}
-// end::refguide[]
diff --git 
a/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/DomainObject.java
 
b/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/DomainObject.java
index f8a8814..fc882a5 100644
--- 
a/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/DomainObject.java
+++ 
b/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/DomainObject.java
@@ -63,15 +63,15 @@ public @interface DomainObject {
     // end::refguide-lifecycle-events[]
     // end::refguide-domain-events[]
     /**
-     * Whether entity changes should be dispatched to 
-     * {@link org.apache.isis.applib.services.audit.spi.EntityAuditListener}s
-     * and whether entity changes, captured as {@link 
org.apache.isis.applib.services.audit.spi.ChangingEntities}, 
-     * should be dispatched to {@link 
org.apache.isis.applib.services.audit.spi.ChangingEntitiesListener}s.
+     * Whether entity changes should be published to 
+     * {@link 
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber}s
+     * and whether entity changes, captured as {@link 
org.apache.isis.applib.services.publishing.spi.EntityChanges}, 
+     * should be dispatched to {@link 
org.apache.isis.applib.services.publishing.spi.EntityChangesSubscriber}s.
      * @apiNote does only apply to entity objects
      */
     // tag::refguide[]
-    Auditing auditing()                             // <.>
-            default Auditing.NOT_SPECIFIED;
+    Publishing entityChangePublishing()             // <.>
+            default Publishing.NOT_SPECIFIED;
 
     // end::refguide[]
     /**
diff --git 
a/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Property.java 
b/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Property.java
index 2c50dfb..3a29c4a 100644
--- 
a/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Property.java
+++ 
b/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Property.java
@@ -27,12 +27,12 @@ import java.lang.annotation.Target;
 
 import org.apache.isis.applib.events.domain.PropertyDomainEvent;
 import org.apache.isis.applib.services.command.Command;
-import org.apache.isis.applib.services.command.spi.CommandListener;
 import 
org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandDto;
 import 
org.apache.isis.applib.services.commanddto.conmap.ContentMappingServiceForCommandsDto;
 import 
org.apache.isis.applib.services.commanddto.processor.CommandDtoProcessor;
 import org.apache.isis.applib.services.iactn.Interaction;
-import org.apache.isis.applib.services.iactn.spi.ExecutionListener;
+import org.apache.isis.applib.services.publishing.spi.CommandSubscriber;
+import org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber;
 import org.apache.isis.applib.spec.Specification;
 import org.apache.isis.applib.value.Blob;
 import org.apache.isis.applib.value.Clob;
@@ -55,11 +55,11 @@ public @interface Property {
     // end::refguide[]
     /**
      * Whether property edits, captured as {@link Command}s, 
-     * should be dispatched to {@link CommandListener}s.
+     * should be published to {@link CommandSubscriber}s.
      */
     // tag::refguide[]
-    Dispatching commandDispatch()                               // <.>
-            default Dispatching.NOT_SPECIFIED;
+    Publishing commandPublishing()                               // <.>
+            default Publishing.NOT_SPECIFIED;
 
     // end::refguide[]
     /**
@@ -123,11 +123,11 @@ public @interface Property {
     /**
      * Whether {@link Interaction.Execution}s 
      * (triggered property edits), should be dispatched to 
-     * {@link ExecutionListener}s.
+     * {@link ExecutionSubscriber}s.
      */
     // tag::refguide[]
-    Dispatching executionDispatch()                             // <.>
-            default Dispatching.NOT_SPECIFIED;
+    Publishing executionPublishing()                             // <.>
+            default Publishing.NOT_SPECIFIED;
     
     // end::refguide[]
     /**
diff --git 
a/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Publishing.java
 
b/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Publishing.java
new file mode 100644
index 0000000..781ed01
--- /dev/null
+++ 
b/api/applib/src/main/adoc/modules/applib-ant/examples/annotation/Publishing.java
@@ -0,0 +1,79 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.annotation;
+
+import org.apache.isis.applib.services.command.Command;
+import org.apache.isis.applib.services.iactn.Interaction;
+import org.apache.isis.applib.services.publishing.spi.CommandSubscriber;
+import org.apache.isis.applib.services.publishing.spi.EntityChanges;
+import org.apache.isis.applib.services.publishing.spi.EntityChangesSubscriber;
+import org.apache.isis.applib.services.publishing.spi.EntityPropertyChange;
+import 
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber;
+import org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber;
+
+/**
+ * The available policies as to whether data should be published to  
+ * corresponding subscribers. The framework supports several kinds of data 
+ * that are available for publishing:
+ * <ul>
+ * <li><b>{@link EntityChanges} ... subscribed to via {@link 
EntityChangesSubscriber}</li>
+ * <li><b>{@link EntityPropertyChange} ... subscribed to via {@link 
EntityPropertyChangeSubscriber}</li>
+ * <li><b>{@link Command} ... subscribed to via {@link CommandSubscriber}</li>
+ * <li><b>{@link Interaction.Execution} ... subscribed to via {@link 
ExecutionSubscriber}</li>
+ * </ul>
+ */
+// tag::refguide[]
+public enum Publishing {
+
+    // end::refguide[]
+    /**
+     * Publishing of data triggered by interaction with this object 
+     * should be handled as per the default publishing policy 
+     * configured in <tt>application.properties</tt>.
+     * <p>
+     * If no publishing policy is configured, then publishing is disabled.
+     */
+    // tag::refguide[]
+    AS_CONFIGURED,
+
+    // end::refguide[]
+    /**
+     * Do publish data triggered by interaction with this object.
+     */
+    // tag::refguide[]
+    ENABLED,
+
+    // end::refguide[]
+    /**
+     * Do <b>not</b> publish data triggered by interaction with this object
+     * (even if otherwise configured to enable publishing).
+     */
+    // tag::refguide[]
+    DISABLED,
+
+    // end::refguide[]
+    /**
+     * Ignore the value provided by this annotation (meaning that the 
framework will keep searching, in meta
+     * annotations or super-classes/interfaces).
+     */
+    // tag::refguide[]
+    NOT_SPECIFIED
+
+}
+// end::refguide[]
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/DomainChangeRecord.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/DomainChangeRecord.java
index 7cfc48d..af23836 100644
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/DomainChangeRecord.java
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/DomainChangeRecord.java
@@ -37,6 +37,8 @@ import 
org.apache.isis.applib.services.bookmark.BookmarkService;
 import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.applib.services.metamodel.BeanSort;
 import org.apache.isis.applib.services.metamodel.MetaModelService;
+import org.apache.isis.commons.having.HasUniqueId;
+import org.apache.isis.commons.having.HasUsername;
 
 import lombok.Getter;
 import lombok.Setter;
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/RepresentsInteractionMemberExecution.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/RepresentsInteractionMemberExecution.java
index f9d27bc..4834752 100644
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/RepresentsInteractionMemberExecution.java
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/RepresentsInteractionMemberExecution.java
@@ -19,6 +19,7 @@
 package org.apache.isis.applib.services;
 
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
+import org.apache.isis.commons.having.HasUniqueId;
 import org.apache.isis.schema.ixn.v2.InteractionDto;
 
 /**
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/AuditEntryPropertyIdType.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/AuditEntryPropertyIdType.java
deleted file mode 100644
index 5a7af43..0000000
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/AuditEntryPropertyIdType.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.applib.services.audit;
-
-public class AuditEntryPropertyIdType {
-
-    private AuditEntryPropertyIdType() {}
-
-    public static class Meta {
-
-        public static final int MAX_LEN = 50;
-
-        private Meta() {}
-
-    }
-
-}
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/AuditEntryPropertyValueType.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/AuditEntryPropertyValueType.java
deleted file mode 100644
index 613b0c2..0000000
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/AuditEntryPropertyValueType.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.applib.services.audit;
-
-public class AuditEntryPropertyValueType {
-
-    private AuditEntryPropertyValueType() {}
-
-    public static class Meta {
-
-        public static final int MAX_LEN = 255;
-
-        private Meta() {}
-
-    }
-
-}
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/package-info.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/package-info.java
deleted file mode 100644
index b4ab557..0000000
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/package-info.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.audit.spi.EntityAuditListener} 
auditing service provides a simple mechanism to
- * capture changes to data. It is called for each property that has changed on 
any domain object, as a set of pre- and post-values.
- *
- *
- */
-package org.apache.isis.applib.services.audit;
\ No newline at end of file
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/spi/ChangingEntitiesListener.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/spi/ChangingEntitiesListener.java
deleted file mode 100644
index 4603a2b..0000000
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/spi/ChangingEntitiesListener.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.apache.isis.applib.services.audit.spi;
-
-public interface ChangingEntitiesListener {
-
-    /**
-     * Publish all changed entities at end of the transaction (during 
pre-commit phase).
-     */
-    void onEntitiesChanging(ChangingEntities changingEntities);      // <.>
-}
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/spi/EntityAuditListener.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/spi/EntityAuditListener.java
deleted file mode 100644
index bae640c..0000000
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/spi/EntityAuditListener.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.isis.applib.services.audit.spi;
-
-import java.sql.Timestamp;
-import java.util.UUID;
-
-import org.apache.isis.applib.services.audit.EntityAuditLogging;
-import org.apache.isis.applib.services.bookmark.Bookmark;
-
-/**
- * Will be called whenever an auditable entity has changed its state.
- *
- * <p>
- * Typically entities are marked as auditable using the {@link 
org.apache.isis.applib.annotation.Audited}
- * annotation.
- *
- * <p> 
- * see also {@link EntityAuditLogging}.
- *
- * <p>
- * To use either service, must include on the classpath and also register the 
service (eg in <tt>application.properties</tt>).
- */
-// tag::refguide[]
-public interface EntityAuditListener {
-
-    boolean isEnabled();                                            // <.>
-
-    void audit(
-            final UUID interactionId, final int sequence,           // <.>
-            final String targetClassName,
-            final Bookmark target,                                  // <.>
-            final String memberIdentifier,
-            final String propertyName,                              // <.>
-            final String preValue, final String postValue,          // <.>
-            final String user, final Timestamp timestamp);          // <.>
-
-}
-// end::refguide[]
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/Command.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/Command.java
index f0e261b..2e53e26 100644
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/Command.java
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/Command.java
@@ -23,17 +23,18 @@ import java.util.UUID;
 
 import org.apache.isis.applib.events.domain.ActionDomainEvent;
 import org.apache.isis.applib.jaxb.JavaSqlXMLGregorianCalendarMarshalling;
-import org.apache.isis.applib.services.HasUniqueId;
-import org.apache.isis.applib.services.HasUsername;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.services.commanddto.HasCommandDto;
 import org.apache.isis.applib.services.iactn.Interaction;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.applib.services.wrapper.control.AsyncControl;
+import org.apache.isis.commons.having.HasUniqueId;
+import org.apache.isis.commons.having.HasUsername;
 import org.apache.isis.schema.cmd.v2.CommandDto;
 
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import lombok.ToString;
 import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
@@ -70,6 +71,7 @@ import lombok.extern.log4j.Log4j2;
  * </p>
  */
 @RequiredArgsConstructor
+@ToString
 @Log4j2
 // tag::refguide[]
 public class Command implements HasUniqueId, HasUsername, HasCommandDto {
@@ -136,6 +138,7 @@ public class Command implements HasUniqueId, HasUsername, 
HasCommandDto {
      *     from the provided {@link CommandDto}.
      * </p>
      */
+    @ToString.Exclude
     // tag::refguide[]
     @Getter
     private CommandDto commandDto;              // <.>
@@ -177,6 +180,7 @@ public class Command implements HasUniqueId, HasUsername, 
HasCommandDto {
      * @see WrapperFactory#asyncWrapMixin(Class, Object, AsyncControl)
      *
      */
+    @ToString.Exclude
     // tag::refguide[]
     @Getter
     private Command parent;                     // <.>
@@ -252,7 +256,7 @@ public class Command implements HasUniqueId, HasUsername, 
HasCommandDto {
      * <p>
      *     This can be used as a hint to decide whether to persist the command
      *     to a datastore, for example for auditing (though
-     *     {@link org.apache.isis.applib.services.iactn.spi.ExecutionListener} 
is
+     *     {@link 
org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber} is
      *     an alternative for that use case) or so that it can be retrieved
      *     and replayed on another system, eg for regression testing.
      * </p>
@@ -266,7 +270,7 @@ public class Command implements HasUniqueId, HasUsername, 
HasCommandDto {
 
     /**
      * Whether this command has been enabled for dispatching, 
-     * that is {@link CommandListener}s will be notified when this Command 
completes.
+     * that is {@link CommandSubscriber}s will be notified when this Command 
completes.
      */
     // tag::refguide[]
     @Getter
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/Interaction.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/Interaction.java
index 7a6b15e..5e0f9c7 100644
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/Interaction.java
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/Interaction.java
@@ -31,13 +31,13 @@ import 
org.apache.isis.applib.events.domain.AbstractDomainEvent;
 import org.apache.isis.applib.events.domain.ActionDomainEvent;
 import org.apache.isis.applib.events.domain.PropertyDomainEvent;
 import org.apache.isis.applib.jaxb.JavaSqlXMLGregorianCalendarMarshalling;
-import org.apache.isis.applib.services.HasUniqueId;
 import org.apache.isis.applib.services.clock.ClockService;
 import org.apache.isis.applib.services.command.Command;
 import org.apache.isis.applib.services.eventbus.EventBusService;
 import org.apache.isis.applib.services.metrics.MetricsService;
 import org.apache.isis.applib.services.wrapper.WrapperFactory;
 import org.apache.isis.applib.util.schema.MemberExecutionDtoUtils;
+import org.apache.isis.commons.having.HasUniqueId;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.schema.common.v2.DifferenceDto;
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/spi/package-info.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/spi/package-info.java
deleted file mode 100644
index e05b8b7..0000000
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/spi/package-info.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-/**
- * The {@link org.apache.isis.applib.services.iactn.spi.ExecutionListener} API 
is intended for coarse-grained
- * publish/subscribe for system-to-system interactions, from Apache Isis to 
some other system. Events that can be
- * published are action invocations/property edits, and changed objects. A 
typical use case is to publish onto a
- * pub/sub bus such as ActiveMQ with Camel to keep other systems up to date.
- *
- *
- */
-package org.apache.isis.applib.services.iactn.spi;
\ No newline at end of file
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/spi/ExecutionLogging.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/CommandLogger.java
similarity index 65%
copy from 
api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/spi/ExecutionLogging.java
copy to 
api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/CommandLogger.java
index 24635cf..42fa526 100644
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/spi/ExecutionLogging.java
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/CommandLogger.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.services.iactn.spi;
+package org.apache.isis.applib.services.publishing.log;
 
 import javax.inject.Named;
 
@@ -26,33 +26,32 @@ import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.applib.services.iactn.Interaction;
-import org.apache.isis.applib.util.schema.InteractionDtoUtils;
-import org.apache.isis.schema.ixn.v2.InteractionDto;
+import org.apache.isis.applib.services.command.Command;
+import org.apache.isis.applib.services.publishing.spi.CommandSubscriber;
 
 import lombok.extern.log4j.Log4j2;
 
 @Service
-@Named("isisApplib.ExecutionLogging")
+@Named("isisApplib.CommandLogger")
 @Order(OrderPrecedence.LATE)
 @Primary
 @Qualifier("Logging")
 @Log4j2
-public class ExecutionLogging implements ExecutionListener {
+public class CommandLogger implements CommandSubscriber {
 
     @Override
-    public void onExecution(final Interaction.Execution<?, ?> execution) {
-
-        if(!log.isDebugEnabled()) {
-            return;
-        }
-
-        final InteractionDto interactionDto =
-                InteractionDtoUtils.newInteractionDto(execution, 
InteractionDtoUtils.Strategy.DEEP);
-
-        log.debug(InteractionDtoUtils.toXml(interactionDto));
+    public boolean isEnabled() {
+        return log.isDebugEnabled();
+    }
 
+    @Override
+    public void onCompleted(Command command) {
+        
+        log.debug("completed: {}, systemStateChanged {}",
+                command.getLogicalMemberIdentifier(),
+                command.isSystemStateChanged());
+        
+        //log.debug("completed: {}", command);
     }
 
 }
-
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/ChangingEntitiesLogging.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/EntityChangesLogger.java
similarity index 75%
rename from 
api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/ChangingEntitiesLogging.java
rename to 
api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/EntityChangesLogger.java
index 7b967d4..54977f2 100644
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/ChangingEntitiesLogging.java
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/EntityChangesLogger.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.services.audit;
+package org.apache.isis.applib.services.publishing.log;
 
 import javax.inject.Named;
 
@@ -26,27 +26,28 @@ import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.applib.services.audit.spi.ChangingEntities;
-import org.apache.isis.applib.services.audit.spi.ChangingEntitiesListener;
+import org.apache.isis.applib.services.publishing.spi.EntityChanges;
+import org.apache.isis.applib.services.publishing.spi.EntityChangesSubscriber;
 import org.apache.isis.applib.util.schema.ChangesDtoUtils;
 import org.apache.isis.schema.chg.v2.ChangesDto;
 
 import lombok.extern.log4j.Log4j2;
 
 @Service
-@Named("isisApplib.ChangingEntitiesLogging")
+@Named("isisApplib.EntityChangesLogger")
 @Order(OrderPrecedence.LATE)
 @Primary
 @Qualifier("Logging")
 @Log4j2
-public class ChangingEntitiesLogging implements ChangingEntitiesListener {
+public class EntityChangesLogger implements EntityChangesSubscriber {
 
     @Override
-    public void onEntitiesChanging(final ChangingEntities changingEntities) {
-
-        if(!log.isDebugEnabled()) {
-            return;
-        }
+    public boolean isEnabled() {
+        return log.isDebugEnabled();
+    }
+    
+    @Override
+    public void onChanging(final EntityChanges changingEntities) {
 
         final ChangesDto changesDto = changingEntities.getDto();
 
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/EntityAuditLogging.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/EntityPropertyChangeLogger.java
similarity index 56%
rename from 
api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/EntityAuditLogging.java
rename to 
api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/EntityPropertyChangeLogger.java
index 7eb6c33..fcf05ae 100644
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/EntityAuditLogging.java
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/EntityPropertyChangeLogger.java
@@ -16,12 +16,8 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.services.audit;
+package org.apache.isis.applib.services.publishing.log;
 
-import java.sql.Timestamp;
-import java.util.UUID;
-
-import javax.annotation.PostConstruct;
 import javax.inject.Named;
 
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -30,22 +26,18 @@ import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.OrderPrecedence;
-import org.apache.isis.applib.services.audit.spi.EntityAuditListener;
-import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.publishing.spi.EntityPropertyChange;
+import 
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber;
 
 import lombok.extern.log4j.Log4j2;
 
 @Service
-@Named("isisApplib.EntityAuditLogging")
+@Named("isisApplib.EntityPropertyChangeLogger")
 @Order(OrderPrecedence.LATE)
 @Primary
 @Qualifier("logging")
 @Log4j2
-public class EntityAuditLogging implements EntityAuditListener {
-
-    @PostConstruct
-    public void init() {
-    }
+public class EntityPropertyChangeLogger implements 
EntityPropertyChangeSubscriber {
 
     @Override
     public boolean isEnabled() {
@@ -53,19 +45,8 @@ public class EntityAuditLogging implements 
EntityAuditListener {
     }
 
     @Override
-    public void audit(
-            final UUID interactionId, int sequence,
-            final String targetClassName, final Bookmark target,
-            final String memberId, final String propertyName,
-            final String preValue, final String postValue,
-            final String user, final Timestamp timestamp) {
-
-        if(log.isDebugEnabled()) {
-            String auditMessage =
-                    interactionId + "," + sequence + ": " +
-                            target.toString() + " by " + user + ", " + 
propertyName + ": " + preValue + " -> " + postValue;
-            log.debug(auditMessage);
-        }
+    public void onChanging(final EntityPropertyChange entityPropertyChange) {
+        log.debug(entityPropertyChange.toString());
     }
 
 }
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/spi/ExecutionLogging.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/ExecutionLogger.java
similarity index 84%
rename from 
api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/spi/ExecutionLogging.java
rename to 
api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/ExecutionLogger.java
index 24635cf..da30481 100644
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/spi/ExecutionLogging.java
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/log/ExecutionLogger.java
@@ -16,7 +16,7 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.services.iactn.spi;
+package org.apache.isis.applib.services.publishing.log;
 
 import javax.inject.Named;
 
@@ -27,26 +27,28 @@ import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.applib.services.iactn.Interaction;
+import org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber;
 import org.apache.isis.applib.util.schema.InteractionDtoUtils;
 import org.apache.isis.schema.ixn.v2.InteractionDto;
 
 import lombok.extern.log4j.Log4j2;
 
 @Service
-@Named("isisApplib.ExecutionLogging")
+@Named("isisApplib.ExecutionLogger")
 @Order(OrderPrecedence.LATE)
 @Primary
 @Qualifier("Logging")
 @Log4j2
-public class ExecutionLogging implements ExecutionListener {
+public class ExecutionLogger implements ExecutionSubscriber {
 
     @Override
+    public boolean isEnabled() {
+        return log.isDebugEnabled();
+    }
+    
+    @Override
     public void onExecution(final Interaction.Execution<?, ?> execution) {
 
-        if(!log.isDebugEnabled()) {
-            return;
-        }
-
         final InteractionDto interactionDto =
                 InteractionDtoUtils.newInteractionDto(execution, 
InteractionDtoUtils.Strategy.DEEP);
 
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/package-info.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/package-info.java
new file mode 100644
index 0000000..db645b8
--- /dev/null
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/package-info.java
@@ -0,0 +1,34 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+/**
+ * The {@link 
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber} 
+ * service provides a simple mechanism to capture changes to data. 
+ * It is called for each property that has changed on any entity object 
+ * (when enabled for publishing), as a set of pre- and post-values.
+ * 
+ * The {@link 
org.apache.isis.applib.services.publishing.spi.ExecutionSubscriber} API is 
intended 
+ * for coarse-grained publish/subscribe for system-to-system interactions, 
from Apache Isis 
+ * to some other system. Events that can be published are action 
invocations/property edits, 
+ * and changed objects. A typical use case is to publish onto a pub/sub bus 
such as 
+ * ActiveMQ with Camel to keep other systems up to date.
+ * 
+ * TODO v2 publishing/subscribing now has even more participants
+ */
+package org.apache.isis.applib.services.publishing;
\ No newline at end of file
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/spi/CommandListener.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/CommandSubscriber.java
similarity index 59%
rename from 
api/applib/src/main/adoc/modules/applib-svc/examples/services/command/spi/CommandListener.java
rename to 
api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/CommandSubscriber.java
index d700ce4..64b4d06 100644
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/command/spi/CommandListener.java
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/CommandSubscriber.java
@@ -16,22 +16,19 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.services.command.spi;
+package org.apache.isis.applib.services.publishing.spi;
 
-import javax.inject.Named;
-
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.core.annotation.Order;
-import org.springframework.stereotype.Service;
-
-import org.apache.isis.applib.annotation.OrderPrecedence;
 import org.apache.isis.applib.services.command.Command;
+import org.apache.isis.commons.having.HasEnabling;
 
 /**
- * SPI
+ * Part of the <i>Publishing SPI</i>. A component to receive {@link Command}s 
+ * (with publishing enabled) that just completed.
+ *  
+ * @since 2.0
  */
 // tag::refguide[]
-public interface CommandListener {
+public interface CommandSubscriber extends HasEnabling {
 
     /**
      * Notifies that the command has completed.
@@ -42,22 +39,7 @@ public interface CommandListener {
      * </p>
      */
     // tag::refguide[]
-    void onComplete(final Command command);           // <.>
-
-    /**
-     * At least one implementation is required to satisfy injection point
-     * internal to the framework.
-     */
-    @Service
-    @Named("isisApplib.CommandServiceListenerNull")
-    @Order(OrderPrecedence.LATE)
-    @Qualifier("Null")
-    public static class Null implements CommandListener {
-
-        @Override
-        public void onComplete(Command command) {
+    void onCompleted(Command command);           // <.>
 
-        }
-    }
 }
 // end::refguide[]
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/spi/ChangingEntities.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityChanges.java
similarity index 87%
rename from 
api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/spi/ChangingEntities.java
rename to 
api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityChanges.java
index 4b83342..a2e343d 100644
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/audit/spi/ChangingEntities.java
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityChanges.java
@@ -16,16 +16,16 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.services.audit.spi;
+package org.apache.isis.applib.services.publishing.spi;
 
 import java.sql.Timestamp;
 
-import org.apache.isis.applib.services.HasUniqueId;
-import org.apache.isis.applib.services.HasUsername;
+import org.apache.isis.commons.having.HasUniqueId;
+import org.apache.isis.commons.having.HasUsername;
 import org.apache.isis.schema.chg.v2.ChangesDto;
 
 // tag::refguide[]
-public interface ChangingEntities
+public interface EntityChanges
         extends HasUniqueId,            // <.>
                 HasUsername {           // <.>
 
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/HasUsername.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityChangesSubscriber.java
similarity index 59%
rename from 
api/applib/src/main/adoc/modules/applib-svc/examples/services/HasUsername.java
rename to 
api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityChangesSubscriber.java
index 4860b92..2c275a6 100644
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/HasUsername.java
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityChangesSubscriber.java
@@ -16,24 +16,21 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.services;
+package org.apache.isis.applib.services.publishing.spi;
+
+import org.apache.isis.commons.having.HasEnabling;
 
 /**
- * Mix-in interface for objects (usually created by service implementations) 
that are be persistable,
- * and so can be associated with a username, usually of the user that has 
performed some operation.
- *
- * <p>
- * Other services can then use this username as a means to contributed 
actions/collections to render such additional
- * information relating to the activities of the user.
+ * Part of the <i>Publishing SPI</i>. A component to receive the entire set of 
entities 
+ * (with publishing enabled) that are about to change, serializable as 
ChangesDto.
+ *  
+ * @since 2.0
  */
-// tag::refguide[]
-public interface HasUsername {
+public interface EntityChangesSubscriber extends HasEnabling {
 
     /**
-     * The user that created this object.
-     * @return
+     * Receives all changing entities (with publishing enabled) at then end of 
the a 
+     * transaction during the pre-commit phase.
      */
-    String getUsername();
-
+    void onChanging(EntityChanges entityChanges);      // <.>
 }
-// end::refguide[]
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityPropertyChange.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityPropertyChange.java
new file mode 100644
index 0000000..490b9da
--- /dev/null
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityPropertyChange.java
@@ -0,0 +1,59 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.applib.services.publishing.spi;
+
+import java.sql.Timestamp;
+import java.util.UUID;
+
+import org.apache.isis.applib.services.bookmark.Bookmark;
+
+import lombok.Value;
+
+/**
+ * Immutable data record for {@link EntityPropertyChangeSubscriber}s. 
+ * 
+ * @since 2.0
+ */
+@Value(staticConstructor = "of")
+public class EntityPropertyChange {
+
+    private final UUID interactionId; 
+    private final int sequence;
+    private final String targetClassName;
+    private final Bookmark target;                           
+    private final String memberIdentifier;
+    private final String propertyName;                             
+    private final String preValue; 
+    private final String postValue;          
+    private final String user; 
+    private final Timestamp timestamp;    
+    
+    @Override
+    public String toString() {
+        return String.format("%s,%d: %s by %s, %s: %s -> %s",
+        getInteractionId(), 
+        getSequence(), 
+        getTarget().toString(), 
+        getUser(), 
+        getPropertyName(), 
+        getPreValue(), 
+        getPostValue());
+    }
+    
+}
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/HasUniqueId.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityPropertyChangeSubscriber.java
similarity index 61%
rename from 
api/applib/src/main/adoc/modules/applib-svc/examples/services/HasUniqueId.java
rename to 
api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityPropertyChangeSubscriber.java
index 57245db..340e077 100644
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/HasUniqueId.java
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/EntityPropertyChangeSubscriber.java
@@ -16,25 +16,24 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.services;
-
-import java.util.UUID;
+package org.apache.isis.applib.services.publishing.spi;
 
+import org.apache.isis.commons.having.HasEnabling;
 
 /**
- * Mix-in interface for objects (usually created by service implementations) 
that are be persistable,
- * and so can be associated together using a unique identifier.
- *
+ * Part of the <i>Publishing SPI</i>. A component to receive pre-post property 
values 
+ * for each changed entity (with publishing enabled).
+ *  
+ * @since 2.0
  */
 // tag::refguide[]
-public interface HasUniqueId {
+public interface EntityPropertyChangeSubscriber extends HasEnabling {
 
-    // end::refguide[]
     /**
-     * The unique identifier (a GUID) of the request/interaction/transaction.
+     * Receives all pre-post property values for entities (with publishing 
enabled) 
+     * at then end of the transaction during the pre-commit phase.
      */
-    // tag::refguide[]
-    UUID getUniqueId();
+    void onChanging(EntityPropertyChange entityPropertyChange);     // <.>
 
 }
 // end::refguide[]
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/spi/ExecutionListener.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/ExecutionSubscriber.java
similarity index 91%
rename from 
api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/spi/ExecutionListener.java
rename to 
api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/ExecutionSubscriber.java
index 2d10b6b..b224b1d 100644
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/iactn/spi/ExecutionListener.java
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/publishing/spi/ExecutionSubscriber.java
@@ -16,10 +16,11 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.applib.services.iactn.spi;
+package org.apache.isis.applib.services.publishing.spi;
 
 import org.apache.isis.applib.services.iactn.Interaction;
 import org.apache.isis.applib.util.schema.InteractionDtoUtils;
+import org.apache.isis.commons.having.HasEnabling;
 
 /**
  * SPI that allows individual interactions (action invocations or property 
edits) to be
@@ -27,7 +28,7 @@ import org.apache.isis.applib.util.schema.InteractionDtoUtils;
  * Note that re-publishing is not part of this SPI.
  */
 // tag::refguide[]
-public interface ExecutionListener {
+public interface ExecutionSubscriber extends HasEnabling {
 
     // end::refguide[]
     /**
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/session/SessionLoggingService.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/session/SessionLoggingService.java
index 296ed1e..9ae9797 100644
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/session/SessionLoggingService.java
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/session/SessionLoggingService.java
@@ -20,10 +20,9 @@ package org.apache.isis.applib.services.session;
 
 import java.util.Date;
 
-import org.apache.isis.applib.annotation.Programmatic;
-
 /**
- * Similar to the {@link 
org.apache.isis.applib.services.audit.spi.EntityAuditListener}, this defines an 
API to track
+ * Similar to the {@link 
org.apache.isis.applib.services.publishing.spi.EntityPropertyChangeSubscriber}, 
+ * this defines an API to track
  * the status of the current sessions (&quot;users logged on&quot;) on the 
system.
  */
 // tag::refguide[]
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/xactn/TransactionId.java
 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/xactn/TransactionId.java
index 08f15fd..93a52ba 100644
--- 
a/api/applib/src/main/adoc/modules/applib-svc/examples/services/xactn/TransactionId.java
+++ 
b/api/applib/src/main/adoc/modules/applib-svc/examples/services/xactn/TransactionId.java
@@ -20,7 +20,7 @@ package org.apache.isis.applib.services.xactn;
 
 import java.util.UUID;
 
-import org.apache.isis.applib.services.HasUniqueId;
+import org.apache.isis.commons.having.HasUniqueId;
 
 import lombok.Data;
 
diff --git 
a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/CommandDispatcher.adoc
 
b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/CommandPublisher.adoc
similarity index 50%
rename from 
core/runtimeservices/src/main/adoc/modules/runtime-services/pages/CommandDispatcher.adoc
rename to 
core/runtimeservices/src/main/adoc/modules/runtime-services/pages/CommandPublisher.adoc
index 6a00e26..2185f0d 100644
--- 
a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/CommandDispatcher.adoc
+++ 
b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/CommandPublisher.adoc
@@ -3,13 +3,14 @@
 :Notice: Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with this work 
for additional information regarding copyright ownership. The ASF licenses this 
file to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance with the License. You may obtain a copy of 
the License at. http://www.apache.org/licenses/LICENSE-2.0 . Unless required by 
applicable law or ag [...]
 :page-partial:
 
+WARNING: TODO: this content has not yet been reviewed/updated for v2.0
 
-The `CommandServiceInternal` service is an internal service whose 
responsibility is simply to notify all known 
xref:refguide:applib-svc:CommandServiceListener.adoc[`CommandServiceListener`] 
when the `Command` has completed.
+The `CommandPublisher` service is an internal service whose responsibility is 
simply to notify all known 
xref:refguide:applib-svc:CommandSubscriber.adoc[`CommandSubscriber`] when the 
`Command` has completed.
 
 == Related Classes
 
-In total there are 4 sorts of data the framework has dispatchers for ...
-. *EntityAudit*: dispatched via `EntityAuditDispatcher` and subscribed to via 
`EntityAuditListener` (SPI)
-. *ChangingEntities*: dispatched via `ChangingEntitiesDispatcher` and 
subscribed to via `ChangingEntitiesListener` (SPI)
-. *Execution*: dispatched via `ExecutionDispatcher` and subscribed to via 
`ExecutionListener` (SPI)
-. *Command*: dispatched via `CommandDispatcher` and subscribed to via 
`CommandListener` (SPI)
\ No newline at end of file
+In total there are 4 sorts of data the framework has publishers for ...
+. *EntityPropertyChanges*: dispatched via `EntityPropertyChangePublisher` and 
subscribed to via `EntityPropertyChangeSubscriber` (SPI)
+. *EntityChanges*: dispatched via `EntityChangesPublisher` and subscribed to 
via `EntityChangesSubscriber` (SPI)
+. *Execution*: dispatched via `ExecutionPublisher` and subscribed to via 
`ExecutionSubscriber` (SPI)
+. *Command*: dispatched via `CommandPublisher` and subscribed to via 
`CommandSubscriber` (SPI)
\ No newline at end of file
diff --git 
a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ChangedObjectsService.adoc
 
b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityChangeTracker.adoc
similarity index 89%
rename from 
core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ChangedObjectsService.adoc
rename to 
core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityChangeTracker.adoc
index c105d43..840e227 100644
--- 
a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ChangedObjectsService.adoc
+++ 
b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityChangeTracker.adoc
@@ -1,10 +1,10 @@
-= `ChangedObjectsServiceInternal`
+= `EntityChangeTracker`
 
 :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 [...]
 
 WARNING: TODO: this content has not yet been reviewed/updated for v2.0
 
-The `ChangedObjectsServiceInternal` class is an (internal) request-scoped 
domain service that is responsible for collecting the details of all changes to 
domain objects within an interaction.
+The `EntityChangeTracker` class is an (internal) request-scoped domain service 
that is responsible for collecting the details of all changes to domain objects 
within an interaction.
 This is then used by various other  (internal) domain services, notably 
xref:core:runtime-services:AuditerDispatchService.adoc[`AuditerDispatchService`]
 and 
xref:core:runtime-services:PublisherDispatchService.adoc[`PublisherDispatchService`].
 
 
@@ -51,7 +51,7 @@ The service implementation is 
`o.a.i.c.r.s.changes.ChangedObjectsServiceInternal
 
 == Registering the Service
 
-Apache Isis' default implementation of `ChangedObjectsServiceInternal` class 
is automatically registered (it is annotated with `@DomainService`) so no 
further configuration is required.
+Apache Isis' default implementation of `EntityChangeTracker` class is 
automatically registered (it is annotated with `@DomainService`) so no further 
configuration is required.
 
 
 
diff --git 
a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ChangingEntitiesDispatcher.adoc
 
b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityChangesPublisher.adoc
similarity index 62%
rename from 
core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ChangingEntitiesDispatcher.adoc
rename to 
core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityChangesPublisher.adoc
index 6976a30..590df18 100644
--- 
a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ChangingEntitiesDispatcher.adoc
+++ 
b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityChangesPublisher.adoc
@@ -1,12 +1,12 @@
-= `ChangingEntitiesDispatcher`
+= `EntityChangesPublisher`
 
 :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 [...]
 
 WARNING: TODO: this content has not yet been reviewed/updated for v2.0
 
-The (internal) `ChangingEntitiesDispatcher` service acts as an internal facade 
to any configured 
xref:refguide:applib-svc:ChangingEntitiesListener.adoc[`ChangingEntitiesListener`]
 domain service(s).
+The (internal) `EntityChangesPublisher` service acts as an internal facade to 
any configured 
xref:refguide:applib-svc:EntityChangesSubscriber.adoc[`EntityChangesSubscriber`]
 domain service(s).
 
-For changing entities, it provides an API for the framework to call at the end 
of the interaction; it obtains details of the changed entities (from the 
xref:core:runtime-services:ChangedObjectsService.adoc[`ChangedObjectsService`]) 
and filters them to just those objects that are to be published; these are then 
passed through to any configured `ChangingEntitiesListener` implementations.
+For changing entities, it provides an API for the framework to call at the end 
of the interaction; it obtains details of the changed entities (from the 
xref:core:runtime-services:ChangedObjectsService.adoc[`ChangedObjectsService`]) 
and filters them to just those objects that are to be published; these are then 
passed through to any configured `EntityChangesSubscriber` implementations.
 
 
 == SPI and Implementation
@@ -15,9 +15,9 @@ The SPI of the service is:
 
 [source,java]
 ----
-public class ChangingEntitiesDispatcher {
+public class EntityChangesPublisher {
 
-       void dispatchChangingEntities(...);   // <1>
+       void publishChanging(...);   // <1>
        
 }
 ----
@@ -25,9 +25,9 @@ public class ChangingEntitiesDispatcher {
 
 == Related Classes
 
-In total there are 4 sorts of data the framework has dispatchers for ...
-. *EntityAudit*: dispatched via `EntityAuditDispatcher` and subscribed to via 
`EntityAuditListener` (SPI)
-. *ChangingEntities*: dispatched via `ChangingEntitiesDispatcher` and 
subscribed to via `ChangingEntitiesListener` (SPI)
-. *Execution*: dispatched via `ExecutionDispatcher` and subscribed to via 
`ExecutionListener` (SPI)
-. *Command*: dispatched via `CommandDispatcher` and subscribed to via 
`CommandListener` (SPI)
+In total there are 4 sorts of data the framework has publishers for ...
+. *EntityPropertyChanges*: dispatched via `EntityPropertyChangePublisher` and 
subscribed to via `EntityPropertyChangeSubscriber` (SPI)
+. *EntityChanges*: dispatched via `EntityChangesPublisher` and subscribed to 
via `EntityChangesSubscriber` (SPI)
+. *Execution*: dispatched via `ExecutionPublisher` and subscribed to via 
`ExecutionSubscriber` (SPI)
+. *Command*: dispatched via `CommandPublisher` and subscribed to via 
`CommandSubscriber` (SPI)
 
diff --git 
a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityAuditDispatcher.adoc
 
b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityPropertyChangePublisher.adoc
similarity index 61%
rename from 
core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityAuditDispatcher.adoc
rename to 
core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityPropertyChangePublisher.adoc
index e69cfa3..10f93f1 100644
--- 
a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityAuditDispatcher.adoc
+++ 
b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/EntityPropertyChangePublisher.adoc
@@ -1,11 +1,11 @@
-= `EntityAuditDispatcher`
+= `EntityPropertyChangePublisher`
 
 :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 [...]
 
 WARNING: TODO: this content has not yet been reviewed/updated for v2.0
 
-The (internal) `EntityAuditDispatcher` service acts as an internal facade to 
any registered 
xref:refguide:applib-svc:EntityAuditListener.adoc[`EntityAuditListener`] 
service(s).
-It is responsible for obtaining the details of all changes to domain objects 
within an interaction, and then to call the configured 
``EntityAuditListener``(s) to actually create audit entries of those changes.
+The (internal) `EntityPropertyChangePublisher` service acts as an internal 
facade to any registered 
xref:refguide:applib-svc:EntityPropertyChangeSubscriber.adoc[`EntityPropertyChangeSubscriber`]
 service(s).
+It is responsible for obtaining the details of all changes to domain objects 
within an interaction, and then to call the configured 
``EntityPropertyChangeSubscriber``(s) to actually create audit entries of those 
changes.
 
 
 
@@ -16,8 +16,8 @@ The SPI of the service is:
 
 [source,java]
 ----
-public class EntityAuditDispatcher {
-    public void dispatchEntityAudits(...);  // <1>
+public interface EntityPropertyChangePublisher {
+    void publishEntityPropertyChanges(...);  // <1>
 }
 ----
 <1> uses the 
xref:core:runtime-services:ChangedObjectsService.adoc[`ChangedObjectsServiceInternal`]
 to obtain details of the changed properties, then call the configured 
xref:refguide:applib-svc:AuditerService.adoc[`AuditerService`](s).
@@ -29,8 +29,8 @@ Apache Isis' default implementation of 
`EntityAuditDispatcher` class is automati
 
 == Related Classes
 
-In total there are 4 sorts of data the framework has dispatchers for ...
-. *EntityAudit*: dispatched via `EntityAuditDispatcher` and subscribed to via 
`EntityAuditListener` (SPI)
-. *ChangingEntities*: dispatched via `ChangingEntitiesDispatcher` and 
subscribed to via `ChangingEntitiesListener` (SPI)
-. *Execution*: dispatched via `ExecutionDispatcher` and subscribed to via 
`ExecutionListener` (SPI)
-. *Command*: dispatched via `CommandDispatcher` and subscribed to via 
`CommandListener` (SPI)
+In total there are 4 sorts of data the framework has publishers for ...
+. *EntityPropertyChanges*: dispatched via `EntityPropertyChangePublisher` and 
subscribed to via `EntityPropertyChangeSubscriber` (SPI)
+. *EntityChanges*: dispatched via `EntityChangesPublisher` and subscribed to 
via `EntityChangesSubscriber` (SPI)
+. *Execution*: dispatched via `ExecutionPublisher` and subscribed to via 
`ExecutionSubscriber` (SPI)
+. *Command*: dispatched via `CommandPublisher` and subscribed to via 
`CommandSubscriber` (SPI)
diff --git 
a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ExecutionDispatcher.adoc
 
b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ExecutionPublisher.adoc
similarity index 70%
rename from 
core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ExecutionDispatcher.adoc
rename to 
core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ExecutionPublisher.adoc
index 1c767bf..024aa95 100644
--- 
a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ExecutionDispatcher.adoc
+++ 
b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/ExecutionPublisher.adoc
@@ -1,14 +1,14 @@
-= `ExecutionDispatcher`
+= `ExecutionPublisher`
 
 :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 [...]
 
 WARNING: TODO: this content has not yet been reviewed/updated for v2.0
 
-The (internal) `ExecutionDispatcher` domain service acts as an internal facade 
to any configured 
xref:refguide:applib-svc:PublisherService.adoc[`PublisherService`] domain 
service(s).
+The (internal) `ExecutionPublisher` domain service acts as an internal facade 
to any configured 
xref:refguide:applib-svc:ExecutionSubscriber.adoc[`ExecutionSubscriber`] domain 
service(s).
 
 For published action invocations/ property edits, it provides an API for those 
member executions to call.
 
-For published objects, it provides an API for the framework to call at the end 
of the interaction; it obtains details of the changed objects (from the 
xref:core:runtime-services:ChangedObjectsService.adoc[`ChangedObjectsServiceInternal`])
 and filters them to just those objects that are to be published; these are 
then passed through to any configured `PublisherService` implementations.
+For published objects, it provides an API for the framework to call at the end 
of the interaction; it obtains details of the changed objects (from the 
xref:core:runtime-services:ChangedObjectsService.adoc[`ChangedObjectsServiceInternal`])
 and filters them to just those objects that are to be published; these are 
then passed through to any configured `ExecutionSubscriber` implementations.
 
 
 == SPI and Implementation
@@ -17,11 +17,11 @@ The SPI of the service is:
 
 [source,java]
 ----
-public class ExecutionDispatcher {
+public interface ExecutionPublisher {
 
-       void dispatchActionInvoking(Execution execution);   // <1>
+       void publishActionInvocation(Execution execution);   // <1>
        
-    void dispatchPropertyChanging(Execution execution); // <2>
+    void publishPropertyEdit(Execution execution);       // <2>
     
 }
 ----
@@ -32,8 +32,8 @@ The `Execution` object will be an instance of `PropertyEdit` 
(see xref:refguide:
 
 == Related Classes
 
-In total there are 4 sorts of data the framework has dispatchers for ...
-. *EntityAudit*: dispatched via `EntityAuditDispatcher` and subscribed to via 
`EntityAuditListener` (SPI)
-. *ChangingEntities*: dispatched via `ChangingEntitiesDispatcher` and 
subscribed to via `ChangingEntitiesListener` (SPI)
-. *Execution*: dispatched via `ExecutionDispatcher` and subscribed to via 
`ExecutionListener` (SPI)
-. *Command*: dispatched via `CommandDispatcher` and subscribed to via 
`CommandListener` (SPI)
\ No newline at end of file
+In total there are 4 sorts of data the framework has publishers for ...
+. *EntityPropertyChanges*: dispatched via `EntityPropertyChangePublisher` and 
subscribed to via `EntityPropertyChangeSubscriber` (SPI)
+. *EntityChanges*: dispatched via `EntityChangesPublisher` and subscribed to 
via `EntityChangesSubscriber` (SPI)
+. *Execution*: dispatched via `ExecutionPublisher` and subscribed to via 
`ExecutionSubscriber` (SPI)
+. *Command*: dispatched via `CommandPublisher` and subscribed to via 
`CommandSubscriber` (SPI)
\ No newline at end of file

Reply via email to