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

danhaywood pushed a commit to branch ISIS-3091
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/ISIS-3091 by this push:
     new 46d3215f2f ISIS-3091: completes jpa prod for audit trail, wip
46d3215f2f is described below

commit 46d3215f2fc99d5c1f9be65cc42f5890f034878f
Author: Dan Haywood <[email protected]>
AuthorDate: Fri Jul 22 14:34:01 2022 +0100

    ISIS-3091: completes jpa prod for audit trail, wip
---
 .../IsisBeanFactoryPostProcessorForSpring.java     |   1 +
 .../config/beans/IsisBeanTypeRegistryDefault.java  |   1 +
 .../core/config/converters/PatternsConverter.java  |   1 +
 .../DataSourceIntrospectionService.java            |   1 +
 .../config/environment/IsisSystemEnvironment.java  |   2 +
 .../core/config/viewer/web/WebAppContextPath.java  |   1 +
 .../core/metamodel/context/MetaModelContexts.java  |   1 +
 .../objectmanager/ObjectManagerDefault.java        |   1 +
 .../ProgrammingModelInitFilterDefault.java         |   1 +
 .../metamodel/services/ServiceInjectorDefault.java |   1 +
 .../classsubstitutor/ClassSubstitutorDefault.java  |   2 +-
 .../ClassSubstitutorForCollections.java            |   1 +
 .../ClassSubstitutorForDomainObjects.java          |   1 +
 .../classsubstitutor/ClassSubstitutorRegistry.java |   1 +
 .../services/events/MetamodelEventService.java     |   1 +
 ...ExceptionRecognizerForRecoverableException.java |   1 +
 .../services/grid/GridLoaderServiceDefault.java    |   1 +
 .../services/grid/GridReaderUsingJaxb.java         |   1 +
 .../services/grid/GridServiceDefault.java          |   1 +
 .../grid/bootstrap/GridSystemServiceBootstrap.java |   1 +
 .../services/layout/LayoutServiceDefault.java      |   1 +
 .../metamodel/MetaModelServiceDefault.java         |   1 +
 .../services/registry/ServiceRegistryDefault.java  |   1 +
 .../tablecol/TableColumnOrderServiceDefault.java   |   1 +
 .../TableColumnOrderServiceUsingTxtFile.java       |   1 +
 .../specloader/ProgrammingModelServiceDefault.java |   1 +
 .../specloader/SpecificationLoaderDefault.java     |   1 +
 .../valuetypes/ValueSemanticsResolverDefault.java  |   1 +
 .../repository/RepositoryServiceDefault.java       |   1 +
 .../applib/AuditTrailIntegTestAbstract.java        |  77 +------
 .../jdo/IsisModuleExtAuditTrailPersistenceJdo.java |  16 +-
 .../isis/audittrail/jdo/dom/AuditTrailEntry.java   |  25 +--
 .../jdo/AuditTrail_IntegTest.java}                 |  17 +-
 .../src/test/resources/application-test.yml        |   2 +-
 .../IsisModuleExtAuditTrailPersistenceJpa.java}    |   4 +-
 .../isis/audittrail/jpa/dom/AuditTrailEntry.java   | 232 +++++++++++++++++++++
 .../jpa/dom/AuditTrailEntryRepository.java         |  32 +++
 .../isis/audittrail/jpa/AuditTrail_IntegTest.java} |  17 +-
 .../src/test/resources/application-test.yml        |  13 +-
 extensions/security/audittrail/pom.xml             |   2 -
 .../dom/ApplicationPermissionRepository.java       |   3 +-
 .../jdo/role/dom/ApplicationRoleRepository.java    |   3 +-
 .../tenancy/dom/ApplicationTenancyRepository.java  |   3 +-
 .../jdo/user/dom/ApplicationUserRepository.java    |   3 +-
 .../dom/ApplicationPermissionRepository.java       |   3 +-
 .../jpa/role/dom/ApplicationRoleRepository.java    |   3 +-
 .../tenancy/dom/ApplicationTenancyRepository.java  |   3 +-
 .../jpa/user/dom/ApplicationUserRepository.java    |   3 +-
 .../applib/SessionLogIntegTestAbstract.java        |   2 +-
 .../jpa/IsisModuleExtSessionLogPersistenceJpa.java |   3 +-
 .../isis/sessionlog/jpa/dom/SessionLogEntry.java   |   2 +-
 .../teardown/jpa/TeardownFixtureJpaAbstract.java   |  61 ++++++
 52 files changed, 418 insertions(+), 142 deletions(-)

diff --git 
a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanFactoryPostProcessorForSpring.java
 
b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanFactoryPostProcessorForSpring.java
index 51201a0a03..f671ee72b2 100644
--- 
a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanFactoryPostProcessorForSpring.java
+++ 
b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanFactoryPostProcessorForSpring.java
@@ -36,6 +36,7 @@ import org.apache.isis.applib.annotation.DomainObject;
 import org.apache.isis.applib.annotation.DomainService;
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.core.config.IsisModuleCoreConfig;
 import org.apache.isis.core.config.beans.aoppatch.AopPatch;
 
 import lombok.val;
diff --git 
a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistryDefault.java
 
b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistryDefault.java
index 1f3971b5ca..a5fee2dcb0 100644
--- 
a/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistryDefault.java
+++ 
b/core/config/src/main/java/org/apache/isis/core/config/beans/IsisBeanTypeRegistryDefault.java
@@ -34,6 +34,7 @@ import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.core.config.IsisModuleCoreConfig;
 
 import lombok.Getter;
 import lombok.NonNull;
diff --git 
a/core/config/src/main/java/org/apache/isis/core/config/converters/PatternsConverter.java
 
b/core/config/src/main/java/org/apache/isis/core/config/converters/PatternsConverter.java
index d183de6012..8b2c6412e2 100644
--- 
a/core/config/src/main/java/org/apache/isis/core/config/converters/PatternsConverter.java
+++ 
b/core/config/src/main/java/org/apache/isis/core/config/converters/PatternsConverter.java
@@ -31,6 +31,7 @@ import org.springframework.stereotype.Component;
 
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.core.config.IsisModuleCoreConfig;
 
 @Component
 @Named(IsisModuleCoreConfig.NAMESPACE + "..PatternsConverter")
diff --git 
a/core/config/src/main/java/org/apache/isis/core/config/datasources/DataSourceIntrospectionService.java
 
b/core/config/src/main/java/org/apache/isis/core/config/datasources/DataSourceIntrospectionService.java
index 1d8a196591..cf8b3a7d12 100644
--- 
a/core/config/src/main/java/org/apache/isis/core/config/datasources/DataSourceIntrospectionService.java
+++ 
b/core/config/src/main/java/org/apache/isis/core/config/datasources/DataSourceIntrospectionService.java
@@ -35,6 +35,7 @@ import org.springframework.stereotype.Service;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.core.config.IsisModuleCoreConfig;
 
 import lombok.NonNull;
 import lombok.SneakyThrows;
diff --git 
a/core/config/src/main/java/org/apache/isis/core/config/environment/IsisSystemEnvironment.java
 
b/core/config/src/main/java/org/apache/isis/core/config/environment/IsisSystemEnvironment.java
index daab470cfe..4c632e060f 100644
--- 
a/core/config/src/main/java/org/apache/isis/core/config/environment/IsisSystemEnvironment.java
+++ 
b/core/config/src/main/java/org/apache/isis/core/config/environment/IsisSystemEnvironment.java
@@ -24,6 +24,8 @@ import lombok.val;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.context._Context;
 import org.apache.isis.commons.internal.ioc._IocContainer;
+import org.apache.isis.core.config.IsisModuleCoreConfig;
+
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.context.event.ApplicationFailedEvent;
 import org.springframework.context.ApplicationContext;
diff --git 
a/core/config/src/main/java/org/apache/isis/core/config/viewer/web/WebAppContextPath.java
 
b/core/config/src/main/java/org/apache/isis/core/config/viewer/web/WebAppContextPath.java
index 9f6eabe9e3..975430d96d 100644
--- 
a/core/config/src/main/java/org/apache/isis/core/config/viewer/web/WebAppContextPath.java
+++ 
b/core/config/src/main/java/org/apache/isis/core/config/viewer/web/WebAppContextPath.java
@@ -33,6 +33,7 @@ import org.springframework.stereotype.Service;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.resources._Resources;
+import org.apache.isis.core.config.IsisModuleCoreConfig;
 
 import lombok.Getter;
 import lombok.val;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContexts.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContexts.java
index 66c51a1722..93523aeaaf 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContexts.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/context/MetaModelContexts.java
@@ -26,6 +26,7 @@ import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Primary;
 
 import org.apache.isis.core.config.environment.IsisSystemEnvironment;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 
 /**
  *
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
index e7e24c07a2..50f77587a0 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/objectmanager/ObjectManagerDefault.java
@@ -40,6 +40,7 @@ import 
org.apache.isis.core.metamodel.objectmanager.serialize.ObjectSerializer;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.val;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 
 /**
  *
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodel/ProgrammingModelInitFilterDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodel/ProgrammingModelInitFilterDefault.java
index e221f8dba0..9f75974de6 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodel/ProgrammingModelInitFilterDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodel/ProgrammingModelInitFilterDefault.java
@@ -36,6 +36,7 @@ import static 
org.apache.isis.core.metamodel.progmodel.ProgrammingModelInitFilte
 import static 
org.apache.isis.core.metamodel.progmodel.ProgrammingModelInitFilter.excludingNone;
 
 import lombok.val;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 
 /**
  *
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServiceInjectorDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServiceInjectorDefault.java
index fc0b23502e..14729076d7 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServiceInjectorDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/ServiceInjectorDefault.java
@@ -25,6 +25,7 @@ import javax.inject.Named;
 
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.services.inject.ServiceInjector;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 import org.apache.isis.core.metamodel.spec.ManagedObject;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorDefault.java
index 209eb9425a..d046ef4f49 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorDefault.java
@@ -24,7 +24,7 @@ import org.springframework.stereotype.Component;
 
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.graph.tree.TreeAdapter;
-
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 @Component
 @Named(IsisModuleCoreMetamodel.NAMESPACE + ".ClassSubstitutorDefault")
 @javax.annotation.Priority(PriorityPrecedence.MIDPOINT)
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForCollections.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForCollections.java
index 92a7f498a9..736a2dde67 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForCollections.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForCollections.java
@@ -29,6 +29,7 @@ import javax.inject.Named;
 import org.springframework.stereotype.Component;
 
 import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 
 import lombok.NonNull;
 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForDomainObjects.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForDomainObjects.java
index db9956a772..26b2869af6 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForDomainObjects.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorForDomainObjects.java
@@ -26,6 +26,7 @@ import org.springframework.stereotype.Component;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.core.config.beans.IsisBeanMetaData;
 import org.apache.isis.core.config.beans.IsisBeanTypeRegistry;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 
 import lombok.NonNull;
 import lombok.val;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorRegistry.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorRegistry.java
index f0c1118944..3d0fd6e9c5 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorRegistry.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/classsubstitutor/ClassSubstitutorRegistry.java
@@ -30,6 +30,7 @@ import org.springframework.stereotype.Component;
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.commons.internal.functions._Predicates;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 import 
org.apache.isis.core.metamodel.services.classsubstitutor.ClassSubstitutor.Substitution;
 
 import lombok.val;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/events/MetamodelEventService.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/events/MetamodelEventService.java
index a4e8a52712..921d5cb9f2 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/events/MetamodelEventService.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/events/MetamodelEventService.java
@@ -34,6 +34,7 @@ import org.apache.isis.applib.events.ui.CssClassUiEvent;
 import org.apache.isis.applib.events.ui.IconUiEvent;
 import org.apache.isis.applib.events.ui.LayoutUiEvent;
 import org.apache.isis.applib.events.ui.TitleUiEvent;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 
 import lombok.Builder;
 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/exceprecog/ExceptionRecognizerForRecoverableException.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/exceprecog/ExceptionRecognizerForRecoverableException.java
index 6fced652b0..69b85e7803 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/exceprecog/ExceptionRecognizerForRecoverableException.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/exceprecog/ExceptionRecognizerForRecoverableException.java
@@ -29,6 +29,7 @@ import org.apache.isis.applib.exceptions.RecoverableException;
 import org.apache.isis.applib.services.exceprecog.Category;
 import org.apache.isis.applib.services.exceprecog.ExceptionRecognizer;
 import org.apache.isis.applib.services.exceprecog.ExceptionRecognizerForType;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 
 /**
  * Framework-provided implementation of {@link ExceptionRecognizer},
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
index b5ce896b50..7aaf53f85c 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
@@ -42,6 +42,7 @@ import org.apache.isis.commons.internal.reflection._Reflect;
 import org.apache.isis.commons.internal.reflection._Reflect.InterfacePolicy;
 import org.apache.isis.commons.internal.resources._Resources;
 import org.apache.isis.core.config.environment.IsisSystemEnvironment;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridReaderUsingJaxb.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridReaderUsingJaxb.java
index 29336dcbd9..f12c178295 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridReaderUsingJaxb.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridReaderUsingJaxb.java
@@ -35,6 +35,7 @@ import org.apache.isis.applib.services.grid.GridSystemService;
 import org.apache.isis.applib.services.jaxb.JaxbService;
 import org.apache.isis.applib.services.registry.ServiceRegistry;
 import org.apache.isis.commons.internal.collections._Arrays;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 
 import lombok.RequiredArgsConstructor;
 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
index 780a1b6042..b10b6bf7d2 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridServiceDefault.java
@@ -37,6 +37,7 @@ import org.apache.isis.applib.services.grid.GridSystemService;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.collections._Sets;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 
 import lombok.RequiredArgsConstructor;
 import lombok.val;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap/GridSystemServiceBootstrap.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap/GridSystemServiceBootstrap.java
index ad93b3a9de..bb9ae7088f 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap/GridSystemServiceBootstrap.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/bootstrap/GridSystemServiceBootstrap.java
@@ -61,6 +61,7 @@ import org.apache.isis.commons.internal.collections._Sets;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
 import org.apache.isis.commons.internal.resources._Resources;
 import org.apache.isis.core.config.environment.IsisSystemEnvironment;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 import 
org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet;
 import 
org.apache.isis.core.metamodel.facets.members.layout.group.GroupIdAndName;
 import 
org.apache.isis.core.metamodel.facets.members.layout.group.LayoutGroupFacet;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
index 22bdf1665f..9ced0ed771 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/layout/LayoutServiceDefault.java
@@ -38,6 +38,7 @@ import org.apache.isis.applib.services.layout.Style;
 import org.apache.isis.applib.services.menu.MenuBarsService;
 import org.apache.isis.applib.util.ZipWriter;
 import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 import org.apache.isis.core.metamodel.facets.object.grid.GridFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
index 68639464f0..9de2ade501 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/metamodel/MetaModelServiceDefault.java
@@ -45,6 +45,7 @@ import 
org.apache.isis.applib.services.metamodel.MetaModelService;
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.commons.internal.collections._Lists;
 import org.apache.isis.commons.internal.exceptions._Exceptions;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 import 
org.apache.isis.core.metamodel.facets.members.publish.command.CommandPublishingFacet;
 import org.apache.isis.core.metamodel.spec.ObjectSpecification;
 import org.apache.isis.core.metamodel.spec.feature.MixedIn;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
index 94608ba903..1210a4a0c3 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/registry/ServiceRegistryDefault.java
@@ -39,6 +39,7 @@ import org.apache.isis.commons.internal.collections._Maps;
 import org.apache.isis.commons.internal.ioc._ManagedBeanAdapter;
 import org.apache.isis.core.config.beans.IsisBeanTypeRegistry;
 import org.apache.isis.core.config.environment.IsisSystemEnvironment;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 
 import lombok.val;
 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceDefault.java
index 098c48639b..1c172f1e95 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceDefault.java
@@ -28,6 +28,7 @@ import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.services.tablecol.TableColumnOrderService;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 
 /**
  * Used as a identity fallback.
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceUsingTxtFile.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceUsingTxtFile.java
index 88d5100441..3c757b800a 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceUsingTxtFile.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/tablecol/TableColumnOrderServiceUsingTxtFile.java
@@ -33,6 +33,7 @@ import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.services.tablecol.TableColumnOrderService;
 import org.apache.isis.commons.internal.base._Text;
 import org.apache.isis.commons.internal.resources._Resources;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 
 import lombok.val;
 import lombok.extern.log4j.Log4j2;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ProgrammingModelServiceDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ProgrammingModelServiceDefault.java
index cfa61f0fd2..d95197932a 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ProgrammingModelServiceDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/ProgrammingModelServiceDefault.java
@@ -27,6 +27,7 @@ import org.springframework.stereotype.Service;
 
 import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
 import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
index 3572587983..66afd57dfa 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/SpecificationLoaderDefault.java
@@ -62,6 +62,7 @@ import org.apache.isis.core.config.beans.IsisBeanTypeRegistry;
 import org.apache.isis.core.config.environment.IsisSystemEnvironment;
 import org.apache.isis.core.config.metamodel.specloader.IntrospectionMode;
 import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 import org.apache.isis.core.metamodel.commons.ClassUtil;
 import org.apache.isis.core.metamodel.context.MetaModelContext;
 import org.apache.isis.core.metamodel.facetapi.Facet;
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueSemanticsResolverDefault.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueSemanticsResolverDefault.java
index 42c6097371..eab5c3618d 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueSemanticsResolverDefault.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuetypes/ValueSemanticsResolverDefault.java
@@ -38,6 +38,7 @@ import org.apache.isis.commons.collections.Can;
 import org.apache.isis.commons.internal.base._Casts;
 import org.apache.isis.commons.internal.base._NullSafe;
 import org.apache.isis.commons.internal.collections._Maps;
+import org.apache.isis.core.metamodel.IsisModuleCoreMetamodel;
 import 
org.apache.isis.core.metamodel.valuesemantics.EnumValueSemanticsAbstract;
 
 import lombok.NonNull;
diff --git 
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java
 
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java
index 8388d8d0c9..3c00338c64 100644
--- 
a/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java
+++ 
b/core/runtimeservices/src/main/java/org/apache/isis/core/runtimeservices/repository/RepositoryServiceDefault.java
@@ -51,6 +51,7 @@ import 
org.apache.isis.core.metamodel.objectmanager.query.ObjectBulkLoader;
 import org.apache.isis.core.metamodel.spec.ManagedObjects;
 import org.apache.isis.core.metamodel.spec.ManagedObjects.EntityUtil;
 import org.apache.isis.core.metamodel.spec.ManagedObjects.UnwrapUtil;
+import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
 
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
diff --git 
a/extensions/security/audittrail/applib/src/test/java/org/apache/isis/audittrail/applib/AuditTrailIntegTestAbstract.java
 
b/extensions/security/audittrail/applib/src/test/java/org/apache/isis/audittrail/applib/AuditTrailIntegTestAbstract.java
index e54db3d6d7..98c7a42c07 100644
--- 
a/extensions/security/audittrail/applib/src/test/java/org/apache/isis/audittrail/applib/AuditTrailIntegTestAbstract.java
+++ 
b/extensions/security/audittrail/applib/src/test/java/org/apache/isis/audittrail/applib/AuditTrailIntegTestAbstract.java
@@ -43,7 +43,7 @@ import 
org.apache.isis.testing.integtestsupport.applib.IsisIntegrationTestAbstra
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 
-public abstract class SessionLogIntegTestAbstract extends 
IsisIntegrationTestAbstract {
+public abstract class AuditTrailIntegTestAbstract extends 
IsisIntegrationTestAbstract {
 
 
     @Value
@@ -60,81 +60,6 @@ public abstract class SessionLogIntegTestAbstract extends 
IsisIntegrationTestAbs
     void setUp() {
     }
 
-    @Test
-    void login_and_logout() {
-
-        List<? extends SessionLogEntry> sessions;
-        SessionLogEntry session;
-        Optional<? extends SessionLogEntry> sessionIfAny;
-
-        // given
-        sessions = sessionLogEntryRepository.findActiveSessions();
-        Assertions.assertThat(sessions).isEmpty();
-
-        // when
-        Session session1 = new Session("fred",  
Instant.now().minus(Duration.ofDays(2)));
-
-        sessionSubscriber.log(SessionSubscriber.Type.LOGIN, session1.username, 
session1.getDate(), SessionSubscriber.CausedBy.USER, session1.sessionGuid, 
session1.httpSessionId);
-
-        // then
-        sessions = sessionLogEntryRepository.findActiveSessions();
-        Assertions.assertThat(sessions).hasSize(1);
-        session = sessions.get(0);
-        
Assertions.assertThat(session.getSessionGuid()).isEqualTo(session1.sessionGuid);
-
-        // when
-        Session session2 = new Session("mary", 
Instant.now().minus(Duration.ofDays(1)));
-
-        sessionSubscriber.log(SessionSubscriber.Type.LOGIN, session2.username, 
session2.getDate(), SessionSubscriber.CausedBy.USER, session2.sessionGuid, 
session2.httpSessionId);
-
-        // then
-        sessions = sessionLogEntryRepository.findActiveSessions();
-        Assertions.assertThat(sessions).hasSize(2);
-
-        // then
-        sessions = sessionLogEntryRepository.findByUsername(session1.username);
-        Assertions.assertThat(sessions).hasSize(1);
-        
Assertions.assertThat(sessions.get(0)).extracting(SessionLogEntry::getUsername).isEqualTo(session1.username);
-
-        sessionIfAny = 
sessionLogEntryRepository.findBySessionGuid(session2.sessionGuid);
-        Assertions.assertThat(sessionIfAny).isPresent();
-        
Assertions.assertThat(sessionIfAny).get().extracting(SessionLogEntry::getUsername).isEqualTo(session2.username);
-
-        sessionIfAny = 
sessionLogEntryRepository.findBySessionGuidStr(session1.sessionGuid.toString());
-        Assertions.assertThat(sessionIfAny).isPresent();
-        
Assertions.assertThat(sessionIfAny).get().extracting(SessionLogEntry::getUsername).isEqualTo(session1.username);
-
-        sessions = 
sessionLogEntryRepository.findByUsernameAndStrictlyAfter(session1.username, 
Timestamp.from(session1.instant.plus(Duration.ofMillis(10))));
-        Assertions.assertThat(sessions).isEmpty();
-
-        sessions = 
sessionLogEntryRepository.findByUsernameAndStrictlyAfter(session1.username, 
Timestamp.from(session1.instant.minus(Duration.ofMillis(10))));
-        Assertions.assertThat(sessions).hasSize(1);
-
-        sessions = 
sessionLogEntryRepository.findByUsernameAndStrictlyBefore(session1.username, 
Timestamp.from(session1.instant.minus(Duration.ofMillis(10))));
-        Assertions.assertThat(sessions).isEmpty();
-
-        sessions = 
sessionLogEntryRepository.findByUsernameAndStrictlyBefore(session1.username, 
Timestamp.from(session1.instant.plus(Duration.ofMillis(10))));
-        Assertions.assertThat(sessions).hasSize(1);
-
-        sessions = 
sessionLogEntryRepository.findRecentByUsername(session1.username);
-        Assertions.assertThat(sessions).hasSize(1);
-
-        // when
-        sessionSubscriber.log(SessionSubscriber.Type.LOGOUT, null, 
session1.getDate(), SessionSubscriber.CausedBy.USER, session1.sessionGuid, 
null);
-
-        // then
-        sessions = sessionLogEntryRepository.findActiveSessions();
-        Assertions.assertThat(sessions).hasSize(1);
-        
Assertions.assertThat(sessions.get(0)).extracting(SessionLogEntry::getUsername).isEqualTo(session2.username);
-
-        sessionSubscriber.log(SessionSubscriber.Type.LOGOUT, null, 
session2.getDate(), SessionSubscriber.CausedBy.USER, session2.sessionGuid, 
null);
-
-        // then
-        sessions = sessionLogEntryRepository.findActiveSessions();
-        Assertions.assertThat(sessions).isEmpty();
-
-
-    }
 
     @Inject @Qualifier("default") SessionSubscriber sessionSubscriber;
     @Inject SessionLogEntryRepository<? extends SessionLogEntry> 
sessionLogEntryRepository;
diff --git 
a/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/IsisModuleExtAuditTrailPersistenceJdo.java
 
b/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/IsisModuleExtAuditTrailPersistenceJdo.java
index 21ae33a935..ee75372760 100644
--- 
a/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/IsisModuleExtAuditTrailPersistenceJdo.java
+++ 
b/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/IsisModuleExtAuditTrailPersistenceJdo.java
@@ -23,10 +23,10 @@ package org.apache.isis.audittrail.jdo;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Import;
 
+import org.apache.isis.audittrail.applib.IsisModuleExtAuditTrailApplib;
+import org.apache.isis.audittrail.jdo.dom.AuditTrailEntry;
+import org.apache.isis.audittrail.jdo.dom.AuditTrailEntryRepository;
 import 
org.apache.isis.persistence.jdo.datanucleus.IsisModulePersistenceJdoDatanucleus;
-import org.apache.isis.sessionlog.applib.IsisModuleExtSessionLogApplib;
-import org.apache.isis.sessionlog.jdo.dom.SessionLogEntry;
-import org.apache.isis.sessionlog.jdo.dom.SessionLogEntryRepository;
 import org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
 import org.apache.isis.testing.fixtures.applib.modules.ModuleWithFixtures;
@@ -37,23 +37,23 @@ import 
org.apache.isis.testing.fixtures.applib.teardown.jdo.TeardownFixtureJdoAb
 @Import({
         // modules
         IsisModuleTestingFixturesApplib.class,
-        IsisModuleExtSessionLogApplib.class,
+        IsisModuleExtAuditTrailApplib.class,
         IsisModulePersistenceJdoDatanucleus.class,
 
         // services
-        SessionLogEntryRepository.class,
+        AuditTrailEntryRepository.class,
 
         // entities, eager meta-model introspection
-        SessionLogEntry.class,
+        AuditTrailEntry.class,
 })
-public class IsisModuleExtSessionLogPersistenceJdo implements 
ModuleWithFixtures {
+public class IsisModuleExtAuditTrailPersistenceJdo implements 
ModuleWithFixtures {
 
     @Override
     public FixtureScript getTeardownFixture() {
         return new TeardownFixtureJdoAbstract() {
             @Override
             protected void execute(final ExecutionContext executionContext) {
-                deleteFrom(SessionLogEntry.class);
+                deleteFrom(AuditTrailEntry.class);
             }
         };
     }
diff --git 
a/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/dom/AuditTrailEntry.java
 
b/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/dom/AuditTrailEntry.java
index eacf27f585..627e2358b4 100644
--- 
a/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/dom/AuditTrailEntry.java
+++ 
b/extensions/security/audittrail/persistence-jdo/src/main/java/org/apache/isis/audittrail/jdo/dom/AuditTrailEntry.java
@@ -36,6 +36,10 @@ import javax.jdo.annotations.Persistent;
 import javax.jdo.annotations.PrimaryKey;
 import javax.jdo.annotations.Queries;
 import javax.jdo.annotations.Query;
+import javax.jdo.annotations.Unique;
+import javax.jdo.annotations.Uniques;
+import javax.jdo.annotations.Version;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
 
 
 import org.apache.isis.applib.Identifier;
@@ -45,11 +49,13 @@ import org.apache.isis.applib.annotation.Programmatic;
 import org.apache.isis.applib.annotation.Property;
 import org.apache.isis.applib.annotation.PropertyLayout;
 import org.apache.isis.applib.annotation.Where;
+import org.apache.isis.applib.jaxb.PersistentEntityAdapter;
 import org.apache.isis.applib.mixins.system.DomainChangeRecord;
 import org.apache.isis.applib.services.bookmark.Bookmark;
 import org.apache.isis.applib.util.ObjectContracts;
 import org.apache.isis.applib.util.TitleBuffer;
 import org.apache.isis.audittrail.applib.IsisModuleExtAuditTrailApplib;
+import org.apache.isis.audittrail.applib.dom.AuditTrailEntry;
 import org.apache.isis.audittrail.applib.dom.AuditTrailEntry.Nq;
 
 import lombok.Getter;
@@ -58,18 +64,11 @@ import lombok.Setter;
         identityType = IdentityType.DATASTORE,
         schema = AuditTrailEntry.SCHEMA,
         table = AuditTrailEntry.TABLE)
-@DatastoreIdentity(
-        strategy = IdGeneratorStrategy.IDENTITY,
-        column = "id")
 @Indices({
-    @Index(name="pk", unique="true",
-            columns={
-                @Column(name="interactionId"),
-                @Column(name="sequence"),
-                @Column(name="target"),
-                @Column(name="propertyId")
-                }),
-    @Index(name = "target_timestamp_IDX", members = { "target", "timestamp" }, 
unique="false"),
+        @Index(name = "target_propertyId_timestamp_IDX", members = { "target", 
"propertyId", "timestamp" }, unique = "false"),
+        @Index(name = "target_timestamp_IDX", members = { "target", 
"timestamp" }, unique = "false"),
+        @Index(name = "timestamp_IDX", members = { "timestamp" }, unique = 
"false"),
+        @Index(name = "interactionId_IDX", members = { "interactionId" }, 
unique = "false")
 })
 @Queries( {
     @Query(
@@ -152,6 +151,9 @@ import lombok.Setter;
                   + " ORDER BY timestamp DESC "
                   + " RANGE 0,30")
 })
+@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
+@DatastoreIdentity(strategy = IdGeneratorStrategy.IDENTITY, column = "id")
+@Version(column = "version")
 @Named(AuditTrailEntry.LOGICAL_TYPE_NAME)
 @DomainObject(
         editing = Editing.DISABLED
@@ -211,7 +213,6 @@ extends 
org.apache.isis.audittrail.applib.dom.AuditTrailEntry {
     private String logicalMemberIdentifier;
 
 
-
     @Column(allowsNull = PropertyId.ALLOWS_NULL, length = 
PropertyId.MAX_LENGTH)
     @PropertyId
     @Getter @Setter
diff --git 
a/extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/sessionlog/jdo/SessionLog_IntegTest.java
 
b/extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/audittrail/jdo/AuditTrail_IntegTest.java
similarity index 79%
copy from 
extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/sessionlog/jdo/SessionLog_IntegTest.java
copy to 
extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/audittrail/jdo/AuditTrail_IntegTest.java
index 0ae5371dea..6536dd103a 100644
--- 
a/extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/sessionlog/jdo/SessionLog_IntegTest.java
+++ 
b/extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/audittrail/jdo/AuditTrail_IntegTest.java
@@ -16,12 +16,8 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.sessionlog.jdo;
+package org.apache.isis.audittrail.jdo;
 
-import javax.inject.Inject;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
 import org.springframework.boot.SpringBootConfiguration;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -33,16 +29,13 @@ import org.springframework.test.context.ActiveProfiles;
 import org.apache.isis.core.config.presets.IsisPresets;
 import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
 import org.apache.isis.security.bypass.IsisModuleSecurityBypass;
-import org.apache.isis.sessionlog.applib.SessionLogIntegTestAbstract;
-import org.apache.isis.sessionlog.jdo.dom.SessionLogEntryRepository;
-
-import lombok.Getter;
+import org.apache.isis.sessionlog.applib.AuditTrailIntegTestAbstract;
 
 @SpringBootTest(
-        classes = SessionLog_IntegTest.AppManifest.class
+        classes = AuditTrail_IntegTest.AppManifest.class
 )
 @ActiveProfiles("test")
-public class SessionLog_IntegTest extends SessionLogIntegTestAbstract {
+public class AuditTrail_IntegTest extends AuditTrailIntegTestAbstract {
 
 
     @SpringBootConfiguration
@@ -50,7 +43,7 @@ public class SessionLog_IntegTest extends 
SessionLogIntegTestAbstract {
     @Import({
             IsisModuleCoreRuntimeServices.class,
             IsisModuleSecurityBypass.class,
-            IsisModuleExtSessionLogPersistenceJdo.class,
+            IsisModuleExtAuditTrailPersistenceJdo.class,
     })
     @PropertySources({
             @PropertySource(IsisPresets.UseLog4j2Test),
diff --git 
a/extensions/security/audittrail/persistence-jdo/src/test/resources/application-test.yml
 
b/extensions/security/audittrail/persistence-jdo/src/test/resources/application-test.yml
index 7300d77584..8f81a2a0d4 100644
--- 
a/extensions/security/audittrail/persistence-jdo/src/test/resources/application-test.yml
+++ 
b/extensions/security/audittrail/persistence-jdo/src/test/resources/application-test.yml
@@ -17,7 +17,7 @@
 isis:
   persistence:
     schema:
-      auto-create-schemas: "ISISEXTSESSIONLOG"
+      auto-create-schemas: "ISISEXTAUDITTRAIL"
 
 
 datanucleus:
diff --git 
a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/IsisModuleExtSessionLogPersistenceJpa.java
 
b/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/IsisModuleExtAuditTrailPersistenceJpa.java
similarity index 95%
copy from 
extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/IsisModuleExtSessionLogPersistenceJpa.java
copy to 
extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/IsisModuleExtAuditTrailPersistenceJpa.java
index eb2f74fea1..a2b8bc5afd 100644
--- 
a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/IsisModuleExtSessionLogPersistenceJpa.java
+++ 
b/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/IsisModuleExtAuditTrailPersistenceJpa.java
@@ -18,7 +18,7 @@
  *
  */
 
-package org.apache.isis.sessionlog.jpa;
+package org.apache.isis.audittrail.jpa;
 
 import org.springframework.boot.autoconfigure.domain.EntityScan;
 import org.springframework.context.annotation.Configuration;
@@ -52,7 +52,7 @@ import 
org.apache.isis.testing.fixtures.applib.teardown.jdo.TeardownFixtureJdoAb
 @EntityScan(basePackageClasses = {
         SessionLogEntry.class,
 })
-public class IsisModuleExtSessionLogPersistenceJpa implements 
ModuleWithFixtures {
+public class IsisModuleExtAuditTrailPersistenceJpa implements 
ModuleWithFixtures {
 
     @Override
     public FixtureScript getTeardownFixture() {
diff --git 
a/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/dom/AuditTrailEntry.java
 
b/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/dom/AuditTrailEntry.java
new file mode 100644
index 0000000000..aa4bdb8e54
--- /dev/null
+++ 
b/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/dom/AuditTrailEntry.java
@@ -0,0 +1,232 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.isis.audittrail.jpa.dom;
+
+import java.util.UUID;
+
+import javax.inject.Named;
+import javax.persistence.Column;
+import javax.persistence.Convert;
+import javax.persistence.Entity;
+import javax.persistence.EntityListeners;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.NamedQueries;
+import javax.persistence.NamedQuery;
+import javax.persistence.Table;
+import javax.persistence.UniqueConstraint;
+import javax.persistence.Version;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.jaxb.PersistentEntityAdapter;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.audittrail.applib.dom.AuditTrailEntry.Nq;
+import org.apache.isis.persistence.jpa.applib.integration.IsisEntityListener;
+import 
org.apache.isis.persistence.jpa.integration.typeconverters.applib.IsisBookmarkConverter;
+import 
org.apache.isis.persistence.jpa.integration.typeconverters.java.util.JavaUtilUuidConverter;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+@Entity
+@Table(
+        schema = AuditTrailEntry.SCHEMA,
+        name = AuditTrailEntry.TABLE,
+        indexes = {
+                @Index(name = "target_propertyId_timestamp_IDX", columnList = 
"target, propertyId, timestamp", unique = false),
+                @Index(name = "target_timestamp_IDX", columnList = "target, 
timestamp", unique = false),
+                @Index(name = "timestamp_IDX", columnList = "timestamp", 
unique = false)
+                @Index(name = "interactionId_IDX", columnList = 
"interactionId", unique = false)
+        }
+)
+@NamedQueries( {
+    @NamedQuery(
+            name = Nq.FIND_BY_INTERACTION_ID,
+            query = "SELECT e "
+                  + "  FROM AuditTrailEntry e "
+                  + " WHERE e.interactionId = :interactionId"),
+    @NamedQuery(
+            name = Nq.FIND_FIRST_BY_TARGET,
+            query = "SELECT e "
+                  + "  FROM AuditTrailEntry e "
+                  + " WHERE e.target = :target "
+                  + " ORDER BY e.timestamp ASC "),  // programmatic range 0,2
+    @NamedQuery(
+            name = Nq.FIND_RECENT_BY_TARGET,
+            query = "SELECT e "
+                  + "  FROM AuditTrailEntry e "
+                  + " WHERE e.target = :target "
+                  + " ORDER BY e.timestamp DESC "),   // programmatic range 
0,100
+    @NamedQuery(
+            name = Nq.FIND_BY_TARGET_AND_TIMESTAMP_BETWEEN,
+            query = "SELECT e "
+                  + "  FROM AuditTrailEntry e "
+                  + " WHERE e.target = :target "
+                  + "   AND e.timestamp >= :from "
+                  + "   AND e.timestamp <= :to "
+                  + "ORDER BY e.timestamp DESC"),
+    @NamedQuery(
+            name = Nq.FIND_BY_TARGET_AND_TIMESTAMP_AFTER,
+            query = "SELECT e "
+                  + "  FROM AuditTrailEntry e "
+                  + " WHERE e.target = :target "
+                  + "   AND e.timestamp >= :from "
+                  + " ORDER BY e.timestamp DESC"),
+    @NamedQuery(
+            name  = Nq.FIND_BY_TARGET_AND_TIMESTAMP_BEFORE,
+            query = "SELECT e "
+                  + "  FROM AuditTrailEntry e "
+                  + " WHERE e.target = :target "
+                  + "   AND e.timestamp <= :to "
+                  + " ORDER BY e.timestamp DESC"),
+    @NamedQuery(
+            name  = Nq.FIND_BY_TARGET,
+            query = "SELECT e "
+                  + "  FROM AuditTrailEntry e "
+                  + " WHERE e.target = :target "
+                  + " ORDER BY e.timestamp DESC"),
+    @NamedQuery(
+            name  = Nq.FIND_BY_TIMESTAMP_BETWEEN,
+            query = "SELECT e "
+                  + "  FROM AuditTrailEntry e "
+                  + " WHERE timestamp >= :from "
+                  + "    && timestamp <= :to "
+                  + " ORDER BY this.timestamp DESC"),
+    @NamedQuery(
+            name  = Nq.FIND_BY_TIMESTAMP_AFTER,
+            query = "SELECT e "
+                  + "  FROM AuditTrailEntry e "
+                  + " WHERE e.timestamp >= :from "
+                  + " ORDER BY e.timestamp DESC"),
+    @NamedQuery(
+            name  = Nq.FIND_BY_TIMESTAMP_BEFORE,
+            query = "SELECT e "
+                  + "  FROM AuditTrailEntry e "
+                  + " WHERE e.timestamp <= :to "
+                  + " ORDER BY e.timestamp DESC"),
+    @NamedQuery(
+            name  = Nq.FIND,
+            query = "SELECT e "
+                  + "  FROM AuditTrailEntry e "
+                  + " ORDER BY e.timestamp DESC"),
+    @NamedQuery(
+            name = Nq.FIND_RECENT_BY_TARGET_AND_PROPERTY_ID,
+            query = "SELECT e "
+                  + "  FROM AuditTrailEntry e "
+                  + " WHERE e.target = :target "
+                  + "   AND e.propertyId = :propertyId "
+                  + " ORDER BY e.timestamp DESC ") // programmatic limit 0,30
+})
+@EntityListeners(IsisEntityListener.class)
+@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
+@Named(AuditTrailEntry.LOGICAL_TYPE_NAME)
+@DomainObject(
+        editing = Editing.DISABLED
+)
+public class AuditTrailEntry
+extends org.apache.isis.audittrail.applib.dom.AuditTrailEntry {
+
+    static final String FQCN = 
"org.apache.isis.audittrail.jdo.dom.AuditTrailEntry";
+
+    public AuditTrailEntry() {
+        this(null, null, null, null, null, null, null, null);
+    }
+
+    public AuditTrailEntry(
+            final java.sql.Timestamp timestamp,
+            final String username,
+            final Bookmark target,
+            final String logicalMemberIdentifier,
+            final String propertyId,
+            final String preValue,
+            final String postValue,
+            final UUID interactionId) {
+        super(timestamp, username, target, logicalMemberIdentifier, 
propertyId, preValue, postValue, interactionId);
+    }
+
+    @Id
+    @GeneratedValue
+    private Long id;
+
+
+    @Version
+    private Long version;
+
+
+    @Column(nullable = Username.NULLABLE, length = Username.MAX_LENGTH)
+    @Username
+    @Getter @Setter
+    private String username;
+
+
+    @Column(nullable = Timestamp.NULLABLE)
+    @Timestamp
+    @Getter @Setter
+    private java.sql.Timestamp timestamp;
+
+
+    @Convert(converter = JavaUtilUuidConverter.class)
+    @Column(nullable = InteractionId.NULLABLE, length = 
InteractionId.MAX_LENGTH)
+    @InteractionId
+    @Getter @Setter
+    private UUID interactionId;
+
+
+    @Column(nullable = Sequence.NULLABLE)
+    @Sequence
+    @Getter @Setter
+    private int sequence;
+
+
+    @Convert(converter = IsisBookmarkConverter.class)
+    @Column(nullable = Target.NULLABLE, length = Target.MAX_LENGTH)
+    @Target
+    @Getter @Setter
+    private Bookmark target;
+
+
+    @Column(nullable = LogicalMemberIdentifier.NULLABLE, length = 
LogicalMemberIdentifier.MAX_LENGTH)
+    @LogicalMemberIdentifier
+    @Getter @Setter
+    private String logicalMemberIdentifier;
+
+
+    @Column(nullable = PropertyId.NULLABLE, length = PropertyId.MAX_LENGTH)
+    @PropertyId
+    @Getter @Setter
+    private String propertyId;
+
+
+    @Column(nullable = PreValue.NULLABLE, length = PreValue.MAX_LENGTH)
+    @PreValue
+    @Getter @Setter
+    private String preValue;
+
+
+    @Column(nullable = PostValue.NULLABLE, length = PostValue.MAX_LENGTH)
+    @PostValue
+    @Getter @Setter
+    private String postValue;
+
+}
diff --git 
a/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/dom/AuditTrailEntryRepository.java
 
b/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/dom/AuditTrailEntryRepository.java
new file mode 100644
index 0000000000..fdb7284daf
--- /dev/null
+++ 
b/extensions/security/audittrail/persistence-jpa/src/main/java/org/apache/isis/audittrail/jpa/dom/AuditTrailEntryRepository.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.isis.audittrail.jpa.dom;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.audittrail.applib.dom.AuditTrailEntry;
+
+@Service
+public class AuditTrailEntryRepository extends 
org.apache.isis.audittrail.applib.dom.AuditTrailEntryRepository<AuditTrailEntry>
 {
+
+    public AuditTrailEntryRepository() {
+        super(AuditTrailEntry.class);
+    }
+}
diff --git 
a/extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/sessionlog/jdo/SessionLog_IntegTest.java
 
b/extensions/security/audittrail/persistence-jpa/src/test/java/org/apache/isis/audittrail/jpa/AuditTrail_IntegTest.java
similarity index 79%
rename from 
extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/sessionlog/jdo/SessionLog_IntegTest.java
rename to 
extensions/security/audittrail/persistence-jpa/src/test/java/org/apache/isis/audittrail/jpa/AuditTrail_IntegTest.java
index 0ae5371dea..368b4bb0e0 100644
--- 
a/extensions/security/audittrail/persistence-jdo/src/test/java/org/apache/isis/sessionlog/jdo/SessionLog_IntegTest.java
+++ 
b/extensions/security/audittrail/persistence-jpa/src/test/java/org/apache/isis/audittrail/jpa/AuditTrail_IntegTest.java
@@ -16,12 +16,8 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-package org.apache.isis.sessionlog.jdo;
+package org.apache.isis.audittrail.jpa;
 
-import javax.inject.Inject;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
 import org.springframework.boot.SpringBootConfiguration;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -33,16 +29,13 @@ import org.springframework.test.context.ActiveProfiles;
 import org.apache.isis.core.config.presets.IsisPresets;
 import org.apache.isis.core.runtimeservices.IsisModuleCoreRuntimeServices;
 import org.apache.isis.security.bypass.IsisModuleSecurityBypass;
-import org.apache.isis.sessionlog.applib.SessionLogIntegTestAbstract;
-import org.apache.isis.sessionlog.jdo.dom.SessionLogEntryRepository;
-
-import lombok.Getter;
+import org.apache.isis.sessionlog.applib.AuditTrailIntegTestAbstract;
 
 @SpringBootTest(
-        classes = SessionLog_IntegTest.AppManifest.class
+        classes = AuditTrail_IntegTest.AppManifest.class
 )
 @ActiveProfiles("test")
-public class SessionLog_IntegTest extends SessionLogIntegTestAbstract {
+public class AuditTrail_IntegTest extends AuditTrailIntegTestAbstract {
 
 
     @SpringBootConfiguration
@@ -50,7 +43,7 @@ public class SessionLog_IntegTest extends 
SessionLogIntegTestAbstract {
     @Import({
             IsisModuleCoreRuntimeServices.class,
             IsisModuleSecurityBypass.class,
-            IsisModuleExtSessionLogPersistenceJdo.class,
+            IsisModuleExtAuditTrailPersistenceJpa.class,
     })
     @PropertySources({
             @PropertySource(IsisPresets.UseLog4j2Test),
diff --git 
a/extensions/security/audittrail/persistence-jdo/src/test/resources/application-test.yml
 
b/extensions/security/audittrail/persistence-jpa/src/test/resources/application-test.yml
similarity index 84%
copy from 
extensions/security/audittrail/persistence-jdo/src/test/resources/application-test.yml
copy to 
extensions/security/audittrail/persistence-jpa/src/test/resources/application-test.yml
index 7300d77584..01cf42f46f 100644
--- 
a/extensions/security/audittrail/persistence-jdo/src/test/resources/application-test.yml
+++ 
b/extensions/security/audittrail/persistence-jpa/src/test/resources/application-test.yml
@@ -17,10 +17,13 @@
 isis:
   persistence:
     schema:
-      auto-create-schemas: "ISISEXTSESSIONLOG"
+      auto-create-schemas: "ISISEXTAUDITTRAIL"
 
+  extensions:
+    session-log:
+      auto-logout-on-restart: false
+
+spring:
+  jpa:
+    show-sql: true
 
-datanucleus:
-  schema:
-    generate-database:
-      mode: "create"
diff --git a/extensions/security/audittrail/pom.xml 
b/extensions/security/audittrail/pom.xml
index 2a818d943d..38ba37a439 100644
--- a/extensions/security/audittrail/pom.xml
+++ b/extensions/security/audittrail/pom.xml
@@ -89,8 +89,6 @@
     <modules>
        <module>applib</module>
        <module>persistence-jdo</module>
-<!--
        <module>persistence-jpa</module>
--->
     </modules>
 </project>
diff --git 
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/permission/dom/ApplicationPermissionRepository.java
 
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/permission/dom/ApplicationPermissionRepository.java
index 8104067469..c74186afe1 100644
--- 
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/permission/dom/ApplicationPermissionRepository.java
+++ 
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/permission/dom/ApplicationPermissionRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
 
 import org.springframework.stereotype.Repository;
 
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
 import 
org.apache.isis.extensions.secman.applib.permission.dom.ApplicationPermissionRepositoryAbstract;
 
 @Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE + 
".ApplicationPermissionRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE + 
".ApplicationPermissionRepository")
 public class ApplicationPermissionRepository
 extends ApplicationPermissionRepositoryAbstract<ApplicationPermission> {
 
diff --git 
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRoleRepository.java
 
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRoleRepository.java
index c065bb498a..ba1e1f871c 100644
--- 
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRoleRepository.java
+++ 
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/role/dom/ApplicationRoleRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
 
 import org.springframework.stereotype.Repository;
 
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
 import 
org.apache.isis.extensions.secman.applib.role.dom.ApplicationRoleRepositoryAbstract;
 
 @Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE + ".ApplicationRoleRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE + ".ApplicationRoleRepository")
 public class ApplicationRoleRepository
 extends ApplicationRoleRepositoryAbstract<ApplicationRole> {
 
diff --git 
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancyRepository.java
 
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancyRepository.java
index 5d3bd7761a..4b93e23a22 100644
--- 
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancyRepository.java
+++ 
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/tenancy/dom/ApplicationTenancyRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
 
 import org.springframework.stereotype.Repository;
 
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
 import 
org.apache.isis.extensions.secman.applib.tenancy.dom.ApplicationTenancyRepositoryAbstract;
 
 @Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE + 
".ApplicationTenancyRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE + ".ApplicationTenancyRepository")
 public class ApplicationTenancyRepository
 extends ApplicationTenancyRepositoryAbstract<ApplicationTenancy> {
 
diff --git 
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUserRepository.java
 
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUserRepository.java
index f8333cdb4a..a4a214f830 100644
--- 
a/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUserRepository.java
+++ 
b/extensions/security/secman/persistence-jdo/src/main/java/org/apache/isis/extensions/secman/jdo/user/dom/ApplicationUserRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
 
 import org.springframework.stereotype.Repository;
 
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
 import 
org.apache.isis.extensions.secman.applib.user.dom.ApplicationUserRepositoryAbstract;
 
 @Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE + ".ApplicationUserRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE + ".ApplicationUserRepository")
 public class ApplicationUserRepository
 extends ApplicationUserRepositoryAbstract<ApplicationUser> {
 
diff --git 
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/permission/dom/ApplicationPermissionRepository.java
 
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/permission/dom/ApplicationPermissionRepository.java
index ac91ecda96..95614c2cea 100644
--- 
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/permission/dom/ApplicationPermissionRepository.java
+++ 
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/permission/dom/ApplicationPermissionRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
 
 import org.springframework.stereotype.Repository;
 
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
 import 
org.apache.isis.extensions.secman.applib.permission.dom.ApplicationPermissionRepositoryAbstract;
 
 @Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE + 
".ApplicationPermissionRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE + 
".ApplicationPermissionRepository")
 public class ApplicationPermissionRepository
 extends ApplicationPermissionRepositoryAbstract<ApplicationPermission> {
 
diff --git 
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/role/dom/ApplicationRoleRepository.java
 
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/role/dom/ApplicationRoleRepository.java
index 9c5ea5d5cc..a83e07a80d 100644
--- 
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/role/dom/ApplicationRoleRepository.java
+++ 
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/role/dom/ApplicationRoleRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
 
 import org.springframework.stereotype.Repository;
 
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
 import 
org.apache.isis.extensions.secman.applib.role.dom.ApplicationRoleRepositoryAbstract;
 
 @Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE + ".ApplicationRoleRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE + ".ApplicationRoleRepository")
 public class ApplicationRoleRepository
 extends ApplicationRoleRepositoryAbstract<ApplicationRole> {
 
diff --git 
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/tenancy/dom/ApplicationTenancyRepository.java
 
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/tenancy/dom/ApplicationTenancyRepository.java
index 3c953d8051..6edd02cbfb 100644
--- 
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/tenancy/dom/ApplicationTenancyRepository.java
+++ 
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/tenancy/dom/ApplicationTenancyRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
 
 import org.springframework.stereotype.Repository;
 
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
 import 
org.apache.isis.extensions.secman.applib.tenancy.dom.ApplicationTenancyRepositoryAbstract;
 
 @Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE + 
".ApplicationTenancyRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE + ".ApplicationTenancyRepository")
 public class ApplicationTenancyRepository
 extends ApplicationTenancyRepositoryAbstract<ApplicationTenancy> {
 
diff --git 
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/user/dom/ApplicationUserRepository.java
 
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/user/dom/ApplicationUserRepository.java
index 1b1b96b350..d8e4c08504 100644
--- 
a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/user/dom/ApplicationUserRepository.java
+++ 
b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/user/dom/ApplicationUserRepository.java
@@ -22,10 +22,11 @@ import javax.inject.Named;
 
 import org.springframework.stereotype.Repository;
 
+import org.apache.isis.extensions.secman.applib.IsisModuleExtSecmanApplib;
 import 
org.apache.isis.extensions.secman.applib.user.dom.ApplicationUserRepositoryAbstract;
 
 @Repository
-@Named(IsisModuleCoreRuntimeServices.NAMESPACE + ".ApplicationUserRepository")
+@Named(IsisModuleExtSecmanApplib.NAMESPACE + ".ApplicationUserRepository")
 public class ApplicationUserRepository
 extends ApplicationUserRepositoryAbstract<ApplicationUser> {
 
diff --git 
a/extensions/security/sessionlog/applib/src/test/java/org/apache/isis/sessionlog/applib/SessionLogIntegTestAbstract.java
 
b/extensions/security/sessionlog/applib/src/test/java/org/apache/isis/sessionlog/applib/SessionLogIntegTestAbstract.java
index 642247e9d6..10963f788f 100644
--- 
a/extensions/security/sessionlog/applib/src/test/java/org/apache/isis/sessionlog/applib/SessionLogIntegTestAbstract.java
+++ 
b/extensions/security/sessionlog/applib/src/test/java/org/apache/isis/sessionlog/applib/SessionLogIntegTestAbstract.java
@@ -136,7 +136,7 @@ public abstract class SessionLogIntegTestAbstract extends 
IsisIntegrationTestAbs
 
     }
 
-    @Inject @Qualifier("default") SessionSubscriber sessionSubscriber;
+    @Inject @Qualifier("sessionlog") SessionSubscriber sessionSubscriber;
     @Inject SessionLogEntryRepository<? extends SessionLogEntry> 
sessionLogEntryRepository;
 
 }
diff --git 
a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/IsisModuleExtSessionLogPersistenceJpa.java
 
b/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/IsisModuleExtSessionLogPersistenceJpa.java
index eb2f74fea1..8c84444c62 100644
--- 
a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/IsisModuleExtSessionLogPersistenceJpa.java
+++ 
b/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/IsisModuleExtSessionLogPersistenceJpa.java
@@ -33,6 +33,7 @@ import 
org.apache.isis.testing.fixtures.applib.IsisModuleTestingFixturesApplib;
 import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
 import org.apache.isis.testing.fixtures.applib.modules.ModuleWithFixtures;
 import 
org.apache.isis.testing.fixtures.applib.teardown.jdo.TeardownFixtureJdoAbstract;
+import 
org.apache.isis.testing.fixtures.applib.teardown.jpa.TeardownFixtureJpaAbstract;
 
 
 @Configuration
@@ -56,7 +57,7 @@ public class IsisModuleExtSessionLogPersistenceJpa implements 
ModuleWithFixtures
 
     @Override
     public FixtureScript getTeardownFixture() {
-        return new TeardownFixtureJdoAbstract() {
+        return new TeardownFixtureJpaAbstract() {
             @Override
             protected void execute(final ExecutionContext executionContext) {
                 deleteFrom(SessionLogEntry.class);
diff --git 
a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/dom/SessionLogEntry.java
 
b/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/dom/SessionLogEntry.java
index 8475cd509a..e83f639224 100644
--- 
a/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/dom/SessionLogEntry.java
+++ 
b/extensions/security/sessionlog/persistence-jpa/src/main/java/org/apache/isis/sessionlog/jpa/dom/SessionLogEntry.java
@@ -156,7 +156,7 @@ public class SessionLogEntry extends 
org.apache.isis.sessionlog.applib.dom.Sessi
     }
 
     public SessionLogEntry() {
-        super(null, null, null, null, null);
+        this(null, null, null, null, null);
     }
 
 
diff --git 
a/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/teardown/jpa/TeardownFixtureJpaAbstract.java
 
b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/teardown/jpa/TeardownFixtureJpaAbstract.java
new file mode 100644
index 0000000000..755284ceaa
--- /dev/null
+++ 
b/testing/fixtures/applib/src/main/java/org/apache/isis/testing/fixtures/applib/teardown/jpa/TeardownFixtureJpaAbstract.java
@@ -0,0 +1,61 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.isis.testing.fixtures.applib.teardown.jpa;
+
+import java.util.Optional;
+
+import javax.inject.Inject;
+import javax.jdo.PersistenceManagerFactory;
+import javax.jdo.annotations.DiscriminatorStrategy;
+import javax.jdo.annotations.InheritanceStrategy;
+import javax.jdo.metadata.DiscriminatorMetadata;
+import javax.jdo.metadata.InheritanceMetadata;
+import javax.jdo.metadata.TypeMetadata;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceUnitUtil;
+import javax.persistence.metamodel.EntityType;
+
+import org.springframework.data.jpa.repository.JpaContext;
+
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.commons.internal.base._Lazy;
+import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.commons.internal.exceptions._Exceptions;
+import org.apache.isis.persistence.jdo.applib.services.JdoSupportService;
+import org.apache.isis.testing.fixtures.applib.fixturescripts.FixtureScript;
+
+/**
+ * @since 2.x {@index}
+ */
+@Programmatic
+public abstract class TeardownFixtureJpaAbstract extends FixtureScript {
+
+    protected void deleteFrom(Class<?> cls) {
+
+        preDeleteFrom(cls);
+        repositoryService.removeAll(cls);
+        postDeleteFrom(cls);
+    }
+
+    protected void preDeleteFrom(final Class<?> cls) {}
+
+    protected void postDeleteFrom(final Class<?> cls) {}
+
+
+}

Reply via email to