You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2017/06/01 08:57:14 UTC

[1/2] isis git commit: ISIS-1394: fieldset#name now optional so can suppress in layout [Forced Update!]

Repository: isis
Updated Branches:
  refs/heads/master 302524564 -> 1faaa5120 (forced update)


ISIS-1394: fieldset#name now optional so can suppress in layout


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

Branch: refs/heads/master
Commit: 895fdf61d369729fc90d838f442b218e5ed08977
Parents: 259284e
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Thu Jun 1 09:46:42 2017 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Jun 1 09:46:42 2017 +0100

----------------------------------------------------------------------
 .../applib/layout/component/component.xsd       |  2 +-
 .../isis/applib/layout/component/FieldSet.java  |  2 +-
 .../entity/fieldset/PropertyGroup.html          |  2 +-
 .../entity/fieldset/PropertyGroup.java          | 37 ++++++++++++--------
 4 files changed, 25 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/895fdf61/adocs/documentation/src/main/asciidoc/applib/layout/component/component.xsd
----------------------------------------------------------------------
diff --git a/adocs/documentation/src/main/asciidoc/applib/layout/component/component.xsd b/adocs/documentation/src/main/asciidoc/applib/layout/component/component.xsd
index 43603d7..7471bc1 100644
--- a/adocs/documentation/src/main/asciidoc/applib/layout/component/component.xsd
+++ b/adocs/documentation/src/main/asciidoc/applib/layout/component/component.xsd
@@ -50,7 +50,7 @@
       <xs:element maxOccurs="unbounded" minOccurs="0" ref="tns:property"/>
       <xs:element minOccurs="0" name="metadataError" type="xs:string"/>
     </xs:sequence>
-    <xs:attribute name="name" type="xs:string" use="required"/>
+    <xs:attribute name="name" type="xs:string" use="optional"/>
     <xs:attribute name="id" type="xs:string"/>
     <xs:attribute name="unreferencedActions" type="xs:boolean"/>
     <xs:attribute name="unreferencedProperties" type="xs:boolean"/>

http://git-wip-us.apache.org/repos/asf/isis/blob/895fdf61/core/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java b/core/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
index e2533da..2cb3be1 100644
--- a/core/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
+++ b/core/applib/src/main/java/org/apache/isis/applib/layout/component/FieldSet.java
@@ -127,7 +127,7 @@ public class FieldSet
     /**
      * Corresponds to the {@link MemberOrder#name()} (when applied to properties).
      */
-    @XmlAttribute(required = true)
+    @XmlAttribute(required = false)
     public String getName() {
         return name;
     }

http://git-wip-us.apache.org/repos/asf/isis/blob/895fdf61/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.html
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.html b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.html
index 355ed29..c9bf33f 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.html
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.html
@@ -22,7 +22,7 @@
         <wicket:panel>
             <fieldset class="memberGroup" wicket:id="memberGroup">
                 <div class="panel panel-default">
-                    <div class="panel-heading">
+                    <div class="panel-heading" wicket:id="panelHeading">
                         <span wicket:id="memberGroupName" class="panel-title">[group name]</span>
                         <div class="pull-right additionalLinks">
                             <div class="pull-right" wicket:id="associatedActionLinksPanelDropDown"></div>

http://git-wip-us.apache.org/repos/asf/isis/blob/895fdf61/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
----------------------------------------------------------------------
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
index 202516d..6ae8941 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/fieldset/PropertyGroup.java
@@ -24,6 +24,7 @@ import javax.annotation.Nullable;
 
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
+import com.google.common.base.Strings;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
@@ -92,10 +93,8 @@ public class PropertyGroup extends PanelAbstract<EntityModel> implements HasDyna
 
         String groupName = fieldSet.getName();
 
-        div.add(new Label(ID_MEMBER_GROUP_NAME, groupName));
 
         final List<LinkAndLabel> memberGroupActions = Lists.newArrayList();
-
         final RepeatingView propertyRv = new RepeatingView(ID_PROPERTIES);
         div.add(propertyRv);
 
@@ -139,19 +138,27 @@ public class PropertyGroup extends PanelAbstract<EntityModel> implements HasDyna
             visible = true;
         }
 
-        final List<LinkAndLabel> actionsPanel = LinkAndLabel
-                .positioned(memberGroupActions, ActionLayout.Position.PANEL);
-        final List<LinkAndLabel> actionsPanelDropDown = LinkAndLabel
-                .positioned(memberGroupActions, ActionLayout.Position.PANEL_DROPDOWN);
-
-        AdditionalLinksPanel.addAdditionalLinks(
-                div, ID_ASSOCIATED_ACTION_LINKS_PANEL,
-                actionsPanel,
-                AdditionalLinksPanel.Style.INLINE_LIST);
-        AdditionalLinksPanel.addAdditionalLinks(
-                div, ID_ASSOCIATED_ACTION_LINKS_PANEL_DROPDOWN,
-                actionsPanelDropDown,
-                AdditionalLinksPanel.Style.DROPDOWN);
+        WebMarkupContainer panelHeading = new WebMarkupContainer("panelHeading");
+        div.add(panelHeading);
+        if(Strings.isNullOrEmpty(groupName)) {
+            panelHeading.setVisibilityAllowed(false);
+        } else {
+            panelHeading.add(new Label(ID_MEMBER_GROUP_NAME, groupName));
+            final List<LinkAndLabel> actionsPanel = LinkAndLabel
+                    .positioned(memberGroupActions, ActionLayout.Position.PANEL);
+            final List<LinkAndLabel> actionsPanelDropDown = LinkAndLabel
+                    .positioned(memberGroupActions, ActionLayout.Position.PANEL_DROPDOWN);
+
+            AdditionalLinksPanel.addAdditionalLinks(
+                    panelHeading, ID_ASSOCIATED_ACTION_LINKS_PANEL,
+                    actionsPanel,
+                    AdditionalLinksPanel.Style.INLINE_LIST);
+            AdditionalLinksPanel.addAdditionalLinks(
+                    panelHeading, ID_ASSOCIATED_ACTION_LINKS_PANEL_DROPDOWN,
+                    actionsPanelDropDown,
+                    AdditionalLinksPanel.Style.DROPDOWN);
+
+        }
 
         // either add the built content, or hide entire
         if(!visible) {


[2/2] isis git commit: ISIS-1592: extends ixn.xsd and cmd.xsd

Posted by da...@apache.org.
ISIS-1592: extends ixn.xsd and cmd.xsd

to include logicalMemberIdentifier.

Also:
- extended OTOA and OTMA so have getOnType, same as ObjectAction.  Required in order to be able to obtain the objectSpec in order to populate the new logicalMemberIdentifier field


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

Branch: refs/heads/master
Commit: 1faaa51206297837ed14e76c32487fabd1ee7bcc
Parents: 895fdf6
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue May 30 21:09:27 2017 +0200
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Thu Jun 1 09:47:00 2017 +0100

----------------------------------------------------------------------
 .../isis/schema/utils/InteractionDtoUtils.java  |   9 +
 ...ctionDtoUtilsTest_deriveLogicalMemberId.java |  19 ++
 .../CollectionAccessorFacetViaAccessor.java     |   6 +-
 ...llectionAccessorFacetViaAccessorFactory.java |   6 +-
 .../PropertyOrCollectionAccessorFacet.java      |   5 +-
 ...opertyOrCollectionAccessorFacetAbstract.java |   8 +
 .../PropertyAccessorFacetViaAccessor.java       |   8 +-
 ...PropertyAccessorFacetViaAccessorFactory.java |   8 +-
 .../spec/feature/ObjectAssociation.java         |   2 +
 .../specimpl/ObjectAssociationAbstract.java     |   6 +
 .../specimpl/OneToManyAssociationDefault.java   |   1 +
 .../specimpl/OneToOneAssociationDefault.java    |   1 -
 .../AbstractFacetFactoryJUnit4TestCase.java     |   2 +
 .../CollectionAnnotationFacetFactoryTest.java   |   2 +-
 .../PropertyAnnotationFacetFactoryTest.java     |   2 +-
 ...ectAssociationAbstractTest_alwaysHidden.java |   2 +
 .../CommandDtoServiceInternalDefault.java       |   8 +
 core/schema/pom.xml                             |   4 +-
 .../org/apache/isis/schema/bindings.xml         |   8 +-
 .../org/apache/isis/schema/cmd/cmd-1.2.xsd      | 151 -------------
 .../org/apache/isis/schema/cmd/cmd-1.3.xsd      | 157 +++++++++++++
 .../org/apache/isis/schema/ixn/ixn-1.1.xsd      | 215 ------------------
 .../org/apache/isis/schema/ixn/ixn-1.2.xsd      | 221 +++++++++++++++++++
 ...WrapperFactoryDefaultTest_wrappedObject.java |   5 +-
 ...toryDefaultTest_wrappedObject_transient.java |   4 +-
 .../application/manifest/isis.properties        |   5 +
 26 files changed, 475 insertions(+), 390 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java
----------------------------------------------------------------------
diff --git a/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java b/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java
index 370bdff..ccf48dd 100644
--- a/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java
+++ b/core/applib/src/main/java/org/apache/isis/schema/utils/InteractionDtoUtils.java
@@ -288,10 +288,19 @@ public final class InteractionDtoUtils {
         executionDto.setTitle(targetTitle);
         executionDto.setUser(user);
 
+        final String logicalMemberId = deriveLogicalMemberId(targetBookmark, memberId);
+        executionDto.setLogicalMemberIdentifier(logicalMemberId);
         executionDto.setMemberIdentifier(memberId);
         return executionDto;
     }
 
+    static String deriveLogicalMemberId(final Bookmark bookmark, final String memberId) {
+        String objectType = bookmark.getObjectType();
+        int hashAt = memberId.lastIndexOf("#");
+        String localMemberId = hashAt >= 0 && hashAt < memberId.length() ? memberId.substring(hashAt + 1) : memberId;
+        return objectType + "#" + localMemberId;
+    }
+
     //endregion
 
     //region > invocationFor, actionFor, timingsFor

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/applib/src/test/java/org/apache/isis/schema/utils/InteractionDtoUtilsTest_deriveLogicalMemberId.java
----------------------------------------------------------------------
diff --git a/core/applib/src/test/java/org/apache/isis/schema/utils/InteractionDtoUtilsTest_deriveLogicalMemberId.java b/core/applib/src/test/java/org/apache/isis/schema/utils/InteractionDtoUtilsTest_deriveLogicalMemberId.java
new file mode 100644
index 0000000..a059966
--- /dev/null
+++ b/core/applib/src/test/java/org/apache/isis/schema/utils/InteractionDtoUtilsTest_deriveLogicalMemberId.java
@@ -0,0 +1,19 @@
+package org.apache.isis.schema.utils;
+
+import org.junit.Test;
+
+import org.apache.isis.applib.services.bookmark.Bookmark;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+public class InteractionDtoUtilsTest_deriveLogicalMemberId {
+
+    @Test
+    public void happy_case() throws Exception {
+        String s = InteractionDtoUtils.deriveLogicalMemberId(new Bookmark("customer.Order", "1234"),
+                "com.mycompany.customer.Order#placeOrder");
+        assertThat(s, is(equalTo("customer.Order#placeOrder")));
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
index 63f87f6..ed8f80f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessor.java
@@ -35,6 +35,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.CollectionUtils;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class CollectionAccessorFacetViaAccessor
@@ -44,6 +45,7 @@ public class CollectionAccessorFacetViaAccessor
     private final Method method;
 
     public CollectionAccessorFacetViaAccessor(
+            final ObjectSpecification typeSpec,
             final Method method,
             final FacetHolder holder,
             final DeploymentCategory deploymentCategory,
@@ -51,9 +53,7 @@ public class CollectionAccessorFacetViaAccessor
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final AdapterManager adapterManager) {
-        super(holder, deploymentCategory, isisConfiguration, specificationLoader, authenticationSessionProvider,
-                adapterManager
-        );
+        super(typeSpec, holder, deploymentCategory, isisConfiguration, specificationLoader, authenticationSessionProvider, adapterManager);
         this.method = method;
     }
 

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
index edf3083..e45622f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/collections/accessor/CollectionAccessorFacetViaAccessorFactory.java
@@ -33,6 +33,7 @@ import org.apache.isis.core.metamodel.facets.collparam.semantics.CollectionSeman
 import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 public class CollectionAccessorFacetViaAccessorFactory
         extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
@@ -52,10 +53,13 @@ public class CollectionAccessorFacetViaAccessorFactory
         final Method accessorMethod = processMethodContext.getMethod();
         processMethodContext.removeMethod(accessorMethod);
 
+        final Class<?> cls = processMethodContext.getCls();
+        final ObjectSpecification typeSpec = getSpecificationLoader().loadSpecification(cls);
+
         final FacetHolder holder = processMethodContext.getFacetHolder();
         FacetUtil.addFacet(
                 new CollectionAccessorFacetViaAccessor(
-                        accessorMethod, holder,
+                        typeSpec, accessorMethod, holder,
                         getDeploymentCategory(), getConfiguration(), getSpecificationLoader(),
                         getAuthenticationSessionProvider(), adapterManager
                 ));

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacet.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacet.java
index ce67e26..7ebdd47 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacet.java
@@ -19,11 +19,10 @@
 
 package org.apache.isis.core.metamodel.facets.propcoll.accessor;
 
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
-import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.Facet;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 /**
  * The mechanism by which the value of the property can be accessed.
@@ -49,4 +48,6 @@ public interface PropertyOrCollectionAccessorFacet extends Facet {
     public Object getProperty(
             final ObjectAdapter inObject,
             final InteractionInitiatedBy interactionInitiatedBy);
+
+    ObjectSpecification getOnType();
 }

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
index e192646..f104813 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/propcoll/accessor/PropertyOrCollectionAccessorFacetAbstract.java
@@ -36,6 +36,7 @@ public abstract class PropertyOrCollectionAccessorFacetAbstract
         extends FacetAbstract
         implements PropertyOrCollectionAccessorFacet {
 
+    private final ObjectSpecification onType;
     private final AdapterManager adapterManager;
     private final SpecificationLoader specificationLoader;
     private final IsisConfiguration configuration;
@@ -47,6 +48,7 @@ public abstract class PropertyOrCollectionAccessorFacetAbstract
     }
 
     public PropertyOrCollectionAccessorFacetAbstract(
+            final ObjectSpecification onType,
             final FacetHolder holder,
             final DeploymentCategory deploymentCategory,
             final IsisConfiguration configuration,
@@ -54,6 +56,7 @@ public abstract class PropertyOrCollectionAccessorFacetAbstract
             final AuthenticationSessionProvider authenticationSessionProvider,
             final AdapterManager adapterManager) {
         super(type(), holder, Derivation.NOT_DERIVED);
+        this.onType = onType;
         this.adapterManager = adapterManager;
         this.specificationLoader = specificationLoader;
         this.configuration = configuration;
@@ -62,6 +65,11 @@ public abstract class PropertyOrCollectionAccessorFacetAbstract
     }
 
     @Override
+    public ObjectSpecification getOnType() {
+        return onType;
+    }
+
+    @Override
     public abstract Object getProperty(
             ObjectAdapter inObject,
             final InteractionInitiatedBy interactionInitiatedBy);

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
index e697bee..cf61aca 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessor.java
@@ -23,7 +23,6 @@ import java.lang.reflect.Method;
 import java.util.Collections;
 import java.util.List;
 
-import org.apache.isis.core.commons.authentication.AuthenticationSession;
 import org.apache.isis.core.commons.authentication.AuthenticationSessionProvider;
 import org.apache.isis.core.commons.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.adapter.ObjectAdapter;
@@ -33,6 +32,7 @@ import org.apache.isis.core.metamodel.deployment.DeploymentCategory;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.ImperativeFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacetAbstract;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 
 public class PropertyAccessorFacetViaAccessor
@@ -43,6 +43,7 @@ public class PropertyAccessorFacetViaAccessor
     private final Method method;
 
     public PropertyAccessorFacetViaAccessor(
+            final ObjectSpecification typeSpec,
             final Method method,
             final FacetHolder holder,
             final DeploymentCategory deploymentCategory,
@@ -50,7 +51,7 @@ public class PropertyAccessorFacetViaAccessor
             final SpecificationLoader specificationLoader,
             final AuthenticationSessionProvider authenticationSessionProvider,
             final AdapterManager adapterManager) {
-        super(holder, deploymentCategory, isisConfiguration, specificationLoader, authenticationSessionProvider, adapterManager);
+        super(typeSpec, holder, deploymentCategory, isisConfiguration, specificationLoader, authenticationSessionProvider, adapterManager);
         this.method = method;
     }
 
@@ -78,9 +79,6 @@ public class PropertyAccessorFacetViaAccessor
             return null;
         }
 
-        final AuthenticationSession authenticationSession = getAuthenticationSession();
-        final DeploymentCategory deploymentCategory = getDeploymentCategory();
-
         boolean filterForVisibility = getConfiguration().getBoolean("isis.reflector.facet.filterVisibility", true);
         if(filterForVisibility) {
             final ObjectAdapter referencedAdapter = getAdapterManager().adapterFor(referencedObject);

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
index c987e78..a1e04a7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/accessor/PropertyAccessorFacetViaAccessorFactory.java
@@ -26,11 +26,12 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facetapi.FacetUtil;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facetapi.MethodRemover;
-import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.facets.MethodPrefixConstants;
 import org.apache.isis.core.metamodel.facets.PropertyOrCollectionIdentifyingFacetFactoryAbstract;
+import org.apache.isis.core.metamodel.methodutils.MethodScope;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 
 public class PropertyAccessorFacetViaAccessorFactory extends PropertyOrCollectionIdentifyingFacetFactoryAbstract {
 
@@ -49,10 +50,13 @@ public class PropertyAccessorFacetViaAccessorFactory extends PropertyOrCollectio
         final Method accessorMethod = processMethodContext.getMethod();
         processMethodContext.removeMethod(accessorMethod);
 
+        final Class<?> cls = processMethodContext.getCls();
+        final ObjectSpecification typeSpec = getSpecificationLoader().loadSpecification(cls);
+
         final FacetHolder property = processMethodContext.getFacetHolder();
         FacetUtil.addFacet(
                 new PropertyAccessorFacetViaAccessor(
-                        accessorMethod, property,
+                        typeSpec, accessorMethod, property,
                         getDeploymentCategory(), getConfiguration(),
                         getSpecificationLoader(),
                         getAuthenticationSessionProvider(),

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
index 2850e80..a3f944b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/spec/feature/ObjectAssociation.java
@@ -43,6 +43,7 @@ import org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet;
 import org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet;
 import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
 import org.apache.isis.core.metamodel.layout.memberorderfacet.MemberOrderComparator;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.specimpl.ContributeeMember;
 import org.apache.isis.core.metamodel.util.DeweyOrderComparator;
 
@@ -124,6 +125,7 @@ public interface ObjectAssociation extends ObjectMember, CurrentHolder {
      */
     boolean isMandatory();
 
+    ObjectSpecification getOnType();
 
     // //////////////////////////////////////////////////////
     // Functions

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstract.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstract.java
index 34541ac..f01fe57 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstract.java
@@ -24,6 +24,7 @@ import org.apache.isis.core.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.core.metamodel.facetapi.FeatureType;
 import org.apache.isis.core.metamodel.facets.FacetedMethod;
 import org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
+import org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet;
 import org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet;
 import org.apache.isis.core.metamodel.facets.properties.choices.PropertyChoicesFacet;
 import org.apache.isis.core.metamodel.services.ServicesInjector;
@@ -53,6 +54,11 @@ public abstract class ObjectAssociationAbstract extends ObjectMemberAbstract imp
     }
 
     @Override
+    public ObjectSpecification getOnType() {
+        final PropertyOrCollectionAccessorFacet facet = getFacet(PropertyOrCollectionAccessorFacet.class);
+        return facet.getOnType();
+    }
+    @Override
     public abstract ObjectAdapter get(
             final ObjectAdapter fromObject,
             final InteractionInitiatedBy interactionInitiatedBy);

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
index fc3f2fd..3a4dfae 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToManyAssociationDefault.java
@@ -69,6 +69,7 @@ public class OneToManyAssociationDefault extends ObjectAssociationAbstract imple
         return getFacet(CollectionSemanticsFacet.class).value();
     }
 
+
     //region > visible, usable
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
index 7de021f..e3fa626 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/OneToOneAssociationDefault.java
@@ -355,7 +355,6 @@ public class OneToOneAssociationDefault extends ObjectAssociationAbstract implem
     }
 
 
-
     //region > toString
 
     @Override

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
index af2ca76..8fc15ad 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/AbstractFacetFactoryJUnit4TestCase.java
@@ -78,6 +78,8 @@ public abstract class AbstractFacetFactoryJUnit4TestCase {
     protected IdentifiedHolder facetHolder;
 
     @Mock
+    protected ObjectSpecification mockOnType;
+    @Mock
     protected ObjectSpecification mockObjSpec;
     @Mock
     protected OneToOneAssociation mockOneToOneAssociation;

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
index b9a7fd6..af57772 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/collections/collection/CollectionAnnotationFacetFactoryTest.java
@@ -120,7 +120,7 @@ public class CollectionAnnotationFacetFactoryTest extends AbstractFacetFactoryJU
     public static class Modify extends CollectionAnnotationFacetFactoryTest {
 
         private void addGetterFacet(final FacetHolder holder) {
-            FacetUtil.addFacet(new PropertyOrCollectionAccessorFacetAbstract(holder, mockDeploymentCategoryProvider.getDeploymentCategory(),
+            FacetUtil.addFacet(new PropertyOrCollectionAccessorFacetAbstract(mockOnType, holder, mockDeploymentCategoryProvider.getDeploymentCategory(),
                     mockConfiguration,
                     mockSpecificationLoader, mockAuthenticationSessionProvider,
                     mockPersistenceSessionServiceInternal

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
index 8d6b41e..2d487c9 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/properties/property/PropertyAnnotationFacetFactoryTest.java
@@ -126,7 +126,7 @@ public class PropertyAnnotationFacetFactoryTest extends AbstractFacetFactoryJUni
     public static class Modify extends PropertyAnnotationFacetFactoryTest {
 
         private void addGetterFacet(final FacetHolder holder) {
-            FacetUtil.addFacet(new PropertyOrCollectionAccessorFacetAbstract(holder, mockDeploymentCategoryProvider.getDeploymentCategory(),
+            FacetUtil.addFacet(new PropertyOrCollectionAccessorFacetAbstract(mockOnType, holder, mockDeploymentCategoryProvider.getDeploymentCategory(),
                     mockConfiguration,
                     mockSpecificationLoader, mockAuthenticationSessionProvider,
                     mockPersistenceSessionServiceInternal

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
----------------------------------------------------------------------
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
index 9eb6dd3..a46851e 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectAssociationAbstractTest_alwaysHidden.java
@@ -57,6 +57,8 @@ public class ObjectAssociationAbstractTest_alwaysHidden {
 
     @Mock
     private ObjectSpecification mockObjectSpecification;
+    @Mock
+    private ObjectSpecification mockOnType;
 
     @Mock
     private ServicesInjector mockServicesInjector;

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
index b9c61d6..cafbf2f 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/command/CommandDtoServiceInternalDefault.java
@@ -210,6 +210,10 @@ public class CommandDtoServiceInternalDefault implements CommandDtoServiceIntern
             final ActionDto actionDto,
             final ObjectAdapter[] argAdapters) {
         final String actionId = CommandUtil.memberIdentifierFor(objectAction);
+        final ObjectSpecification onType = objectAction.getOnType();
+        final String objectType = onType.getSpecId().asString();
+        final String localId = objectAction.getIdentifier().toNameIdentityString();
+        actionDto.setLogicalMemberIdentifier(objectType + "#" + localId);
         actionDto.setMemberIdentifier(actionId);
 
         List<ObjectActionParameter> actionParameters = objectAction.getParameters();
@@ -235,6 +239,10 @@ public class CommandDtoServiceInternalDefault implements CommandDtoServiceIntern
             final ObjectAdapter valueAdapter) {
 
         final String actionIdentifier = CommandUtil.memberIdentifierFor(property);
+        final ObjectSpecification onType = property.getOnType();
+        final String objectType = onType.getSpecId().asString();
+        final String localId = property.getIdentifier().toNameIdentityString();
+        propertyDto.setLogicalMemberIdentifier(objectType + "#" + localId);
         propertyDto.setMemberIdentifier(actionIdentifier);
 
         final ObjectSpecification valueSpec = property.getSpecification();

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/schema/pom.xml
----------------------------------------------------------------------
diff --git a/core/schema/pom.xml b/core/schema/pom.xml
index b4f9094..33db6fd 100644
--- a/core/schema/pom.xml
+++ b/core/schema/pom.xml
@@ -79,8 +79,8 @@
                                     <schemaDirectory>src/main/resources/org/apache/isis/schema</schemaDirectory>
                                     <schemaIncludes>
                                         <schemaInclude>common/common-1.1.xsd</schemaInclude>
-                                        <schemaInclude>cmd/cmd-1.2.xsd</schemaInclude>
-                                        <schemaInclude>ixn/ixn-1.1.xsd</schemaInclude>
+                                        <schemaInclude>cmd/cmd-1.3.xsd</schemaInclude>
+                                        <schemaInclude>ixn/ixn-1.2.xsd</schemaInclude>
                                         <schemaInclude>chg/chg-1.1.xsd</schemaInclude>
                                     </schemaIncludes>
                                     <bindingDirectory>src/main/resources/org/apache/isis/schema</bindingDirectory>

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/schema/src/main/resources/org/apache/isis/schema/bindings.xml
----------------------------------------------------------------------
diff --git a/core/schema/src/main/resources/org/apache/isis/schema/bindings.xml b/core/schema/src/main/resources/org/apache/isis/schema/bindings.xml
index 660fa51..5898075 100644
--- a/core/schema/src/main/resources/org/apache/isis/schema/bindings.xml
+++ b/core/schema/src/main/resources/org/apache/isis/schema/bindings.xml
@@ -38,7 +38,7 @@
         </jaxb:bindings>
     </jaxb:bindings>
 
-    <jaxb:bindings schemaLocation="ixn/ixn-1.1.xsd">
+    <jaxb:bindings schemaLocation="ixn/ixn-1.2.xsd">
         <jaxb:schemaBindings>
             <!--
             we don't include the minor version, because the
@@ -50,7 +50,7 @@
             <namespace:prefix name="ixn" />
         </jaxb:bindings>
     </jaxb:bindings>
-    <!-- since ixn-1.1.xsd does an xs:import of common-1.1.xsd, we need to specify common's package bindings -->
+    <!-- since ixn-1.2.xsd does an xs:import of common-1.1.xsd, we need to specify common's package bindings -->
     <jaxb:bindings schemaLocation="common/common-1.1.xsd">
         <jaxb:schemaBindings>
             <!--
@@ -63,8 +63,8 @@
             <namespace:prefix name="com" />
         </jaxb:bindings>
     </jaxb:bindings>
-    <!-- since ixn-1.1.xsd does an xs:import of cmd-1.2.xsd, we need to specify common's package bindings -->
-    <jaxb:bindings schemaLocation="cmd/cmd-1.2.xsd">
+    <!-- since ixn-1.2.xsd does an xs:import of cmd-1.3.xsd, we need to specify common's package bindings -->
+    <jaxb:bindings schemaLocation="cmd/cmd-1.3.xsd">
         <jaxb:schemaBindings>
             <!--
             we don't include the minor version, because the

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/schema/src/main/resources/org/apache/isis/schema/cmd/cmd-1.2.xsd
----------------------------------------------------------------------
diff --git a/core/schema/src/main/resources/org/apache/isis/schema/cmd/cmd-1.2.xsd b/core/schema/src/main/resources/org/apache/isis/schema/cmd/cmd-1.2.xsd
deleted file mode 100644
index 98cb53a..0000000
--- a/core/schema/src/main/resources/org/apache/isis/schema/cmd/cmd-1.2.xsd
+++ /dev/null
@@ -1,151 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
--->
-<xs:schema targetNamespace="http://isis.apache.org/schema/cmd"
-           elementFormDefault="qualified"
-           xmlns:xs="http://www.w3.org/2001/XMLSchema"
-           xmlns="http://isis.apache.org/schema/cmd"
-           xmlns:com="http://isis.apache.org/schema/common">
-
-    <xs:import namespace="http://isis.apache.org/schema/common" schemaLocation="../common/common-1.1.xsd"/>
-
-    <xs:element name="commandDto">
-        <xs:annotation>
-            <xs:documentation>Represents v1.2 of this schema.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="majorVersion" type="xs:string" minOccurs="1" maxOccurs="1" default="1">
-                    <xs:annotation>
-                        <xs:documentation>The major version of the schema that an XML instance was created using.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element name="minorVersion" type="xs:string" minOccurs="1" maxOccurs="1" default="2">
-                    <xs:annotation>
-                        <xs:documentation>The minor version of the schema that an XML instance was created using.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element name="transactionId" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>Transaction id for this command, a unique identifier.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element name="user" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>The name of the user that initiated/created this command.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element name="targets" type="com:oidsDto">
-                    <xs:annotation>
-                        <xs:documentation>For regular actions, represents the entity/entities or view model(s) upon which the action is to be invoked.  For mixin actions, is the object(s) being mixed-into (the constructor arg to the mixin).  For contributed actions, is the domain service (the contributee object will be one of the action arguments within the payload).  Note that this means that bulk contributed actions cannot be reified as a memento (for this use case, implement as a mixin action instead).
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element name="member" type="memberDto">
-                    <xs:annotation>
-                        <xs:documentation>The action or property (identifier and parameter arguments) to be invoked on the target object(s).</xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-            </xs:sequence>
-        </xs:complexType>
-    </xs:element>
-
-    <xs:complexType name="memberDto" abstract="true">
-        <xs:annotation>
-            <xs:documentation>Represents the information required to be able to invoke an action or modify a property on the target(s).  Specifically, is the identifier of the action/property, along with the parameter arguments.  Is subclassed by 'actionDto' and 'propertyDto'.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="memberIdentifier" type="xs:string">
-                <xs:annotation>
-                    <xs:documentation>Formal identifier of the member being interacted with (action or property).
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-        </xs:sequence>
-        <xs:attribute  name="interactionType" type="com:interactionType">
-            <xs:annotation>
-                <xs:documentation>Indicates whether this is an intention to invoke an action, or edit a property.
-                </xs:documentation>
-            </xs:annotation>
-        </xs:attribute>
-    </xs:complexType>
-
-    <xs:complexType name="actionDto">
-        <xs:annotation>
-            <xs:documentation>Captures the information required to be able to invoke an action on the target(s).
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="memberDto">
-                <xs:sequence>
-                    <xs:element name="parameters" type="paramsDto">
-                        <xs:annotation>
-                            <xs:documentation>The list of parameter/argument values for this action invocation.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="propertyDto">
-        <xs:annotation>
-            <xs:documentation>Captures the information required to be able to modify a property on the target(s).
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="memberDto">
-                <xs:sequence>
-                    <xs:element name="newValue" type="com:valueWithTypeDto"/>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="paramsDto">
-        <xs:annotation>
-            <xs:documentation>A list of of parameter/argument values.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence minOccurs="0" maxOccurs="unbounded">
-            <xs:element name="parameter" type="paramDto"/>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="paramDto">
-        <xs:annotation>
-            <xs:documentation>Defines an action parameter: its name, type and value (ie provided argument).
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexContent>
-            <xs:extension base="com:valueWithTypeDto">
-                <xs:attribute name="name" use="required" type="xs:string"/>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-
-</xs:schema>

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/schema/src/main/resources/org/apache/isis/schema/cmd/cmd-1.3.xsd
----------------------------------------------------------------------
diff --git a/core/schema/src/main/resources/org/apache/isis/schema/cmd/cmd-1.3.xsd b/core/schema/src/main/resources/org/apache/isis/schema/cmd/cmd-1.3.xsd
new file mode 100644
index 0000000..8cb1830
--- /dev/null
+++ b/core/schema/src/main/resources/org/apache/isis/schema/cmd/cmd-1.3.xsd
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<xs:schema targetNamespace="http://isis.apache.org/schema/cmd"
+           elementFormDefault="qualified"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns="http://isis.apache.org/schema/cmd"
+           xmlns:com="http://isis.apache.org/schema/common">
+
+    <xs:import namespace="http://isis.apache.org/schema/common" schemaLocation="../common/common-1.1.xsd"/>
+
+    <xs:element name="commandDto">
+        <xs:annotation>
+            <xs:documentation>Represents v1.3 of this schema, adding in 'logicalMemberIdentifier'
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="majorVersion" type="xs:string" minOccurs="1" maxOccurs="1" default="1">
+                    <xs:annotation>
+                        <xs:documentation>The major version of the schema that an XML instance was created using.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="minorVersion" type="xs:string" minOccurs="1" maxOccurs="1" default="3">
+                    <xs:annotation>
+                        <xs:documentation>The minor version of the schema that an XML instance was created using.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="transactionId" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>Transaction id for this command, a unique identifier.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="user" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>The name of the user that initiated/created this command.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="targets" type="com:oidsDto">
+                    <xs:annotation>
+                        <xs:documentation>For regular actions, represents the entity/entities or view model(s) upon which the action is to be invoked.  For mixin actions, is the object(s) being mixed-into (the constructor arg to the mixin).  For contributed actions, is the domain service (the contributee object will be one of the action arguments within the payload).  Note that this means that bulk contributed actions cannot be reified as a memento (for this use case, implement as a mixin action instead).
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="member" type="memberDto">
+                    <xs:annotation>
+                        <xs:documentation>The action or property (identifier and parameter arguments) to be invoked on the target object(s).</xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+
+    <xs:complexType name="memberDto" abstract="true">
+        <xs:annotation>
+            <xs:documentation>Represents the information required to be able to invoke an action or modify a property on the target(s).  Specifically, is the identifier of the action/property, along with the parameter arguments.  Is subclassed by 'actionDto' and 'propertyDto'.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="logicalMemberIdentifier" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>Logical formal identifier (object type, as per @DomainObject(objectType=), and member name) of the member being interacted with (action or property).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="memberIdentifier" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>Formal identifier (class name and member name) of the member being interacted with (action or property).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+        </xs:sequence>
+        <xs:attribute  name="interactionType" type="com:interactionType">
+            <xs:annotation>
+                <xs:documentation>Indicates whether this is an intention to invoke an action, or edit a property.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+    </xs:complexType>
+
+    <xs:complexType name="actionDto">
+        <xs:annotation>
+            <xs:documentation>Captures the information required to be able to invoke an action on the target(s).
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="memberDto">
+                <xs:sequence>
+                    <xs:element name="parameters" type="paramsDto">
+                        <xs:annotation>
+                            <xs:documentation>The list of parameter/argument values for this action invocation.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="propertyDto">
+        <xs:annotation>
+            <xs:documentation>Captures the information required to be able to modify a property on the target(s).
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="memberDto">
+                <xs:sequence>
+                    <xs:element name="newValue" type="com:valueWithTypeDto"/>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="paramsDto">
+        <xs:annotation>
+            <xs:documentation>A list of of parameter/argument values.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence minOccurs="0" maxOccurs="unbounded">
+            <xs:element name="parameter" type="paramDto"/>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="paramDto">
+        <xs:annotation>
+            <xs:documentation>Defines an action parameter: its name, type and value (ie provided argument).
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexContent>
+            <xs:extension base="com:valueWithTypeDto">
+                <xs:attribute name="name" use="required" type="xs:string"/>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+
+</xs:schema>

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/schema/src/main/resources/org/apache/isis/schema/ixn/ixn-1.1.xsd
----------------------------------------------------------------------
diff --git a/core/schema/src/main/resources/org/apache/isis/schema/ixn/ixn-1.1.xsd b/core/schema/src/main/resources/org/apache/isis/schema/ixn/ixn-1.1.xsd
deleted file mode 100644
index b840390..0000000
--- a/core/schema/src/main/resources/org/apache/isis/schema/ixn/ixn-1.1.xsd
+++ /dev/null
@@ -1,215 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  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.
--->
-<xs:schema targetNamespace="http://isis.apache.org/schema/ixn"
-           elementFormDefault="qualified"
-           xmlns:xs="http://www.w3.org/2001/XMLSchema"
-           xmlns="http://isis.apache.org/schema/ixn"
-           xmlns:cmd="http://isis.apache.org/schema/cmd"
-           xmlns:com="http://isis.apache.org/schema/common"
->
-
-    <xs:import namespace="http://isis.apache.org/schema/common" schemaLocation="../common/common-1.1.xsd"/>
-    <xs:import namespace="http://isis.apache.org/schema/cmd" schemaLocation="../cmd/cmd-1.2.xsd"/>
-
-    <xs:element name="interactionDto">
-        <xs:annotation>
-            <xs:documentation>Represents v1.1 of this schema.  This schema replaces and generalizes the earlier 'actionInvocationMemento'.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element name="majorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="1">
-                    <xs:annotation>
-                        <xs:documentation>The major version of the schema that an XML instance was created using.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element name="minorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="1">
-                    <xs:annotation>
-                        <xs:documentation>The minor version of the schema that an XML instance was created using.
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element name="transactionId" type="xs:string">
-                    <xs:annotation>
-                        <xs:documentation>Unique identifier of the interaction which this member was interacted with (action invoked/property edited); can be used to locate the corresponding Command object (which may have been persisted).
-                        </xs:documentation>
-                    </xs:annotation>
-                </xs:element>
-                <xs:element name="execution" type="memberExecutionDto"/>
-            </xs:sequence>
-        </xs:complexType>
-
-    </xs:element>
-
-    <xs:complexType name="memberExecutionDto" abstract="true">
-        <xs:annotation>
-            <xs:documentation>Represents either an action invocation or a property edit.  Is subclassed by both.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="sequence" type="xs:int">
-                <xs:annotation>
-                    <xs:documentation>Unique sequence number of an individual member interaction within the overall interaction.  There could be many such member interactions (within a single transaction) for two reasons: either a single top-level interaction could call sub-interactions (by virtue of WrapperFactory), or there may be a bulk action interaction against many targets.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-            <xs:element name="target" type="com:oidDto">
-                <xs:annotation>
-                    <xs:documentation>For target domain object being interacted with.  For regular actions/properties, represents the entity or view model upon which the action is to be invoked/property edited.  For mixin actions/properties, is the object being mixed-into (the constructor arg to the mixin).  For contributed actions/properties, is the domain service (the contributee object will be one of the action arguments within the payload).
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-            <xs:element name="memberIdentifier" type="xs:string">
-                <xs:annotation>
-                    <xs:documentation>Formal identifier (class name and member name) of the member being interacted with (action or property).
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-            <xs:element name="user" type="xs:string">
-                <xs:annotation>
-                    <xs:documentation>The name of the user that invoked this action.  Note that this isn't necessarily the user that initiated the original command; the SudoService may be being used to temporarily switch the effective user.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-            <xs:element name="title" type="xs:string">
-                <xs:annotation>
-                    <xs:documentation>User-friendly title of the 'target' object.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-            <xs:element name="metrics" type="metricsDto">
-                <xs:annotation>
-                    <xs:documentation>Profiling metrics capturng the this time/number of objects affected as a result of performing this member interaction (invoke the action, or edit the property).
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-            <xs:element name="threw" type="exceptionDto" minOccurs="0" maxOccurs="1">
-                <xs:annotation>
-                    <xs:documentation>Captures any exception thrown by an action.  Either the 'returned' or the 'threw' element will be populated.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-            <xs:element name="childExecutions" minOccurs="0" maxOccurs="1">
-                <xs:complexType>
-                    <xs:sequence>
-                        <xs:element name="execution" type="memberExecutionDto" minOccurs="0" maxOccurs="unbounded">
-                            <xs:annotation>
-                                <xs:documentation>Capture interactions with other members from this interaction, using the WrapperFactory service.  Typically this will be actions invoking other actions, but it is also possible for an action to perform a property edit, and - much rarer - for a property edit to invoke an action.  Whatever; these interactions nest together into a call/stack, more generally into a graph.
-                                </xs:documentation>
-                            </xs:annotation>
-                        </xs:element>
-                    </xs:sequence>
-                </xs:complexType>
-            </xs:element>
-        </xs:sequence>
-        <xs:attribute  name="interactionType" type="com:interactionType">
-            <xs:annotation>
-                <xs:documentation>Indicates whether this is an intention to invoke an action, or edit a property.
-                </xs:documentation>
-            </xs:annotation>
-        </xs:attribute>
-    </xs:complexType>
-
-    <xs:complexType name="actionInvocationDto">
-        <xs:complexContent>
-            <xs:extension base="memberExecutionDto">
-                <xs:sequence>
-                    <xs:element name="parameters" type="cmd:paramsDto">
-                        <xs:annotation>
-                            <xs:documentation>The list of parameter/argument values for this action invocation.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                    <xs:element name="returned" type="com:valueWithTypeDto" minOccurs="0" maxOccurs="1">
-                        <xs:annotation>
-                            <xs:documentation>The value returned by this action (including the type of that returned value).  Either the 'returned' or the 'threw' element (from 'memberExecutionDto') will be populated.
-                            </xs:documentation>
-                        </xs:annotation>
-                    </xs:element>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="propertyEditDto">
-        <xs:complexContent>
-            <xs:extension base="memberExecutionDto">
-                <xs:sequence>
-                    <xs:element name="newValue" type="com:valueWithTypeDto"/>
-                </xs:sequence>
-            </xs:extension>
-        </xs:complexContent>
-    </xs:complexType>
-
-    <xs:complexType name="metricsDto">
-        <xs:sequence>
-            <xs:element name="timings" type="com:periodDto">
-                <xs:annotation>
-                    <xs:documentation>The time taken to perform the member interaction (invoke the action, or edit the property).
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-            <xs:element name="objectCounts" type="objectCountsDto">
-                <xs:annotation>
-                    <xs:documentation>How many objets were affected by the member interaction.
-                    </xs:documentation>
-                </xs:annotation>
-
-            </xs:element>
-        </xs:sequence>
-    </xs:complexType>
-
-    <xs:complexType name="objectCountsDto">
-        <xs:sequence>
-            <xs:element name="loaded" type="com:differenceDto">
-                <xs:annotation>
-                    <xs:documentation>The number of objects loaded.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-            <xs:element name="dirtied" type="com:differenceDto">
-                <xs:annotation>
-                    <xs:documentation>The number of objects dirtied (ie updated).
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-        </xs:sequence>
-
-    </xs:complexType>
-
-    <xs:complexType name="exceptionDto">
-        <xs:annotation>
-            <xs:documentation>Captures any exception thrown by an action invocation.  Use as the xsd:type of the 'threw' element.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:sequence>
-            <xs:element name="message" type="xs:string"/>
-            <xs:element name="stackTrace" type="xs:string">
-                <xs:annotation>
-                    <xs:documentation>A formatted stack trace.  (A future version of the 'exceptionDto' element might refine this to more easily parseable stack trace elements).
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:element>
-            <xs:element name="causedBy" type="exceptionDto" minOccurs="0" maxOccurs="1"/>
-        </xs:sequence>
-    </xs:complexType>
-
-</xs:schema>

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/schema/src/main/resources/org/apache/isis/schema/ixn/ixn-1.2.xsd
----------------------------------------------------------------------
diff --git a/core/schema/src/main/resources/org/apache/isis/schema/ixn/ixn-1.2.xsd b/core/schema/src/main/resources/org/apache/isis/schema/ixn/ixn-1.2.xsd
new file mode 100644
index 0000000..21c16f3
--- /dev/null
+++ b/core/schema/src/main/resources/org/apache/isis/schema/ixn/ixn-1.2.xsd
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<xs:schema targetNamespace="http://isis.apache.org/schema/ixn"
+           elementFormDefault="qualified"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           xmlns="http://isis.apache.org/schema/ixn"
+           xmlns:cmd="http://isis.apache.org/schema/cmd"
+           xmlns:com="http://isis.apache.org/schema/common"
+>
+
+    <xs:import namespace="http://isis.apache.org/schema/common" schemaLocation="../common/common-1.1.xsd"/>
+    <xs:import namespace="http://isis.apache.org/schema/cmd" schemaLocation="../cmd/cmd-1.3.xsd"/>
+
+    <xs:element name="interactionDto">
+        <xs:annotation>
+            <xs:documentation>Represents v1.2 of this schema, adding in 'logicalMemberIdentifier'.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element name="majorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="1">
+                    <xs:annotation>
+                        <xs:documentation>The major version of the schema that an XML instance was created using.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="minorVersion" type="xs:string" minOccurs="0" maxOccurs="1" default="2">
+                    <xs:annotation>
+                        <xs:documentation>The minor version of the schema that an XML instance was created using.
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="transactionId" type="xs:string">
+                    <xs:annotation>
+                        <xs:documentation>Unique identifier of the interaction which this member was interacted with (action invoked/property edited); can be used to locate the corresponding Command object (which may have been persisted).
+                        </xs:documentation>
+                    </xs:annotation>
+                </xs:element>
+                <xs:element name="execution" type="memberExecutionDto"/>
+            </xs:sequence>
+        </xs:complexType>
+
+    </xs:element>
+
+    <xs:complexType name="memberExecutionDto" abstract="true">
+        <xs:annotation>
+            <xs:documentation>Represents either an action invocation or a property edit.  Is subclassed by both.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="sequence" type="xs:int">
+                <xs:annotation>
+                    <xs:documentation>Unique sequence number of an individual member interaction within the overall interaction.  There could be many such member interactions (within a single transaction) for two reasons: either a single top-level interaction could call sub-interactions (by virtue of WrapperFactory), or there may be a bulk action interaction against many targets.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="target" type="com:oidDto">
+                <xs:annotation>
+                    <xs:documentation>For target domain object being interacted with.  For regular actions/properties, represents the entity or view model upon which the action is to be invoked/property edited.  For mixin actions/properties, is the object being mixed-into (the constructor arg to the mixin).  For contributed actions/properties, is the domain service (the contributee object will be one of the action arguments within the payload).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="logicalMemberIdentifier" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>Logical formal identifier (object type, as per @DomainObject(objectType=), and member name) of the member being interacted with (action or property).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="memberIdentifier" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>Formal identifier (class name and member name) of the member being interacted with (action or property).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="user" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>The name of the user that invoked this action.  Note that this isn't necessarily the user that initiated the original command; the SudoService may be being used to temporarily switch the effective user.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="title" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>User-friendly title of the 'target' object.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="metrics" type="metricsDto">
+                <xs:annotation>
+                    <xs:documentation>Profiling metrics capturng the this time/number of objects affected as a result of performing this member interaction (invoke the action, or edit the property).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="threw" type="exceptionDto" minOccurs="0" maxOccurs="1">
+                <xs:annotation>
+                    <xs:documentation>Captures any exception thrown by an action.  Either the 'returned' or the 'threw' element will be populated.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="childExecutions" minOccurs="0" maxOccurs="1">
+                <xs:complexType>
+                    <xs:sequence>
+                        <xs:element name="execution" type="memberExecutionDto" minOccurs="0" maxOccurs="unbounded">
+                            <xs:annotation>
+                                <xs:documentation>Capture interactions with other members from this interaction, using the WrapperFactory service.  Typically this will be actions invoking other actions, but it is also possible for an action to perform a property edit, and - much rarer - for a property edit to invoke an action.  Whatever; these interactions nest together into a call/stack, more generally into a graph.
+                                </xs:documentation>
+                            </xs:annotation>
+                        </xs:element>
+                    </xs:sequence>
+                </xs:complexType>
+            </xs:element>
+        </xs:sequence>
+        <xs:attribute  name="interactionType" type="com:interactionType">
+            <xs:annotation>
+                <xs:documentation>Indicates whether this is an intention to invoke an action, or edit a property.
+                </xs:documentation>
+            </xs:annotation>
+        </xs:attribute>
+    </xs:complexType>
+
+    <xs:complexType name="actionInvocationDto">
+        <xs:complexContent>
+            <xs:extension base="memberExecutionDto">
+                <xs:sequence>
+                    <xs:element name="parameters" type="cmd:paramsDto">
+                        <xs:annotation>
+                            <xs:documentation>The list of parameter/argument values for this action invocation.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                    <xs:element name="returned" type="com:valueWithTypeDto" minOccurs="0" maxOccurs="1">
+                        <xs:annotation>
+                            <xs:documentation>The value returned by this action (including the type of that returned value).  Either the 'returned' or the 'threw' element (from 'memberExecutionDto') will be populated.
+                            </xs:documentation>
+                        </xs:annotation>
+                    </xs:element>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="propertyEditDto">
+        <xs:complexContent>
+            <xs:extension base="memberExecutionDto">
+                <xs:sequence>
+                    <xs:element name="newValue" type="com:valueWithTypeDto"/>
+                </xs:sequence>
+            </xs:extension>
+        </xs:complexContent>
+    </xs:complexType>
+
+    <xs:complexType name="metricsDto">
+        <xs:sequence>
+            <xs:element name="timings" type="com:periodDto">
+                <xs:annotation>
+                    <xs:documentation>The time taken to perform the member interaction (invoke the action, or edit the property).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="objectCounts" type="objectCountsDto">
+                <xs:annotation>
+                    <xs:documentation>How many objets were affected by the member interaction.
+                    </xs:documentation>
+                </xs:annotation>
+
+            </xs:element>
+        </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="objectCountsDto">
+        <xs:sequence>
+            <xs:element name="loaded" type="com:differenceDto">
+                <xs:annotation>
+                    <xs:documentation>The number of objects loaded.
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="dirtied" type="com:differenceDto">
+                <xs:annotation>
+                    <xs:documentation>The number of objects dirtied (ie updated).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+        </xs:sequence>
+
+    </xs:complexType>
+
+    <xs:complexType name="exceptionDto">
+        <xs:annotation>
+            <xs:documentation>Captures any exception thrown by an action invocation.  Use as the xsd:type of the 'threw' element.
+            </xs:documentation>
+        </xs:annotation>
+        <xs:sequence>
+            <xs:element name="message" type="xs:string"/>
+            <xs:element name="stackTrace" type="xs:string">
+                <xs:annotation>
+                    <xs:documentation>A formatted stack trace.  (A future version of the 'exceptionDto' element might refine this to more easily parseable stack trace elements).
+                    </xs:documentation>
+                </xs:annotation>
+            </xs:element>
+            <xs:element name="causedBy" type="exceptionDto" minOccurs="0" maxOccurs="1"/>
+        </xs:sequence>
+    </xs:complexType>
+
+</xs:schema>

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
index 45f226a..0a6022b 100644
--- a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
+++ b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject.java
@@ -56,6 +56,7 @@ import org.apache.isis.core.metamodel.services.ServicesInjector;
 import org.apache.isis.core.metamodel.services.command.CommandDtoServiceInternal;
 import org.apache.isis.core.metamodel.services.persistsession.PersistenceSessionServiceInternal;
 import org.apache.isis.core.metamodel.spec.ObjectSpecId;
+import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.core.metamodel.specloader.specimpl.OneToOneAssociationDefault;
@@ -98,6 +99,8 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     @Mock
     private CommandDtoServiceInternal mockCommandDtoServiceInternal;
     @Mock
+    private ObjectSpecification mockOnType;
+    @Mock
     private SpecificationLoader mockSpecificationLoader;
     @Mock
     private DeploymentCategoryProvider mockDeploymentCategoryProvider;
@@ -395,7 +398,7 @@ public class WrapperFactoryDefaultTest_wrappedObject {
     private FacetedMethod facetedMethodForProperty(
             Method init, Method accessor, Method modify, Method clear, Method hide, Method disable, Method validate) {
         FacetedMethod facetedMethod = FacetedMethod.createForProperty(accessor.getDeclaringClass(), accessor);
-        FacetUtil.addFacet(new PropertyAccessorFacetViaAccessor(accessor, facetedMethod, mockDeploymentCategoryProvider.getDeploymentCategory(),
+        FacetUtil.addFacet(new PropertyAccessorFacetViaAccessor(mockOnType, accessor, facetedMethod, mockDeploymentCategoryProvider.getDeploymentCategory(),
                 mockConfiguration, mockSpecificationLoader,
                 mockAuthenticationSessionProvider, mockAdapterManager
         ));

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
----------------------------------------------------------------------
diff --git a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
index 022c1da..2b2e3d5 100644
--- a/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
+++ b/core/wrapper/src/test/java/org/apache/isis/core/wrapper/WrapperFactoryDefaultTest_wrappedObject_transient.java
@@ -95,6 +95,8 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
     @Mock
     private ObjectAdapter mockEmployeeAdapter;
     @Mock
+    private ObjectSpecificationDefault mockOnType;
+    @Mock
     private ObjectSpecificationDefault mockEmployeeSpec;
     @Mock
     private OneToOneAssociation mockPasswordMember;
@@ -266,7 +268,7 @@ public class WrapperFactoryDefaultTest_wrappedObject_transient {
 
 
         // and given
-        facets = Arrays.asList((Facet)new PropertyAccessorFacetViaAccessor(getPasswordMethod, mockPasswordMember,
+        facets = Arrays.asList((Facet)new PropertyAccessorFacetViaAccessor(mockOnType, getPasswordMethod, mockPasswordMember,
                 mockDeploymentCategoryProvider.getDeploymentCategory(), mockConfiguration, mockSpecificationLoader,
                 mockAuthenticationSessionProvider, mockAdapterManager
         ));

http://git-wip-us.apache.org/repos/asf/isis/blob/1faaa512/example/application/simpleapp/application/src/main/resources/domainapp/application/manifest/isis.properties
----------------------------------------------------------------------
diff --git a/example/application/simpleapp/application/src/main/resources/domainapp/application/manifest/isis.properties b/example/application/simpleapp/application/src/main/resources/domainapp/application/manifest/isis.properties
index e76cd2b..c16a956 100644
--- a/example/application/simpleapp/application/src/main/resources/domainapp/application/manifest/isis.properties
+++ b/example/application/simpleapp/application/src/main/resources/domainapp/application/manifest/isis.properties
@@ -198,6 +198,7 @@ isis.reflector.facet.domainObjectAnnotation.removingLifecycleEvent.postForDefaul
 # - if set to "all", can explicitly disable using @Object(auditing=Auditing.DISABLED)
 #
 #isis.services.audit.objects=all|none
+isis.services.audit.objects=all
 
 
 #
@@ -206,6 +207,7 @@ isis.reflector.facet.domainObjectAnnotation.removingLifecycleEvent.postForDefaul
 # - if set to "all", can explicitly disable using @Object(publishing=Publishing.DISABLED)
 #
 #isis.services.publish.objects=all|none
+isis.services.publish.objects=all
 
 
 #
@@ -214,6 +216,7 @@ isis.reflector.facet.domainObjectAnnotation.removingLifecycleEvent.postForDefaul
 # - if set to "all", can explicitly disable using @Action(command=CommandReification.DISABLED)
 #
 #isis.services.command.actions=all|none|ignoreSafe
+isis.services.command.actions=ignoreSafe
 
 
 #
@@ -222,6 +225,7 @@ isis.reflector.facet.domainObjectAnnotation.removingLifecycleEvent.postForDefaul
 # - if set to "all", can explicitly disable using @Action(publishing=Publishing.DISABLED)
 #
 #isis.services.publish.actions=all|none|ignoreSafe
+isis.services.publish.actions=all
 
 
 #
@@ -230,6 +234,7 @@ isis.reflector.facet.domainObjectAnnotation.removingLifecycleEvent.postForDefaul
 # - if set to "all", can explicitly disable using @Property(publishing=Publishing.DISABLED)
 #
 #isis.services.publish.properties=all|none
+isis.services.publish.properties=all