You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2019/07/18 09:35:13 UTC

[isis] 02/02: ISIS-2154 removes references to the ConcurrencyChecking enum

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

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

commit bc40621c5d0b35e52a515cffa7aebdd5ab459b88
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Jul 18 11:35:00 2019 +0200

    ISIS-2154 removes references to the ConcurrencyChecking enum
---
 .../adapter/ObjectAdapterByIdProvider.java         | 34 +++---------
 .../adapter/concurrency/ConcurrencyChecking.java   |  3 +-
 .../isis/jdo/jdosupport/IsisJdoSupportDN5.java     | 12 ++---
 .../ObjectAdapterMementoSupport_usingLKG.java      |  5 +-
 .../ObjectAdapterMemento_LastKnownGood.java        | 43 +++++++--------
 .../runtime/persistence/adapter/PojoAdapter.java   | 18 +++----
 ...ctAdapterContext_ObjectAdapterByIdProvider.java | 63 +++++++++-------------
 .../transaction/ChangedObjectsServiceInternal.java | 47 ++++++++--------
 .../PersistenceSessionServiceInternalDefault.java  |  5 +-
 .../integration/wicket/WebRequestCycleForIsis.java |  6 ---
 .../wicket/model/mementos/ActionMemento.java       |  8 ---
 .../mementos/ObjectAdapterMemento_Legacy.java      | 28 ----------
 .../viewer/wicket/model/models/ActionModel.java    | 40 +++++++-------
 .../viewer/wicket/model/models/EntityModel.java    | 48 ++++-------------
 .../viewer/wicket/model/models/ScalarModel.java    | 13 +++--
 .../viewer/wicket/model/models/ValueModel.java     |  1 -
 .../actionresponse/ActionResultResponseType.java   | 22 ++------
 .../entityactions/EntityActionLinkFactory.java     |  5 +-
 .../actionmenu/serviceactions/CssMenuItem.java     | 21 ++++----
 .../serviceactions/ServiceActionLinkFactory.java   |  5 +-
 .../collection/AssociatedWithActionsHelper.java    |  1 -
 .../ui/components/collection/CollectionPanel.java  | 12 ++---
 .../CollectionContentsAsAjaxTablePanel.java        | 17 +++---
 .../columns/ObjectAdapterToggleboxColumn.java      | 16 +++---
 .../entity/EntityComponentFactoryAbstract.java     |  7 ++-
 .../entity/icontitle/EntityIconAndTitlePanel.java  | 18 +++----
 .../property/PropertyFormExecutorStrategy.java     | 22 ++------
 .../PropertyEditPromptHeaderPanel.java             | 16 +++---
 .../ui/components/scalars/ScalarPanelAbstract.java | 24 ++++-----
 .../components/scalars/ScalarPanelAbstract2.java   | 34 ++++++------
 .../widgets/breadcrumbs/BreadcrumbPanel.java       | 24 ++++-----
 .../entitysimplelink/EntityLinkSimplePanel.java    | 17 ++----
 .../linkandlabel/ActionLinkFactoryAbstract.java    | 33 ++++--------
 .../isis/viewer/wicket/ui/panels/FormAbstract.java | 41 +-------------
 .../wicket/ui/panels/FormExecutorDefault.java      | 15 +-----
 35 files changed, 241 insertions(+), 483 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapterByIdProvider.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapterByIdProvider.java
index f299081..7a72501 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapterByIdProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/ObjectAdapterByIdProvider.java
@@ -22,7 +22,6 @@ import java.util.Map;
 import java.util.stream.Stream;
 
 import org.apache.isis.applib.annotation.Programmatic;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.adapter.oid.RootOid;
 
 /**
@@ -34,25 +33,13 @@ public interface ObjectAdapterByIdProvider {
     
     // -- INTERFACE
 
-    ObjectAdapter adapterFor(RootOid rootOid, ConcurrencyChecking concurrencyChecking);
-    Map<RootOid, ObjectAdapter> adaptersFor(Stream<RootOid> rootOids, ConcurrencyChecking concurrencyChecking);
-    
-    /**
-     * As per {@link #adapterFor(RootOid, ConcurrencyChecking)}, with
-     * {@link ConcurrencyChecking#NO_CHECK no checking}.
-     *
-     * <p>
+	/**
      * This method  will <i>always</i> return an object, possibly indicating it is persistent; so make sure that you
      * know that the oid does indeed represent an object you know exists.
-     * </p>
      */
-    default ObjectAdapter adapterFor(final RootOid rootOid) {
-        return adapterFor(rootOid, ConcurrencyChecking.NO_CHECK);
-    }
+    ObjectAdapter adapterFor(RootOid rootOid);
     
-    default Map<RootOid, ObjectAdapter> adaptersFor(Stream<RootOid> rootOids) {
-        return adaptersFor(rootOids, ConcurrencyChecking.NO_CHECK);
-    }
+    Map<RootOid, ObjectAdapter> adaptersFor(Stream<RootOid> rootOids);
     
     
     // -- FOR THOSE THAT IMPLEMENT THROUGH DELEGATION
@@ -63,24 +50,17 @@ public interface ObjectAdapterByIdProvider {
         ObjectAdapterByIdProvider getObjectAdapterByIdProvider();
         
         @Programmatic
-        default ObjectAdapter adapterFor(RootOid rootOid, ConcurrencyChecking concurrencyChecking) {
-            return getObjectAdapterByIdProvider().adapterFor(rootOid, concurrencyChecking);
+        default ObjectAdapter adapterFor(RootOid rootOid) {
+            return getObjectAdapterByIdProvider().adapterFor(rootOid);
         }
         
-        
         @Programmatic
-        default Map<RootOid, ObjectAdapter> adaptersFor(Stream<RootOid> rootOids, ConcurrencyChecking concurrencyChecking) {
-            return getObjectAdapterByIdProvider().adaptersFor(rootOids, concurrencyChecking);
+        default Map<RootOid, ObjectAdapter> adaptersFor(Stream<RootOid> rootOids) {
+            return getObjectAdapterByIdProvider().adaptersFor(rootOids);
         }
 
         
     }
-
-
-   
-
-
-    
     
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/concurrency/ConcurrencyChecking.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/concurrency/ConcurrencyChecking.java
index d0007a1..97a37c9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/concurrency/ConcurrencyChecking.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/adapter/concurrency/ConcurrencyChecking.java
@@ -25,7 +25,8 @@ import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.config.IsisConfiguration;
 
-public enum ConcurrencyChecking {
+@Deprecated 
+enum ConcurrencyChecking {
     NO_CHECK,
     CHECK;
 
diff --git a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/jdo/jdosupport/IsisJdoSupportDN5.java b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/jdo/jdosupport/IsisJdoSupportDN5.java
index 25d97a2..4e2be81 100644
--- a/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/jdo/jdosupport/IsisJdoSupportDN5.java
+++ b/core/plugins/jdo-datanucleus-5/src/main/java/org/apache/isis/jdo/jdosupport/IsisJdoSupportDN5.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.jdo.jdosupport;
 
+import static org.apache.isis.commons.internal.base._NullSafe.stream;
+
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
@@ -26,7 +28,6 @@ import java.sql.Statement;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.Callable;
 import java.util.stream.Collectors;
 
 import javax.inject.Singleton;
@@ -41,14 +42,11 @@ import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.adapter.oid.ObjectPersistenceException;
 import org.apache.isis.runtime.system.context.IsisContext;
 import org.apache.isis.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.runtime.system.session.IsisSessionFactory;
 
-import static org.apache.isis.commons.internal.base._NullSafe.stream;
-
 
 /**
  * This service provides a number of utility methods to supplement/support the capabilities of the JDO Objectstore.
@@ -147,12 +145,8 @@ public class IsisJdoSupportDN5 implements IsisJdoSupport_v3_2 {
             final Extent<?> extent = getJdoPersistenceManager().getExtent(pcClass);
             final List<Object> instances = stream(extent).collect(Collectors.toList());
 
-            // temporarily disable concurrency checking while this method is performed
             try {
-                ConcurrencyChecking.executeWithConcurrencyCheckingDisabled((Callable<Void>) () -> {
-                    getJdoPersistenceManager().deletePersistentAll(instances);
-                    return null;
-                });
+            	getJdoPersistenceManager().deletePersistentAll(instances);
             } catch (final Exception ex) {
                 throw new FatalException(ex);
             }
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingLKG.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingLKG.java
index 4890302..23fb9e6 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingLKG.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMementoSupport_usingLKG.java
@@ -23,7 +23,6 @@ import java.util.UUID;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.commons.internal.ioc.BeanSort;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.adapter.oid.RootOid;
 import org.apache.isis.metamodel.spec.ObjectSpecId;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
@@ -112,9 +111,7 @@ implements ObjectAdapterMementoSupport {
 
         @Override
         public ObjectAdapter getObjectAdapter() {
-            return delegate.getObjectAdapter(ConcurrencyChecking.NO_CHECK, 
-                    persistenceSession(), 
-                    specificationLoader());
+            return delegate.getObjectAdapter(persistenceSession(), specificationLoader());
         }
 
         @Override
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMemento_LastKnownGood.java b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMemento_LastKnownGood.java
index f19475d..28295e1 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMemento_LastKnownGood.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/memento/ObjectAdapterMemento_LastKnownGood.java
@@ -33,11 +33,10 @@ import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.adapter.oid.ObjectNotFoundException;
 import org.apache.isis.metamodel.adapter.oid.Oid;
-import org.apache.isis.metamodel.adapter.oid.RootOid;
 import org.apache.isis.metamodel.adapter.oid.Oid.Factory;
+import org.apache.isis.metamodel.adapter.oid.RootOid;
 import org.apache.isis.metamodel.facets.object.encodeable.EncodableFacet;
 import org.apache.isis.metamodel.spec.ObjectSpecId;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
@@ -115,10 +114,9 @@ public class ObjectAdapterMemento_LastKnownGood implements Serializable {
             @Override
             public ObjectAdapter asAdapter(
                     final ObjectAdapterMemento_LastKnownGood oam,
-                    final ConcurrencyChecking concurrencyChecking,
                     final PersistenceSession persistenceSession,
                     final SpecificationLoader specificationLoader) {
-                return oam.type.getAdapter(oam, concurrencyChecking, persistenceSession, specificationLoader);
+                return oam.type.getAdapter(oam, persistenceSession, specificationLoader);
             }
 
             @Override
@@ -151,7 +149,7 @@ public class ObjectAdapterMemento_LastKnownGood implements Serializable {
             @Override
             public ObjectAdapter asAdapter(
                     final ObjectAdapterMemento_LastKnownGood oam,
-                    final ConcurrencyChecking concurrencyChecking, final PersistenceSession persistenceSession,
+                    final PersistenceSession persistenceSession,
                     final SpecificationLoader specificationLoader) {
                 final List<Object> listOfPojos =
                         _Lists.map(oam.list, Functions.toPojo(persistenceSession, specificationLoader));
@@ -191,7 +189,7 @@ public class ObjectAdapterMemento_LastKnownGood implements Serializable {
 
         public abstract ObjectAdapter asAdapter(
                 final ObjectAdapterMemento_LastKnownGood oam,
-                final ConcurrencyChecking concurrencyChecking, final PersistenceSession persistenceSession,
+                final PersistenceSession persistenceSession,
                 final SpecificationLoader specificationLoader);
 
         public abstract int hashCode(final ObjectAdapterMemento_LastKnownGood oam);
@@ -211,7 +209,6 @@ public class ObjectAdapterMemento_LastKnownGood implements Serializable {
             @Override
             ObjectAdapter recreateAdapter(
                     final ObjectAdapterMemento_LastKnownGood oam,
-                    final ConcurrencyChecking concurrencyChecking,
                     final PersistenceSession persistenceSession,
                     final SpecificationLoader specificationLoader) {
                 ObjectSpecId objectSpecId = oam.objectSpecId;
@@ -249,11 +246,11 @@ public class ObjectAdapterMemento_LastKnownGood implements Serializable {
             @Override
             ObjectAdapter recreateAdapter(
                     final ObjectAdapterMemento_LastKnownGood oam,
-                    ConcurrencyChecking concurrencyChecking,
-                    final PersistenceSession persistenceSession, final SpecificationLoader specificationLoader) {
+                    final PersistenceSession persistenceSession, 
+                    final SpecificationLoader specificationLoader) {
                 RootOid oid = Oid.unmarshaller().unmarshal(oam.persistentOidStr, RootOid.class);
                 try {
-                    final ObjectAdapter adapter = persistenceSession.adapterFor(oid, concurrencyChecking);
+                    final ObjectAdapter adapter = persistenceSession.adapterFor(oid);
                     return adapter;
 
                 } finally {
@@ -273,7 +270,7 @@ public class ObjectAdapterMemento_LastKnownGood implements Serializable {
                     final SpecificationLoader specificationLoader) {
                 // REVIEW: this may be redundant because recreateAdapter also guarantees the version will be reset.
                 final ObjectAdapter adapter = recreateAdapter(
-                        oam, ConcurrencyChecking.NO_CHECK, persistenceSession, specificationLoader);
+                        oam, persistenceSession, specificationLoader);
                 Oid oid = adapter.getOid();
                 oam.persistentOidStr = oid.enString();
             }
@@ -305,8 +302,8 @@ public class ObjectAdapterMemento_LastKnownGood implements Serializable {
             @Override
             ObjectAdapter recreateAdapter(
                     final ObjectAdapterMemento_LastKnownGood oam,
-                    final ConcurrencyChecking concurrencyChecking,
-                    final PersistenceSession persistenceSession, final SpecificationLoader specificationLoader) {
+                    final PersistenceSession persistenceSession, 
+                    final SpecificationLoader specificationLoader) {
                 return oam.transientMemento.recreateObject();
             }
 
@@ -334,16 +331,15 @@ public class ObjectAdapterMemento_LastKnownGood implements Serializable {
 
         public ObjectAdapter getAdapter(
                 final ObjectAdapterMemento_LastKnownGood nom,
-                final ConcurrencyChecking concurrencyChecking,
                 final PersistenceSession persistenceSession,
                 final SpecificationLoader specificationLoader) {
-            return recreateAdapter(nom, concurrencyChecking, persistenceSession, specificationLoader);
+            return recreateAdapter(nom, persistenceSession, specificationLoader);
         }
 
         abstract ObjectAdapter recreateAdapter(
                 final ObjectAdapterMemento_LastKnownGood nom,
-                final ConcurrencyChecking concurrencyChecking,
-                final PersistenceSession persistenceSession, final SpecificationLoader specificationLoader);
+                final PersistenceSession persistenceSession, 
+                final SpecificationLoader specificationLoader);
 
         public abstract boolean equals(ObjectAdapterMemento_LastKnownGood oam, ObjectAdapterMemento_LastKnownGood other);
         public abstract int hashCode(ObjectAdapterMemento_LastKnownGood ObjectAdapterMemento_LastKnownGood);
@@ -531,10 +527,9 @@ public class ObjectAdapterMemento_LastKnownGood implements Serializable {
      * can call {@link #setAdapter(ObjectAdapter)} to keep this memento in sync.
      */
     public ObjectAdapter getObjectAdapter(
-            final ConcurrencyChecking concurrencyChecking,
             final PersistenceSession persistenceSession,
             final SpecificationLoader specificationLoader) {
-        return sort.asAdapter(this, concurrencyChecking, persistenceSession, specificationLoader);
+        return sort.asAdapter(this, persistenceSession, specificationLoader);
     }
 
     /**
@@ -564,14 +559,13 @@ public class ObjectAdapterMemento_LastKnownGood implements Serializable {
 
         // REVIEW: heavy handed, ought to be possible to just compare the OIDs
         // ignoring the concurrency checking
-        final ObjectAdapter currAdapter = getObjectAdapter(ConcurrencyChecking.NO_CHECK, persistenceSession,
+        final ObjectAdapter currAdapter = getObjectAdapter(persistenceSession,
                 specificationLoader);
         for (ObjectAdapterMemento_LastKnownGood each : list) {
             if(each == null) {
                 continue;
             }
-            final ObjectAdapter otherAdapter = each.getObjectAdapter(
-                    ConcurrencyChecking.NO_CHECK, persistenceSession, specificationLoader);
+            final ObjectAdapter otherAdapter = each.getObjectAdapter(persistenceSession, specificationLoader);
             if(currAdapter == otherAdapter) {
                 return true;
             }
@@ -627,13 +621,12 @@ public class ObjectAdapterMemento_LastKnownGood implements Serializable {
         }
 
         public static Function<ObjectAdapterMemento_LastKnownGood, ObjectAdapter> fromMemento(
-                final ConcurrencyChecking concurrencyChecking,
                 final PersistenceSession persistenceSession,
                 final SpecificationLoader specificationLoader) {
 
             return memento->{
                 try {
-                    return memento.getObjectAdapter(concurrencyChecking, persistenceSession, specificationLoader);
+                    return memento.getObjectAdapter(persistenceSession, specificationLoader);
                 } catch (ObjectNotFoundException e) {
                     // this can happen if for example the object is not visible (due to the security tenanted facet)
                     return null;
@@ -654,7 +647,7 @@ public class ObjectAdapterMemento_LastKnownGood implements Serializable {
                     return null;
                 }
                 final ObjectAdapter objectAdapter = input
-                        .getObjectAdapter(ConcurrencyChecking.NO_CHECK, persistenceSession, specificationLoader);
+                        .getObjectAdapter(persistenceSession, specificationLoader);
                 if(objectAdapter == null) {
                     return null;
                 }
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/persistence/adapter/PojoAdapter.java b/core/runtime/src/main/java/org/apache/isis/runtime/persistence/adapter/PojoAdapter.java
index 63fe382..bf191fc 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/persistence/adapter/PojoAdapter.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/persistence/adapter/PojoAdapter.java
@@ -19,6 +19,8 @@
 
 package org.apache.isis.runtime.persistence.adapter;
 
+import static org.apache.isis.commons.internal.base._With.requires;
+
 import java.io.Serializable;
 import java.util.Objects;
 import java.util.UUID;
@@ -26,11 +28,9 @@ import java.util.UUID;
 import org.apache.isis.commons.exceptions.IsisException;
 import org.apache.isis.commons.internal.base._Lazy;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.adapter.oid.Oid;
 import org.apache.isis.metamodel.adapter.oid.ParentedOid;
 import org.apache.isis.metamodel.adapter.oid.RootOid;
-import org.apache.isis.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.metamodel.adapter.version.Version;
 import org.apache.isis.metamodel.commons.ToString;
 import org.apache.isis.metamodel.spec.ObjectSpecId;
@@ -40,8 +40,6 @@ import org.apache.isis.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.runtime.system.session.IsisSession;
 import org.apache.isis.security.authentication.AuthenticationSession;
 
-import static org.apache.isis.commons.internal.base._With.requires;
-
 import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
@@ -232,13 +230,13 @@ public final class PojoAdapter implements ObjectAdapter {
                 otherVersion != null &&
                 thisVersion.different(otherVersion)) {
 
-            if(ConcurrencyChecking.isCurrentlyEnabled()) {
-                log.info("concurrency conflict detected on {} ({})", thisOid, otherVersion);
-                final String currentUser = authenticationSession.getUserName();
-                throw new ConcurrencyException(currentUser, thisOid, thisVersion, otherVersion);
-            } else {
+//            if(ConcurrencyChecking.isCurrentlyEnabled()) {
+//                log.info("concurrency conflict detected on {} ({})", thisOid, otherVersion);
+//                final String currentUser = authenticationSession.getUserName();
+//                throw new ConcurrencyException(currentUser, thisOid, thisVersion, otherVersion);
+//            } else {
                 log.info("concurrency conflict detected but suppressed, on {} ({})", thisOid, otherVersion );
-            }
+//            }
         }
     }
 
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterByIdProvider.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterByIdProvider.java
index 89d36bb..c31b63b 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterByIdProvider.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/persistence/adaptermanager/ObjectAdapterContext_ObjectAdapterByIdProvider.java
@@ -27,7 +27,6 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.adapter.ObjectAdapterByIdProvider;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.adapter.oid.ObjectNotFoundException;
 import org.apache.isis.metamodel.adapter.oid.Oid;
 import org.apache.isis.metamodel.adapter.oid.PojoRecreationException;
@@ -37,7 +36,6 @@ import org.apache.isis.metamodel.adapter.version.Version;
 import org.apache.isis.metamodel.facets.object.viewmodel.ViewModelFacet;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.runtime.persistence.adapter.PojoAdapter;
 import org.apache.isis.runtime.system.context.session.RuntimeContext;
 import org.apache.isis.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.security.authentication.AuthenticationSession;
@@ -58,8 +56,6 @@ class ObjectAdapterContext_ObjectAdapterByIdProvider implements ObjectAdapterByI
     private final PersistenceSession persistenceSession;
     private final SpecificationLoader specificationLoader;
     private final AuthenticationSession authenticationSession;
-    private final boolean concurrencyCheckingGloballyEnabled;
-    
     
     ObjectAdapterContext_ObjectAdapterByIdProvider(
             ObjectAdapterContext objectAdapterContext,
@@ -70,9 +66,7 @@ class ObjectAdapterContext_ObjectAdapterByIdProvider implements ObjectAdapterByI
         this.persistenceSession = persistenceSession;
         this.specificationLoader = runtimeContext.getSpecificationLoader();
         this.authenticationSession = runtimeContext.getAuthenticationSession();
-        
-        this.concurrencyCheckingGloballyEnabled = 
-                !ConcurrencyChecking.isGloballyDisabled(persistenceSession.getConfiguration());
+
     }
     
     /**
@@ -103,9 +97,7 @@ class ObjectAdapterContext_ObjectAdapterByIdProvider implements ObjectAdapterByI
      * @throws {@link org.apache.isis.metamodel.adapter.oid.ObjectNotFoundException} if the object does not exist.
      */
     @Override
-    public ObjectAdapter adapterFor(
-            final RootOid rootOid,
-            final ConcurrencyChecking concurrencyChecking) {
+    public ObjectAdapter adapterFor(final RootOid rootOid) {
                 
         /* FIXME[ISIS-1976] SPI for adapterFor(RootOid)
          * https://github.com/apache/isis/pull/121#discussion_r215889748
@@ -151,16 +143,14 @@ class ObjectAdapterContext_ObjectAdapterByIdProvider implements ObjectAdapterByI
         }
 
         // sync versions of original, with concurrency checking if required
-        syncVersion(concurrencyChecking, adapter, rootOid);
+        syncVersion(adapter, rootOid);
 
         return adapter;
         
     }
     
     @Override
-    public Map<RootOid,ObjectAdapter> adaptersFor(
-            final Stream<RootOid> rootOids,
-            final ConcurrencyChecking concurrencyChecking) {
+    public Map<RootOid,ObjectAdapter> adaptersFor(final Stream<RootOid> rootOids) {
 
         final Map<RootOid, ObjectAdapter> adapterByOid = _Maps.newLinkedHashMap();
 
@@ -173,7 +163,7 @@ class ObjectAdapterContext_ObjectAdapterByIdProvider implements ObjectAdapterByI
             if (rootOid.isTransient() || rootOid.isViewModel()) {
                 final Object pojo = recreatePojoTransientOrViewModel(rootOid);
                 adapter = objectAdapterContext.recreatePojo(rootOid, pojo);
-                syncVersion(concurrencyChecking, adapter, rootOid);
+                syncVersion(adapter, rootOid);
             }
             if (adapter != null) {
                 adapterByOid.put(rootOid, adapter);
@@ -198,7 +188,7 @@ class ObjectAdapterContext_ObjectAdapterByIdProvider implements ObjectAdapterByI
                 } catch(RuntimeException ex) {
                     throw new PojoRecreationException(rootOid, ex);
                 }
-                syncVersion(concurrencyChecking, adapter, rootOid);
+                syncVersion(adapter, rootOid);
             } else {
                 // null indicates it couldn't be loaded
                 // do nothing here...
@@ -242,9 +232,8 @@ class ObjectAdapterContext_ObjectAdapterByIdProvider implements ObjectAdapterByI
         return viewModelPojo;
     }
     
-    private void syncVersion(
-            final ConcurrencyChecking concurrencyChecking,
-            final ObjectAdapter adapter, final RootOid rootOid) {
+    @Deprecated // no-op
+    private void syncVersion(final ObjectAdapter adapter, final RootOid rootOid) {
         // sync versions of original, with concurrency checking if required
         Oid adapterOid = adapter.getOid();
         if(adapterOid instanceof RootOid) {
@@ -252,24 +241,24 @@ class ObjectAdapterContext_ObjectAdapterByIdProvider implements ObjectAdapterByI
             final RootOid originalOid = rootOid;
 
             try {
-                if(concurrencyChecking.isChecking()) {
-
-                    // check for exception, but don't throw if suppressed through thread-local
-                    final Version otherVersion = originalOid.getVersion();
-                    final Version thisVersion = recreatedOid.getVersion();
-                    if( thisVersion != null &&
-                            otherVersion != null &&
-                            thisVersion.different(otherVersion)) {
-
-                        if(concurrencyCheckingGloballyEnabled && ConcurrencyChecking.isCurrentlyEnabled()) {
-                            log.info("concurrency conflict detected on {} ({})", recreatedOid, otherVersion);
-                            final String currentUser = authenticationSession.getUserName();
-                            throw new ConcurrencyException(currentUser, recreatedOid, thisVersion, otherVersion);
-                        } else {
-                            log.info("concurrency conflict detected but suppressed, on {} ({})", recreatedOid, otherVersion);
-                        }
-                    }
-                }
+//                if(concurrencyChecking.isChecking()) {
+//
+//                    // check for exception, but don't throw if suppressed through thread-local
+//                    final Version otherVersion = originalOid.getVersion();
+//                    final Version thisVersion = recreatedOid.getVersion();
+//                    if( thisVersion != null &&
+//                            otherVersion != null &&
+//                            thisVersion.different(otherVersion)) {
+//
+//                        if(concurrencyCheckingGloballyEnabled && ConcurrencyChecking.isCurrentlyEnabled()) {
+//                            log.info("concurrency conflict detected on {} ({})", recreatedOid, otherVersion);
+//                            final String currentUser = authenticationSession.getUserName();
+//                            throw new ConcurrencyException(currentUser, recreatedOid, thisVersion, otherVersion);
+//                        } else {
+//                            log.info("concurrency conflict detected but suppressed, on {} ({})", recreatedOid, otherVersion);
+//                        }
+//                    }
+//                }
             } finally {
                 final Version originalVersion = originalOid.getVersion();
                 final Version recreatedVersion = recreatedOid.getVersion();
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/ChangedObjectsServiceInternal.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/ChangedObjectsServiceInternal.java
index cbaeaf5..f4b23f2 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/ChangedObjectsServiceInternal.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/ChangedObjectsServiceInternal.java
@@ -35,7 +35,6 @@ import org.apache.isis.applib.services.WithTransactionScope;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.spec.feature.Contributed;
 import org.apache.isis.metamodel.spec.feature.ObjectAssociation;
@@ -201,35 +200,35 @@ public class ChangedObjectsServiceInternal implements WithTransactionScope {
     }
 
     private Set<Map.Entry<AdapterAndProperty, PreAndPostValues>> capturePostValuesAndDrain(final Map<AdapterAndProperty, PreAndPostValues> changedObjectProperties) {
-        return ConcurrencyChecking.executeWithConcurrencyCheckingDisabled(() -> {
-            final Map<AdapterAndProperty, PreAndPostValues> processedObjectProperties = _Maps.newLinkedHashMap();
 
-            while(!changedObjectProperties.isEmpty()) {
+    	final Map<AdapterAndProperty, PreAndPostValues> processedObjectProperties = _Maps.newLinkedHashMap();
 
-                final Set<AdapterAndProperty> keys = _Sets.newLinkedHashSet(changedObjectProperties.keySet());
-                for (final AdapterAndProperty aap : keys) {
+    	while(!changedObjectProperties.isEmpty()) {
 
-                    final PreAndPostValues papv = changedObjectProperties.remove(aap);
+    		final Set<AdapterAndProperty> keys = _Sets.newLinkedHashSet(changedObjectProperties.keySet());
+    		for (final AdapterAndProperty aap : keys) {
 
-                    final ObjectAdapter adapter = aap.getAdapter();
-                    if(adapter.isDestroyed()) {
-                        // don't touch the object!!!
-                        // JDO, for example, will complain otherwise...
-                        papv.setPost(IsisTransaction.Placeholder.DELETED);
-                    } else {
-                        papv.setPost(aap.getPropertyValue());
-                    }
+    			final PreAndPostValues papv = changedObjectProperties.remove(aap);
 
-                    // if we encounter the same objectProperty again, this will simply overwrite it
-                    processedObjectProperties.put(aap, papv);
-                }
-            }
+    			final ObjectAdapter adapter = aap.getAdapter();
+    			if(adapter.isDestroyed()) {
+    				// don't touch the object!!!
+    				// JDO, for example, will complain otherwise...
+    				papv.setPost(IsisTransaction.Placeholder.DELETED);
+    			} else {
+    				papv.setPost(aap.getPropertyValue());
+    			}
+
+    			// if we encounter the same objectProperty again, this will simply overwrite it
+    			processedObjectProperties.put(aap, papv);
+    		}
+    	}
+
+    	return Collections.unmodifiableSet(
+    			processedObjectProperties.entrySet().stream()
+    			.filter(PreAndPostValues.Predicates.SHOULD_AUDIT)
+    			.collect(Collectors.toSet())    );
 
-            return Collections.unmodifiableSet(
-                    processedObjectProperties.entrySet().stream()
-                    .filter(PreAndPostValues.Predicates.SHOULD_AUDIT)
-                    .collect(Collectors.toSet())    );
-        });
     }
 
     protected boolean shouldIgnore(final ObjectAdapter adapter) {
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/PersistenceSessionServiceInternalDefault.java b/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/PersistenceSessionServiceInternalDefault.java
index 500d1e1..855f2a1 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/PersistenceSessionServiceInternalDefault.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/system/transaction/PersistenceSessionServiceInternalDefault.java
@@ -37,7 +37,6 @@ import org.apache.isis.applib.services.xactn.Transaction;
 import org.apache.isis.applib.services.xactn.TransactionState;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
 import org.apache.isis.metamodel.adapter.ObjectAdapterProvider;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.adapter.oid.Oid;
 import org.apache.isis.metamodel.adapter.oid.Oid.Factory;
 import org.apache.isis.metamodel.adapter.oid.RootOid;
@@ -87,7 +86,7 @@ implements PersistenceSessionServiceInternal {
         final boolean denyRefresh = fieldResetPolicy == BookmarkService.FieldResetPolicy.DONT_REFRESH; 
                         
         if(rootOid.isViewModel()) {
-            final ObjectAdapter adapter = ps.adapterFor(rootOid, ConcurrencyChecking.NO_CHECK);
+            final ObjectAdapter adapter = ps.adapterFor(rootOid);
             final Object pojo = mapIfPresentElse(adapter, ObjectAdapter::getPojo, null);
             
             return pojo;
@@ -98,7 +97,7 @@ implements PersistenceSessionServiceInternal {
             return pojo;            
             
         } else {
-            final ObjectAdapter adapter = ps.adapterFor(rootOid, ConcurrencyChecking.NO_CHECK);
+            final ObjectAdapter adapter = ps.adapterFor(rootOid);
             
             final Object pojo = mapIfPresentElse(adapter, ObjectAdapter::getPojo, null);
             acceptIfPresent(pojo, ps::refreshRootInTransaction);
diff --git a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
index 0679d08..f3dd078 100644
--- a/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
+++ b/core/viewer-wicket-impl/src/main/java/org/apache/isis/viewer/wicket/viewer/integration/wicket/WebRequestCycleForIsis.java
@@ -36,7 +36,6 @@ import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.plugins.ioc.RequestContextHandle;
 import org.apache.isis.commons.internal.plugins.ioc.RequestContextService;
 import org.apache.isis.commons.internal.plugins.ioc.RequestContextServiceDefault;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.spec.feature.ObjectMember;
 import org.apache.isis.metamodel.specloader.validator.MetaModelInvalidException;
 import org.apache.isis.runtime.system.context.IsisContext;
@@ -135,7 +134,6 @@ public class WebRequestCycleForIsis implements IRequestCycleListener {
         	log.debug("onRequestHandlerResolved in");
 
             if(handler instanceof RenderPageRequestHandler) {
-                ConcurrencyChecking.disable();
 
                 val metaModelDeficiencies = IsisContext.getMetaModelDeficienciesIfAny();
 
@@ -163,10 +161,6 @@ public class WebRequestCycleForIsis implements IRequestCycleListener {
         public void onRequestHandlerExecuted(RequestCycle cycle, IRequestHandler handler) {
             log.debug("onRequestHandlerExecuted: handler: {}", handler);
 
-            if(handler instanceof RenderPageRequestHandler) {
-                ConcurrencyChecking.reset(ConcurrencyChecking.CHECK);
-            }
-
             try {
 
                 IsisRequestCycle.onRequestHandlerExecuted();
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ActionMemento.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ActionMemento.java
index 347fd48..c1f28db 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ActionMemento.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ActionMemento.java
@@ -21,8 +21,6 @@ package org.apache.isis.viewer.wicket.model.mementos;
 
 import java.io.Serializable;
 
-import org.apache.isis.applib.annotation.SemanticsOf;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.spec.ActionType;
 import org.apache.isis.metamodel.spec.ObjectSpecId;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
@@ -39,7 +37,6 @@ public class ActionMemento implements Serializable {
     private final ObjectSpecId owningType;
     private final ActionType actionType;
     private final String nameParmsId;
-    private final SemanticsOf actionSemantics;
 
     private transient ObjectAction action;
 
@@ -64,7 +61,6 @@ public class ActionMemento implements Serializable {
         this.actionType = actionType;
         this.nameParmsId = nameParmsId;
         this.action = action;
-        this.actionSemantics = action.getSemantics();
     }
 
     public ObjectSpecId getOwningType() {
@@ -79,10 +75,6 @@ public class ActionMemento implements Serializable {
         return nameParmsId;
     }
 
-    public ConcurrencyChecking getConcurrencyChecking() {
-        return ConcurrencyChecking.concurrencyCheckingFor(this.actionSemantics);
-    }
-
     public ObjectAction getAction(final SpecificationLoader specificationLoader) {
         if (action == null) {
             action = actionFor(owningType, actionType, nameParmsId, specificationLoader);
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento_Legacy.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento_Legacy.java
index ed7938a..cb22f41 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento_Legacy.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/mementos/ObjectAdapterMemento_Legacy.java
@@ -19,34 +19,6 @@
 
 package org.apache.isis.viewer.wicket.model.mementos;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import javax.annotation.Nullable;
-
-import org.apache.isis.applib.services.bookmark.Bookmark;
-import org.apache.isis.applib.services.hint.HintStore;
-import org.apache.isis.commons.internal.base._NullSafe;
-import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.commons.internal.exceptions._Exceptions;
-import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
-import org.apache.isis.metamodel.adapter.oid.Oid;
-import org.apache.isis.metamodel.adapter.oid.RootOid;
-import org.apache.isis.metamodel.facets.object.encodeable.EncodableFacet;
-import org.apache.isis.metamodel.spec.ObjectSpecId;
-import org.apache.isis.metamodel.spec.ObjectSpecification;
-import org.apache.isis.metamodel.specloader.SpecificationLoader;
-import org.apache.isis.runtime.memento.Memento;
-import org.apache.isis.runtime.memento.ObjectAdapterMemento;
-import org.apache.isis.runtime.system.context.IsisContext;
-
-import static org.apache.isis.commons.internal.base._With.requires;
-
-import lombok.val;
-
 final class ObjectAdapterMemento_Legacy /*implements ObjectAdapterMemento*/ {
 
 //	private static final long serialVersionUID = 1L;
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
index e2648c4..c26891d 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ActionModel.java
@@ -42,7 +42,6 @@ import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.adapter.oid.Oid;
 import org.apache.isis.metamodel.adapter.oid.RootOid;
 import org.apache.isis.metamodel.consent.Consent;
@@ -116,27 +115,30 @@ public class ActionModel extends BookmarkableModel<ObjectAdapter> implements For
      * see {@link #ActionModel(PageParameters, SpecificationLoader)}
      */
     public static PageParameters createPageParameters(
-            final ObjectAdapter adapter, final ObjectAction objectAction, final ConcurrencyChecking concurrencyChecking) {
+            final ObjectAdapter adapter, final ObjectAction objectAction) {
 
         final PageParameters pageParameters = PageParametersUtils.newPageParameters();
 
-        final String oidStr = concurrencyChecking == ConcurrencyChecking.CHECK?
-                adapter.getOid().enString():
-                    adapter.getOid().enStringNoVersion();
-                PageParameterNames.OBJECT_OID.addStringTo(pageParameters, oidStr);
+//        final String oidStr = concurrencyChecking == ConcurrencyChecking.CHECK?
+//                adapter.getOid().enString():
+//                    adapter.getOid().enStringNoVersion();
+        
+        val oidStr = adapter.getOid().enStringNoVersion();
+                
+        PageParameterNames.OBJECT_OID.addStringTo(pageParameters, oidStr);
 
-                final ActionType actionType = objectAction.getType();
-                PageParameterNames.ACTION_TYPE.addEnumTo(pageParameters, actionType);
+        final ActionType actionType = objectAction.getType();
+        PageParameterNames.ACTION_TYPE.addEnumTo(pageParameters, actionType);
 
-                final ObjectSpecification actionOnTypeSpec = objectAction.getOnType();
-                if (actionOnTypeSpec != null) {
-                    PageParameterNames.ACTION_OWNING_SPEC.addStringTo(pageParameters, actionOnTypeSpec.getFullIdentifier());
-                }
+        final ObjectSpecification actionOnTypeSpec = objectAction.getOnType();
+        if (actionOnTypeSpec != null) {
+            PageParameterNames.ACTION_OWNING_SPEC.addStringTo(pageParameters, actionOnTypeSpec.getFullIdentifier());
+        }
 
-                final String actionId = determineActionId(objectAction);
-                PageParameterNames.ACTION_ID.addStringTo(pageParameters, actionId);
+        final String actionId = determineActionId(objectAction);
+        PageParameterNames.ACTION_ID.addStringTo(pageParameters, actionId);
 
-                return pageParameters;
+        return pageParameters;
     }
 
 
@@ -189,7 +191,7 @@ public class ActionModel extends BookmarkableModel<ObjectAdapter> implements For
         final ObjectAdapter adapter = getTargetAdapter();
         final ObjectAction objectAction = getAction();
         final PageParameters pageParameters = createPageParameters(
-                adapter, objectAction, ConcurrencyChecking.NO_CHECK);
+                adapter, objectAction);
 
         // capture argument values
         final ObjectAdapter[] argumentsAsArray = getArgumentsAsArray();
@@ -421,11 +423,7 @@ public class ActionModel extends BookmarkableModel<ObjectAdapter> implements For
     }
 
     public ObjectAdapter getTargetAdapter() {
-        return entityModel.load(getConcurrencyChecking());
-    }
-
-    protected ConcurrencyChecking getConcurrencyChecking() {
-        return actionMemento.getConcurrencyChecking();
+        return entityModel.load();
     }
 
     public ActionMemento getActionMemento() {
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
index 2a6d8c9..247274e 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/EntityModel.java
@@ -22,17 +22,11 @@ package org.apache.isis.viewer.wicket.model.models;
 import java.io.Serializable;
 import java.util.Map;
 
-import org.apache.wicket.Component;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-
 import org.apache.isis.applib.annotation.BookmarkPolicy;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.layout.component.CollectionLayoutData;
 import org.apache.isis.commons.internal.collections._Maps;
-import org.apache.isis.commons.internal.debug._Probe;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.adapter.oid.Oid;
 import org.apache.isis.metamodel.adapter.oid.RootOid;
 import org.apache.isis.metamodel.adapter.version.ConcurrencyException;
@@ -42,14 +36,14 @@ import org.apache.isis.metamodel.spec.ObjectSpecId;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.runtime.memento.ObjectAdapterMemento;
-import org.apache.isis.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.common.PageParametersUtils;
 import org.apache.isis.viewer.wicket.model.hints.UiHintContainer;
 import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
 import org.apache.isis.viewer.wicket.model.mementos.PropertyMemento;
 import org.apache.isis.viewer.wicket.model.util.ComponentHintKey;
-
-import lombok.val;
+import org.apache.wicket.Component;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
 
 /**
  * Backing model to represent a {@link ObjectAdapter}.
@@ -323,35 +317,9 @@ implements ObjectAdapterModel, UiHintContainer {
     // //////////////////////////////////////////////////////////
     // loadObject, load, setObject
     // //////////////////////////////////////////////////////////
-
-    private final static _Probe probe = _Probe.unlimited().label("EntityModel");
     
     /**
-     * Not Wicket API, but used by <tt>EntityPage</tt> to do eager loading
-     * when rendering after post-and-redirect.
-     * @return
-     */
-    @Deprecated //TODO [2033] remove ?
-    public ObjectAdapter load(ConcurrencyChecking concurrencyChecking) {
-        
-        if(concurrencyChecking==ConcurrencyChecking.CHECK && adapterMemento!=null) {
-            val spec = IsisContext.getSpecificationLoader().lookupBySpecIdElseLoad(adapterMemento.getObjectSpecId());
-            if(spec.isEntity()) {
-                val info = "adapterMemento '"+adapterMemento+"'";
-                probe.warnNotImplementedYet("[2033] ConcurrencyChecking no longer supported!? "+info);              
-            }
-        }
-        
-        return load();
-    }
-
-    /**
-     * Callback from {@link #getObject()}, defaults to loading the object
-     * using {@link ConcurrencyChecking#CHECK strict} checking.
-     *
-     * <p>
-     * If non-strict checking is required, then just call {@link #load(ConcurrencyChecking)} with an
-     * argument of {@link ConcurrencyChecking#NO_CHECK} first.
+     * Callback from {@link #getObject()}.
      */
     @Override
     public ObjectAdapter load() {
@@ -361,7 +329,11 @@ implements ObjectAdapterModel, UiHintContainer {
         final ObjectAdapter objectAdapter = adapterMemento.getObjectAdapter();
         return objectAdapter;
     }
-
+    
+    @Deprecated //removed with ISIS-2154
+	public ObjectAdapter loadWithConcurrencyChecking() {
+		return load();
+	}
 
     @Override
     public void setObject(final ObjectAdapter adapter) {
@@ -650,4 +622,6 @@ implements ObjectAdapterModel, UiHintContainer {
 
 
 
+
+
 }
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
index aedd02a..2448ad8 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ScalarModel.java
@@ -30,7 +30,6 @@ import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.metamodel.consent.Consent;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
@@ -191,7 +190,7 @@ public class ScalarModel extends EntityModel implements LinksProvider, FormExecu
                 
                 final PropertyMemento propertyMemento = scalarModel.getPropertyMemento();
                 final OneToOneAssociation property = propertyMemento.getProperty(scalarModel.getSpecificationLoader());
-                ObjectAdapter parentAdapter = scalarModel.getParentEntityModel().load(ConcurrencyChecking.NO_CHECK);
+                ObjectAdapter parentAdapter = scalarModel.getParentEntityModel().load();
                 return property.getDefault(parentAdapter);
             }
 
@@ -210,7 +209,7 @@ public class ScalarModel extends EntityModel implements LinksProvider, FormExecu
                 
                 final PropertyMemento propertyMemento = scalarModel.getPropertyMemento();
                 final OneToOneAssociation property = propertyMemento.getProperty(scalarModel.getSpecificationLoader());
-                ObjectAdapter parentAdapter = scalarModel.getParentEntityModel().load(ConcurrencyChecking.NO_CHECK);
+                ObjectAdapter parentAdapter = scalarModel.getParentEntityModel().load();
                 final ObjectAdapter[] choices = property.getChoices(
                         parentAdapter,
                         InteractionInitiatedBy.USER);
@@ -234,7 +233,7 @@ public class ScalarModel extends EntityModel implements LinksProvider, FormExecu
                 final PropertyMemento propertyMemento = scalarModel.getPropertyMemento();
                 final OneToOneAssociation property = propertyMemento.getProperty(scalarModel.getSpecificationLoader());
                 final ObjectAdapter parentAdapter =
-                        scalarModel.getParentEntityModel().load(ConcurrencyChecking.NO_CHECK);
+                        scalarModel.getParentEntityModel().load();
                 final ObjectAdapter[] choices =
                         property.getAutoComplete(
                                 parentAdapter, searchArg,
@@ -469,7 +468,7 @@ public class ScalarModel extends EntityModel implements LinksProvider, FormExecu
                 final ObjectActionParameter actionParameter = parameterMemento.getActionParameter(scalarModel.getSpecificationLoader());
 
                 final ObjectAdapter parentAdapter =
-                        scalarModel.getParentEntityModel().load(ConcurrencyChecking.NO_CHECK);
+                        scalarModel.getParentEntityModel().load();
                 final ObjectAdapter[] choices = actionParameter.getAutoComplete(
                         parentAdapter, searchArg,
                         InteractionInitiatedBy.USER);
@@ -542,7 +541,7 @@ public class ScalarModel extends EntityModel implements LinksProvider, FormExecu
                 final ObjectActionParameter actionParameter = scalarModel.parameterMemento.getActionParameter(
                         scalarModel.getSpecificationLoader());
                 final ObjectAdapter parentAdapter =
-                        scalarModel.getParentEntityModel().load(ConcurrencyChecking.NO_CHECK);
+                        scalarModel.getParentEntityModel().load();
                 final ObjectAdapter defaultAdapter = actionParameter.getDefault(parentAdapter, null, null);
                 scalarModel.setObject(defaultAdapter);
             }
@@ -1206,7 +1205,7 @@ public class ScalarModel extends EntityModel implements LinksProvider, FormExecu
         }
 
         final EntityModel parentEntityModel1 = this.getParentEntityModel();
-        final ObjectAdapter parentAdapter = parentEntityModel1.load(ConcurrencyChecking.NO_CHECK);
+        final ObjectAdapter parentAdapter = parentEntityModel1.load();
 
         final OneToOneAssociation oneToOneAssociation =
                 this.getPropertyMemento().getProperty(this.getSpecificationLoader());
diff --git a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ValueModel.java b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ValueModel.java
index 94840ab..128b014 100644
--- a/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ValueModel.java
+++ b/core/viewer-wicket-model/src/main/java/org/apache/isis/viewer/wicket/model/models/ValueModel.java
@@ -20,7 +20,6 @@
 package org.apache.isis.viewer.wicket.model.models;
 
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.runtime.memento.ObjectAdapterMemento;
 
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseType.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseType.java
index e0a5207..1aa5489 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseType.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/actionresponse/ActionResultResponseType.java
@@ -19,21 +19,15 @@ package org.apache.isis.viewer.wicket.ui.actionresponse;
 import java.net.URL;
 import java.util.Collection;
 import java.util.List;
-import java.util.concurrent.Callable;
-
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.request.IRequestHandler;
 
 import org.apache.isis.applib.value.Blob;
 import org.apache.isis.applib.value.Clob;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.metamodel.facets.object.value.ValueFacet;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.runtime.system.context.IsisContext;
-import org.apache.isis.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.viewer.wicket.model.models.ActionModel;
 import org.apache.isis.viewer.wicket.model.models.EntityCollectionModel;
 import org.apache.isis.viewer.wicket.model.models.ValueModel;
@@ -42,6 +36,8 @@ import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
 import org.apache.isis.viewer.wicket.ui.pages.standalonecollection.StandaloneCollectionPage;
 import org.apache.isis.viewer.wicket.ui.pages.value.ValuePage;
 import org.apache.isis.viewer.wicket.ui.pages.voidreturn.VoidReturnPage;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.request.IRequestHandler;
 
 import lombok.val;
 
@@ -154,19 +150,7 @@ public enum ActionResultResponseType {
     	
         // this will not preserve the URL (because pageParameters are not copied over)
         // but trying to preserve them seems to cause the 302 redirect to be swallowed somehow
-        final EntityPage entityPage =
-
-                // disabling concurrency checking after the layout XML (grid) feature
-                // was throwing an exception when rebuild grid after invoking action
-                // not certain why that would be the case, but think it should be
-                // safe to simply disable while recreating the page to re-render back to user.
-                ConcurrencyChecking.executeWithConcurrencyCheckingDisabled(
-                        new Callable<EntityPage>() {
-                            @Override public EntityPage call() throws Exception {
-                                return new EntityPage(actualAdapter, exIfAny);
-                            }
-                        }
-                        );
+        final EntityPage entityPage = new EntityPage(actualAdapter, exIfAny);
 
         return ActionResultResponse.toPage(entityPage);
     }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
index 55e9180..798e475 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/entityactions/EntityActionLinkFactory.java
@@ -19,15 +19,14 @@
 
 package org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions;
 
-import org.apache.wicket.markup.html.link.AbstractLink;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.model.models.ToggledMementosProvider;
 import org.apache.isis.viewer.wicket.ui.components.widgets.linkandlabel.ActionLinkFactoryAbstract;
+import org.apache.wicket.markup.html.link.AbstractLink;
 
 public final class EntityActionLinkFactory extends ActionLinkFactoryAbstract {
 
@@ -45,7 +44,7 @@ public final class EntityActionLinkFactory extends ActionLinkFactoryAbstract {
             final String linkId,
             final ToggledMementosProvider toggledMementosProviderIfAny) {
 
-        final ObjectAdapter objectAdapter = this.targetEntityModel.load(ConcurrencyChecking.NO_CHECK);
+        final ObjectAdapter objectAdapter = this.targetEntityModel.load();
 
         final boolean persistent = objectAdapter.isRepresentingPersistent();
         if (!persistent) {
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
index c6e3c5f..a3c689b 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/CssMenuItem.java
@@ -23,17 +23,7 @@ import java.util.List;
 
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Lists;
-
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.Page;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.SubmitLink;
-import org.apache.wicket.markup.html.link.AbstractLink;
-import org.apache.wicket.model.Model;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.consent.Consent;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
 import org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet;
@@ -43,7 +33,6 @@ import org.apache.isis.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.runtime.memento.ObjectAdapterMemento;
 import org.apache.isis.runtime.system.context.IsisContext;
-import org.apache.isis.runtime.system.persistence.PersistenceSession;
 import org.apache.isis.runtime.system.session.IsisSessionFactory;
 import org.apache.isis.security.authentication.AuthenticationSession;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
@@ -54,6 +43,14 @@ import org.apache.isis.viewer.wicket.ui.pages.PageAbstract;
 import org.apache.isis.viewer.wicket.ui.util.Components;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
 import org.apache.isis.viewer.wicket.ui.util.Tooltips;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.Page;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.SubmitLink;
+import org.apache.wicket.markup.html.link.AbstractLink;
+import org.apache.wicket.model.Model;
 
 class CssMenuItem implements Serializable {
 
@@ -356,7 +353,7 @@ class CssMenuItem implements Serializable {
         final boolean separator = serviceAndAction.separator;
         final ServiceActionLinkFactory actionLinkFactory = serviceAndAction.linkAndLabelFactory;
 
-        final ObjectAdapter serviceAdapter = targetEntityModel.load(ConcurrencyChecking.NO_CHECK);
+        final ObjectAdapter serviceAdapter = targetEntityModel.load();
         final ObjectSpecification serviceSpec = serviceAdapter.getSpecification();
         if (serviceSpec.isHidden()) {
             return null;
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionLinkFactory.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionLinkFactory.java
index 063063f..b054bc3 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionLinkFactory.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/actionmenu/serviceactions/ServiceActionLinkFactory.java
@@ -19,14 +19,13 @@
 
 package org.apache.isis.viewer.wicket.ui.components.actionmenu.serviceactions;
 
-import org.apache.wicket.markup.html.link.AbstractLink;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.ToggledMementosProvider;
 import org.apache.isis.viewer.wicket.ui.components.widgets.linkandlabel.ActionLinkFactoryAbstract;
+import org.apache.wicket.markup.html.link.AbstractLink;
 
 class ServiceActionLinkFactory extends ActionLinkFactoryAbstract {
 
@@ -42,7 +41,7 @@ class ServiceActionLinkFactory extends ActionLinkFactoryAbstract {
             final String linkId,
             final ToggledMementosProvider toggledMementosProviderIfAny) {
 
-        ObjectAdapter objectAdapter = this.targetEntityModel.load(ConcurrencyChecking.NO_CHECK);
+        ObjectAdapter objectAdapter = this.targetEntityModel.load();
 
         final AbstractLink link = newLink(linkId, objectAction, toggledMementosProviderIfAny);
 
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/AssociatedWithActionsHelper.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/AssociatedWithActionsHelper.java
index 1107638..313eac2 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/AssociatedWithActionsHelper.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/AssociatedWithActionsHelper.java
@@ -27,7 +27,6 @@ import java.util.stream.Stream;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.spec.ActionType;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.metamodel.spec.feature.Contributed;
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
index 34d51fc..bda6807 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collection/CollectionPanel.java
@@ -23,13 +23,7 @@ import java.io.Serializable;
 import java.util.List;
 
 import org.apache.isis.commons.internal.collections._Lists;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.feedback.ComponentFeedbackMessageFilter;
-import org.apache.wicket.markup.html.basic.Label;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.spec.feature.ObjectAction;
 import org.apache.isis.metamodel.spec.feature.OneToManyAssociation;
 import org.apache.isis.runtime.memento.ObjectAdapterMemento;
@@ -46,6 +40,10 @@ import org.apache.isis.viewer.wicket.ui.components.collection.selector.Collectio
 import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns.ObjectAdapterToggleboxColumn;
 import org.apache.isis.viewer.wicket.ui.components.scalars.ScalarPanelAbstract2;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.feedback.ComponentFeedbackMessageFilter;
+import org.apache.wicket.markup.html.basic.Label;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 
@@ -75,7 +73,7 @@ BulkActionsProvider {
 
         final OneToManyAssociation otma = collectionModel.getCollectionMemento().getCollection(collectionModel.getSpecificationLoader());
         final EntityModel entityModel = collectionModel.getEntityModel();
-        final ObjectAdapter adapter = entityModel.load(ConcurrencyChecking.NO_CHECK);
+        final ObjectAdapter adapter = entityModel.load();
 
         final List<ObjectAction> associatedActions =
                 ObjectAction.Util.findForAssociation(adapter, otma);
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
index 5a9281c..2ccedb3 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/CollectionContentsAsAjaxTablePanel.java
@@ -19,20 +19,15 @@
 
 package org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable;
 
+import static org.apache.isis.commons.internal.base._With.mapIfPresentElse;
+
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Predicate;
-import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import org.apache.wicket.Component;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxFallbackDefaultDataTable;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
-import org.apache.wicket.model.Model;
-
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.applib.layout.grid.Grid;
 import org.apache.isis.applib.services.tablecol.TableColumnOrderService;
@@ -40,7 +35,6 @@ import org.apache.isis.commons.collections.Bin;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facets.WhereValueFacet;
@@ -62,8 +56,11 @@ import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.
 import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns.ObjectAdapterTitleColumn;
 import org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns.ObjectAdapterToggleboxColumn;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
-
-import static org.apache.isis.commons.internal.base._With.mapIfPresentElse;
+import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxFallbackDefaultDataTable;
+import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
+import org.apache.wicket.model.Model;
 
 /**
  * {@link PanelAbstract Panel} that represents a {@link EntityCollectionModel
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterToggleboxColumn.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterToggleboxColumn.java
index 068c1d3..2c683c8 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterToggleboxColumn.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/collectioncontents/ajaxtable/columns/ObjectAdapterToggleboxColumn.java
@@ -20,21 +20,21 @@
 package org.apache.isis.viewer.wicket.ui.components.collectioncontents.ajaxtable.columns;
 
 import java.util.List;
+
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.adapter.version.ConcurrencyException;
+import org.apache.isis.viewer.wicket.model.common.OnConcurrencyExceptionHandler;
+import org.apache.isis.viewer.wicket.model.common.OnSelectionHandler;
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.ui.components.widgets.checkbox.ContainedToggleboxPanel;
+import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
 import org.apache.wicket.Component;
 import org.apache.wicket.MarkupContainer;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
 import org.apache.wicket.markup.repeater.Item;
 import org.apache.wicket.model.IModel;
-import org.apache.isis.viewer.wicket.model.common.OnConcurrencyExceptionHandler;
-import org.apache.isis.viewer.wicket.model.common.OnSelectionHandler;
-import org.apache.isis.viewer.wicket.model.models.EntityModel;
-import org.apache.isis.viewer.wicket.ui.components.widgets.checkbox.ContainedToggleboxPanel;
-import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
 
 public final class ObjectAdapterToggleboxColumn extends ColumnAbstract<ObjectAdapter> {
 
@@ -116,14 +116,14 @@ public final class ObjectAdapterToggleboxColumn extends ColumnAbstract<ObjectAda
                 final EntityModel entityModel = (EntityModel) rowModel;
                 ObjectAdapter selectedAdapter = null;
                 try {
-                    selectedAdapter = entityModel.load(ConcurrencyChecking.CHECK);
+                    selectedAdapter = entityModel.loadWithConcurrencyChecking();
                     if(onSelectionHandler != null) {
                         onSelectionHandler.onSelected(this, selectedAdapter, target);
                     }
                 } catch(ConcurrencyException ex) {
 
                     // should work second time, because the previous attempt will have updated the OAM's OIDs version.
-                    selectedAdapter = entityModel.load(ConcurrencyChecking.CHECK);
+                    selectedAdapter = entityModel.loadWithConcurrencyChecking();
                     if(onConcurrencyExceptionHandler != null) {
                         onConcurrencyExceptionHandler.onConcurrencyException(this, selectedAdapter, ex, target);
                     }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityComponentFactoryAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityComponentFactoryAbstract.java
index a7d5136..c2884b1 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityComponentFactoryAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/EntityComponentFactoryAbstract.java
@@ -19,15 +19,14 @@
 
 package org.apache.isis.viewer.wicket.ui.components.entity;
 
-import org.apache.wicket.Component;
-import org.apache.wicket.model.IModel;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.facets.object.value.ValueFacet;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.ui.ComponentFactoryAbstract;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
+import org.apache.wicket.Component;
+import org.apache.wicket.model.IModel;
 
 /**
  * Convenience adapter for a number of {@link ComponentFactoryAbstract component
@@ -57,7 +56,7 @@ public abstract class EntityComponentFactoryAbstract extends ComponentFactoryAbs
         // is therefore not called. resulting in a concurrency exception.
         //
         // Therefore, we do the same processing here instead.
-        final ObjectAdapter adapter = entityModel.load(ConcurrencyChecking.NO_CHECK);
+        final ObjectAdapter adapter = entityModel.load();
         if (adapter == null) {
             // is ok;
         }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
index 372a2bc..d3c6969 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/entity/icontitle/EntityIconAndTitlePanel.java
@@ -21,20 +21,10 @@ package org.apache.isis.viewer.wicket.ui.components.entity.icontitle;
 
 import javax.inject.Inject;
 
-import org.apache.wicket.Page;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.image.Image;
-import org.apache.wicket.markup.html.link.AbstractLink;
-import org.apache.wicket.markup.html.link.BookmarkablePageLink;
-import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.request.resource.ResourceReference;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet;
 import org.apache.isis.metamodel.facets.object.projection.ProjectionFacet;
 import org.apache.isis.runtime.memento.ObjectAdapterMemento;
-import org.apache.isis.runtime.system.context.IsisContext;
 import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.ImageResourceCache;
@@ -47,6 +37,14 @@ import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 import org.apache.isis.viewer.wicket.ui.util.Components;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
 import org.apache.isis.viewer.wicket.ui.util.Tooltips;
+import org.apache.wicket.Page;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.image.Image;
+import org.apache.wicket.markup.html.link.AbstractLink;
+import org.apache.wicket.markup.html.link.BookmarkablePageLink;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.request.resource.ResourceReference;
 
 /**
  * {@link PanelAbstract Panel} representing the icon and title of an entity,
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyFormExecutorStrategy.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyFormExecutorStrategy.java
index c22db01..aac1211 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyFormExecutorStrategy.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/property/PropertyFormExecutorStrategy.java
@@ -18,15 +18,12 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.property;
 
-import java.util.concurrent.Callable;
-
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.request.cycle.RequestCycle;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
 import org.apache.isis.viewer.wicket.ui.panels.FormExecutorStrategy;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.request.cycle.RequestCycle;
 
 public class PropertyFormExecutorStrategy implements FormExecutorStrategy<ScalarModel> {
 
@@ -75,19 +72,8 @@ public class PropertyFormExecutorStrategy implements FormExecutorStrategy<Scalar
     public void redirectTo(
             final ObjectAdapter resultAdapter,
             final AjaxRequestTarget target) {
-        // disabling concurrency checking after the layout XML (grid) feature
-        // was throwing an exception when rebuild grid after invoking edit prompt.
-        // not certain why that would be the case, but (following similar code for action prompt)
-        // think it should be safe to simply disable while recreating the page to re-render back to user.
-        final EntityPage entityPage =
-                ConcurrencyChecking.executeWithConcurrencyCheckingDisabled(
-                        new Callable<EntityPage>() {
-                            @Override public EntityPage call() throws Exception {
-                                return new EntityPage(resultAdapter, null);
-                            }
-                        }
-                        );
-
+    	
+        final EntityPage entityPage = new EntityPage(resultAdapter, null);
         final RequestCycle requestCycle = RequestCycle.get();
         requestCycle.setResponsePage(entityPage);
     }
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/propertyheader/PropertyEditPromptHeaderPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/propertyheader/PropertyEditPromptHeaderPanel.java
index a24d4b3..165ac60 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/propertyheader/PropertyEditPromptHeaderPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/propertyheader/PropertyEditPromptHeaderPanel.java
@@ -18,30 +18,32 @@
  */
 package org.apache.isis.viewer.wicket.ui.components.propertyheader;
 
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.model.AbstractReadOnlyModel;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.facets.all.named.NamedFacet;
 import org.apache.isis.metamodel.spec.feature.OneToOneAssociation;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.model.models.ScalarModel;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.model.IModel;
 
 public class PropertyEditPromptHeaderPanel extends PanelAbstract<ScalarModel> {
 
-    private static final String ID_PROPERTY_NAME = "propertyName";
+	private static final long serialVersionUID = 1L;
+	private static final String ID_PROPERTY_NAME = "propertyName";
 
     public PropertyEditPromptHeaderPanel(String id, final ScalarModel model) {
         super(id, model);
 
-        ObjectAdapter targetAdapter = model.getParentEntityModel().load(ConcurrencyChecking.NO_CHECK);
+        ObjectAdapter targetAdapter = model.getParentEntityModel().load();
 
         getComponentFactoryRegistry().addOrReplaceComponent(this, ComponentType.ENTITY_ICON_AND_TITLE, new EntityModel(targetAdapter));
 
-        final Label label = new Label(ID_PROPERTY_NAME, new AbstractReadOnlyModel<String>() {
-            @Override
+        final Label label = new Label(ID_PROPERTY_NAME, new IModel<String>() {
+			private static final long serialVersionUID = 1L;
+
+			@Override
             public String getObject() {
                 final OneToOneAssociation property = model.getPropertyMemento().getProperty(getSpecificationLoader());
                 return property.getName();
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
index 5475735..9786e21 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract.java
@@ -21,21 +21,10 @@ package org.apache.isis.viewer.wicket.ui.components.scalars;
 
 import java.util.List;
 
-import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.behavior.AttributeAppender;
-import org.apache.wicket.behavior.Behavior;
-import org.apache.wicket.markup.html.form.LabeledWebMarkupContainer;
-import org.apache.wicket.markup.html.panel.Fragment;
-import org.apache.wicket.model.Model;
-
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.Where;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.facets.members.cssclass.CssClassFacet;
 import org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet;
 import org.apache.isis.viewer.wicket.model.links.LinkAndLabel;
@@ -45,6 +34,15 @@ import org.apache.isis.viewer.wicket.ui.components.actionmenu.entityactions.Addi
 import org.apache.isis.viewer.wicket.ui.components.scalars.TextFieldValueModel.ScalarModelProvider;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.markup.html.form.LabeledWebMarkupContainer;
+import org.apache.wicket.markup.html.panel.Fragment;
+import org.apache.wicket.model.Model;
 
 /**
  * Adapter for {@link PanelAbstract panel}s that use a {@link ScalarModel} as
@@ -269,7 +267,7 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
         ScalarModel model = getModel();
         final CssClassFacet facet = model.getFacet(CssClassFacet.class);
         if(facet != null) {
-            final ObjectAdapter parentAdapter = model.getParentEntityModel().load(ConcurrencyChecking.NO_CHECK);
+            final ObjectAdapter parentAdapter = model.getParentEntityModel().load();
             final String cssClass = facet.cssClass(parentAdapter);
             CssClassAppender.appendCssClassTo(this, cssClass);
         }
@@ -335,6 +333,8 @@ public abstract class ScalarPanelAbstract extends PanelAbstract<ScalarModel> imp
                 return "label-none";
             case TOP:
                 return "label-top";
+			default:
+				break;
             }
         }
         return "label-left";
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
index c0ac668..38f9bee 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/ScalarPanelAbstract2.java
@@ -21,22 +21,6 @@ package org.apache.isis.viewer.wicket.ui.components.scalars;
 
 import java.util.List;
 
-import org.apache.wicket.Component;
-import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.RestartResponseException;
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.behavior.AttributeAppender;
-import org.apache.wicket.behavior.Behavior;
-import org.apache.wicket.feedback.ComponentFeedbackMessageFilter;
-import org.apache.wicket.markup.ComponentTag;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.LabeledWebMarkupContainer;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-
 import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.services.metamodel.MetaModelService;
@@ -44,7 +28,6 @@ import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.ioc.BeanSort;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.metamodel.consent.Consent;
 import org.apache.isis.metamodel.consent.InteractionInitiatedBy;
@@ -79,6 +62,21 @@ import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
 import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 import org.apache.isis.viewer.wicket.ui.util.Components;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
+import org.apache.wicket.Component;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.RestartResponseException;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.behavior.Behavior;
+import org.apache.wicket.feedback.ComponentFeedbackMessageFilter;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.LabeledWebMarkupContainer;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
 
 import de.agilecoders.wicket.core.markup.html.bootstrap.common.NotificationPanel;
 
@@ -523,7 +521,7 @@ public abstract class ScalarPanelAbstract2 extends PanelAbstract<ScalarModel> im
         if(facet != null) {
 
             final ObjectAdapter parentAdapter =
-                    model.getParentEntityModel().load(ConcurrencyChecking.NO_CHECK);
+                    model.getParentEntityModel().load();
 
             final String cssClass = facet.cssClass(parentAdapter);
             CssClassAppender.appendCssClassTo(this, cssClass);
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
index bdfe711..d1455b1 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/breadcrumbs/BreadcrumbPanel.java
@@ -19,9 +19,15 @@ package org.apache.isis.viewer.wicket.ui.components.widgets.breadcrumbs;
 import java.util.Collection;
 import java.util.List;
 
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
-
+import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.metamodel.adapter.oid.Oid;
+import org.apache.isis.metamodel.adapter.oid.RootOid;
+import org.apache.isis.security.authentication.MessageBroker;
+import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
+import org.apache.isis.viewer.wicket.model.models.EntityModel;
+import org.apache.isis.viewer.wicket.ui.errors.JGrowlUtil;
+import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
+import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
 import org.apache.wicket.model.IModel;
@@ -32,16 +38,8 @@ import org.wicketstuff.select2.Response;
 import org.wicketstuff.select2.Select2Choice;
 import org.wicketstuff.select2.Settings;
 
-import org.apache.isis.commons.internal.collections._Lists;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
-import org.apache.isis.metamodel.adapter.oid.Oid;
-import org.apache.isis.metamodel.adapter.oid.RootOid;
-import org.apache.isis.security.authentication.MessageBroker;
-import org.apache.isis.viewer.wicket.model.mementos.PageParameterNames;
-import org.apache.isis.viewer.wicket.model.models.EntityModel;
-import org.apache.isis.viewer.wicket.ui.errors.JGrowlUtil;
-import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
-import org.apache.isis.viewer.wicket.ui.panels.PanelAbstract;
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterables;
 
 public class BreadcrumbPanel extends PanelAbstract<IModel<Void>> {
 
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
index 8706073..9a8e450 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/entitysimplelink/EntityLinkSimplePanel.java
@@ -19,16 +19,15 @@
 
 package org.apache.isis.viewer.wicket.ui.components.widgets.entitysimplelink;
 
-import org.apache.wicket.Component;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.FormComponentPanel;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.viewer.wicket.model.models.EntityModel;
 import org.apache.isis.viewer.wicket.ui.ComponentFactory;
 import org.apache.isis.viewer.wicket.ui.ComponentType;
 import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.CancelHintRequired;
 import org.apache.isis.viewer.wicket.ui.components.widgets.formcomponent.FormComponentPanelAbstract;
+import org.apache.wicket.Component;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.FormComponentPanel;
 
 /**
  * {@link FormComponentPanel} representing a reference to an entity: a link and
@@ -44,15 +43,7 @@ public class EntityLinkSimplePanel extends FormComponentPanelAbstract<ObjectAdap
     public EntityLinkSimplePanel(final String id, final EntityModel entityModel) {
         super(id, entityModel);
         setType(ObjectAdapter.class);
-
-        // this is a bit of a hack, but getting a concurrency exception when click on a tab
-        // which simply holds a newly modified reference.
-        ConcurrencyChecking.executeWithConcurrencyCheckingDisabled(new Runnable() {
-            @Override
-            public void run() {
-                buildGui();
-            }
-        });
+        buildGui();
     }
 
     public EntityModel getEntityModel() {
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
index d1b57d7..4d85015 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/widgets/linkandlabel/ActionLinkFactoryAbstract.java
@@ -18,19 +18,9 @@
 package org.apache.isis.viewer.wicket.ui.components.widgets.linkandlabel;
 
 import java.util.List;
-import java.util.concurrent.Callable;
 
 import javax.annotation.Nullable;
 
-import org.apache.wicket.Application;
-import org.apache.wicket.MarkupContainer;
-import org.apache.wicket.Page;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.link.AbstractLink;
-import org.apache.wicket.model.AbstractReadOnlyModel;
-import org.apache.wicket.request.cycle.RequestCycle;
-
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.layout.grid.Grid;
 import org.apache.isis.applib.layout.grid.bootstrap3.BS3Grid;
@@ -40,7 +30,6 @@ import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.ioc.BeanSort;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.facets.object.grid.GridFacet;
 import org.apache.isis.metamodel.postprocessors.param.ActionParameterDefaultsFacetFromAssociatedCollection;
 import org.apache.isis.metamodel.spec.ObjectSpecification;
@@ -73,6 +62,14 @@ import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistryAccessor;
 import org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage;
 import org.apache.isis.viewer.wicket.ui.panels.FormExecutorDefault;
 import org.apache.isis.viewer.wicket.ui.util.CssClassAppender;
+import org.apache.wicket.Application;
+import org.apache.wicket.MarkupContainer;
+import org.apache.wicket.Page;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.link.AbstractLink;
+import org.apache.wicket.model.AbstractReadOnlyModel;
+import org.apache.wicket.request.cycle.RequestCycle;
 
 import lombok.val;
 
@@ -260,19 +257,7 @@ public abstract class ActionLinkFactoryAbstract implements ActionLinkFactory {
                     // an error page, but is probably 'good enough').
                     final ObjectAdapter targetAdapter = actionModel.getTargetAdapter();
 
-                    final EntityPage entityPage =
-
-                            // disabling concurrency checking after the layout XML (grid) feature
-                            // was throwing an exception when rebuild grid after invoking action
-                            // not certain why that would be the case, but think it should be
-                            // safe to simply disable while recreating the page to re-render back to user.
-                            ConcurrencyChecking.executeWithConcurrencyCheckingDisabled(
-                                    new Callable<EntityPage>() {
-                                        @Override public EntityPage call() throws Exception {
-                                            return new EntityPage(targetAdapter, null);
-                                        }
-                                    }
-                                    );
+                    final EntityPage entityPage = new EntityPage(targetAdapter, null);
 
                     val txManager = IsisContext.getTransactionManagerJdo().get();
                     txManager.flushTransaction();
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
index 66ba2fa..b5c4cb9 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormAbstract.java
@@ -19,12 +19,7 @@
 
 package org.apache.isis.viewer.wicket.ui.panels;
 
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.IFormSubmitter;
-import org.apache.wicket.model.IModel;
-
 import org.apache.isis.applib.services.registry.ServiceRegistry;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.runtime.system.context.IsisContext;
 import org.apache.isis.runtime.system.persistence.PersistenceSession;
@@ -33,6 +28,8 @@ import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
 import org.apache.isis.viewer.wicket.ui.app.registry.ComponentFactoryRegistryAccessor;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistry;
 import org.apache.isis.viewer.wicket.ui.pages.PageClassRegistryAccessor;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.model.IModel;
 
 public abstract class FormAbstract<T> extends Form<T>
 implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor {
@@ -47,40 +44,6 @@ implements ComponentFactoryRegistryAccessor, PageClassRegistryAccessor {
         super(id, model);
     }
 
-
-    // ///////////////////////////////////////////////////////////////////
-    // process() override
-    // ///////////////////////////////////////////////////////////////////
-
-    private String preValidationErrorIfAny;
-
-    @Override
-    public void process(final IFormSubmitter submittingComponent) {
-        try {
-
-            if(submittingComponent instanceof IFormSubmitterWithPreValidateHook) {
-                IFormSubmitterWithPreValidateHook componentWithPreSubmitHook = (IFormSubmitterWithPreValidateHook) submittingComponent;
-                preValidationErrorIfAny = componentWithPreSubmitHook.preValidate();
-            }
-
-            if(preValidationErrorIfAny != null) {
-                // an exception has already occurred, so disable for remainder of thread.
-                ConcurrencyChecking.executeWithConcurrencyCheckingDisabled(new Runnable(){
-                    @Override
-                    public void run() {
-                        FormAbstract.super.process(submittingComponent);
-                    }
-                });
-            } else {
-                super.process(submittingComponent);
-            }
-
-        } finally {
-            preValidationErrorIfAny = null;
-        }
-    }
-
-
     // ///////////////////////////////////////////////////////////////////
     // Convenience
     // ///////////////////////////////////////////////////////////////////
diff --git a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
index 91403f4..031a0a7 100644
--- a/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
+++ b/core/viewer-wicket-ui/src/main/java/org/apache/isis/viewer/wicket/ui/panels/FormExecutorDefault.java
@@ -33,7 +33,6 @@ import org.apache.isis.applib.services.message.MessageService;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.metamodel.adapter.ObjectAdapter;
-import org.apache.isis.metamodel.adapter.concurrency.ConcurrencyChecking;
 import org.apache.isis.metamodel.adapter.version.ConcurrencyException;
 import org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet;
 import org.apache.isis.metamodel.facets.properties.renderunchanged.UnchangingFacet;
@@ -345,19 +344,7 @@ implements FormExecutor {
 
         // this will not preserve the URL (because pageParameters are not copied over)
         // but trying to preserve them seems to cause the 302 redirect to be swallowed somehow
-        final EntityPage entityPage =
-
-                // disabling concurrency checking after the layout XML (grid) feature
-                // was throwing an exception when rebuild grid after invoking action
-                // not certain why that would be the case, but think it should be
-                // safe to simply disable while recreating the page to re-render back to user.
-                ConcurrencyChecking.executeWithConcurrencyCheckingDisabled(
-                        new Callable<EntityPage>() {
-                            @Override public EntityPage call() throws Exception {
-                                return new EntityPage(targetAdapter, ex);
-                            }
-                        }
-                        );
+        final EntityPage entityPage =new EntityPage(targetAdapter, ex);
 
         // force any changes in state etc to happen now prior to the redirect;
         // in the case of an object being returned, this should cause our page mementos