You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2023/03/15 14:29:01 UTC

[causeway] branch CAUSEWAY-3377 created (now 90da43c240)

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

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


      at 90da43c240 CAUSEWAY-3377: updates tagger, rationalizes some framework logical type names

This branch includes the following new commits:

     new 90da43c240 CAUSEWAY-3377: updates tagger, rationalizes some framework logical type names

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[causeway] 01/01: CAUSEWAY-3377: updates tagger, rationalizes some framework logical type names

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 90da43c2402c983a50121e5e1c34fce3d7cdd3f0
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Mar 15 14:28:49 2023 +0000

    CAUSEWAY-3377: updates tagger, rationalizes some framework logical type names
---
 .../causeway/applib/CausewayModuleApplib.java      |  1 +
 .../services/metamodel/MetaModelServiceMenu.java   | 23 ++++----
 .../causeway/applib/value/LocalResourcePath.java   |  4 +-
 .../causeway/schema/CausewayModuleSchema.java      |  1 +
 .../interaction/CausewayModuleCoreInteraction.java |  1 +
 ...teractionAwareTransactionalBoundaryHandler.java |  5 +-
 .../metamodel/CausewayModuleCoreMetamodel.java     |  1 +
 .../core/metamodel/inspect/model/ActionNode.java   |  2 +-
 .../metamodel/inspect/model/CollectionNode.java    |  2 +-
 .../metamodel/inspect/model/FacetAttrNode.java     |  2 +-
 .../core/metamodel/inspect/model/FacetNode.java    |  2 +-
 .../metamodel/services/ServiceInjectorDefault.java |  4 +-
 .../ApplicationFeatureIdValueSemantics.java        |  2 +-
 .../valuesemantics/BigDecimalValueSemantics.java   |  2 +-
 .../valuesemantics/BigIntegerValueSemantics.java   |  2 +-
 .../valuesemantics/BlobValueSemantics.java         |  2 +-
 .../valuesemantics/BookmarkValueSemantics.java     |  2 +-
 .../valuesemantics/BooleanValueSemantics.java      |  2 +-
 .../BufferedImageValueSemantics.java               |  2 +-
 .../valuesemantics/ByteValueSemantics.java         |  2 +-
 .../valuesemantics/ChangesDtoValueSemantics.java   |  2 +-
 .../valuesemantics/CharacterValueSemantics.java    |  2 +-
 .../valuesemantics/ClobValueSemantics.java         |  2 +-
 .../valuesemantics/CommandDtoValueSemantics.java   |  2 +-
 .../valuesemantics/DoubleValueSemantics.java       |  2 +-
 .../valuesemantics/FloatValueSemantics.java        |  2 +-
 .../IdStringifierForSerializable.java              |  2 +-
 .../valuesemantics/IntValueSemantics.java          |  2 +-
 .../InteractionDtoValueSemantics.java              |  2 +-
 .../LocalResourcePathValueSemantics.java           |  2 +-
 .../valuesemantics/LocaleValueSemantics.java       |  2 +-
 .../valuesemantics/LongValueSemantics.java         |  2 +-
 .../valuesemantics/MarkupValueSemantics.java       |  2 +-
 .../valuesemantics/OidDtoValueSemantics.java       |  6 ++-
 .../valuesemantics/PasswordValueSemantics.java     |  2 +-
 .../valuesemantics/ShortValueSemantics.java        |  2 +-
 .../valuesemantics/StringValueSemantics.java       |  2 +-
 .../valuesemantics/TreeNodeValueSemantics.java     |  2 +-
 .../valuesemantics/URLValueSemantics.java          |  2 +-
 .../valuesemantics/UUIDValueSemantics.java         |  2 +-
 .../temporal/LocalDateTimeValueSemantics.java      |  2 +-
 .../temporal/LocalDateValueSemantics.java          |  2 +-
 .../temporal/LocalTimeValueSemantics.java          |  2 +-
 .../temporal/OffsetDateTimeValueSemantics.java     |  2 +-
 .../temporal/OffsetTimeValueSemantics.java         |  2 +-
 .../temporal/ZonedDateTimeValueSemantics.java      |  2 +-
 .../temporal/legacy/JavaSqlDateValueSemantics.java |  2 +-
 .../legacy/JavaSqlTimeStampValueSemantics.java     |  2 +-
 .../temporal/legacy/JavaSqlTimeValueSemantics.java |  2 +-
 .../legacy/JavaUtilDateValueSemantics.java         |  2 +-
 .../runtimeservices/spring/SpringBeansService.java |  3 +-
 .../runtimeservices/xml/XmlServiceDefault.java     |  5 +-
 .../manager/AuthenticationManager.java             |  5 +-
 .../standard/RandomCodeGeneratorDefault.java       |  5 +-
 .../manager/AuthorizationManager.java              |  5 +-
 .../transaction/CausewayModuleCoreTransaction.java |  1 +
 .../changetracking/events/TimestampService.java    |  5 +-
 .../CausewayConfigurationRoleAndPermissions.java   |  4 +-
 ...werRestfulObjectsSwaggerRoleAndPermissions.java |  2 +-
 .../dom/ApplicationUserRepositoryAbstract.java     |  2 +-
 .../dom/mixins/ApplicationUser_updatePassword.java |  2 +-
 .../realm/CausewayModuleExtSecmanShiroRealm.java   |  2 +-
 .../services/PasswordEncoderUsingJBcrypt.java      |  2 +-
 .../CausewayModuleExtSecmanEncryptionSpring.java   |  2 +-
 .../authenticator/AuthenticatorSecman.java         |  2 +-
 .../AuthenticatorSecmanAutoConfiguration.java      |  5 +-
 .../spiimpl/ImpersonateMenuAdvisorForSecman.java   |  2 +-
 .../userreg/UserRegistrationServiceForSecman.java  |  2 +-
 .../sse/wicket/CausewayModuleExtSseWicket.java     |  2 +
 .../sse/wicket/services/SseServiceDefault.java     | 35 +++++-------
 .../webmodule/WebModuleServerSentEvents.java       |  5 +-
 .../bypass/CausewayModuleSecurityBypass.java       |  2 +
 .../bypass/authentication/AuthenticatorBypass.java |  5 +-
 .../bypass/authorization/AuthorizorBypass.java     |  5 +-
 .../spring/CausewayModuleSecuritySpring.java       |  2 +
 .../spring/authentication/AuthenticatorSpring.java |  5 +-
 .../spring/webmodule/WebModuleSpringSecurity.java  |  5 +-
 .../fakedata/applib/services/FakeDataService.java  |  2 +-
 .../CausewayModuleValJodatimeIntegration.java      |  3 ++
 .../valuesemantics/JodaDateTimeValueSemantics.java |  5 +-
 .../JodaLocalDateTimeValueSemantics.java           |  5 +-
 .../JodaLocalDateValueSemantics.java               |  5 +-
 .../JodaLocalTimeValueSemantics.java               |  5 +-
 .../service/swagger/internal/TaggerDefault.java    | 62 +++++++++++++++++-----
 .../swagger/internal/_OpenApiModelFactory.java     |  2 +-
 85 files changed, 220 insertions(+), 119 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/causeway/applib/CausewayModuleApplib.java b/api/applib/src/main/java/org/apache/causeway/applib/CausewayModuleApplib.java
index 028b920a9d..0ae030b2c1 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/CausewayModuleApplib.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/CausewayModuleApplib.java
@@ -120,6 +120,7 @@ public class CausewayModuleApplib {
     public static final String NAMESPACE_CONF = "causeway.conf";    // for configuration; to minimize the risk of granting perms accidentally
     public static final String NAMESPACE_SUDO = "causeway.sudo";    // for impersonation
     public static final String NAMESPACE_FEAT = "causeway.feat";    // for app features
+    public static final String NAMESPACE_VALUE = "causeway.value";
 
     // -- UI EVENT CLASSES
 
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/services/metamodel/MetaModelServiceMenu.java b/api/applib/src/main/java/org/apache/causeway/applib/services/metamodel/MetaModelServiceMenu.java
index f0b26c4cba..65fd60b937 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/services/metamodel/MetaModelServiceMenu.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/services/metamodel/MetaModelServiceMenu.java
@@ -128,6 +128,9 @@ public class MetaModelServiceMenu {
                 @ParameterLayout(named = "file name (does not require an extension)")
                 final String fileName,
 
+                @Parameter
+                final boolean includeFrameworkNamespaces,
+
                 @ParameterLayout(named = "Namespaces",
                         describedAs="Subset of the complete meta model, only including namespaces starting with given prefix")
                 final List<String> namespaces,
@@ -231,8 +234,8 @@ public class MetaModelServiceMenu {
 
                 @ParameterLayout(named="Metamodel (Zipped XML)",
                         describedAs="Metamodel from a previous export, to compare the current with.")
-                @Parameter(fileAccept=".zip", optionality = Optionality.MANDATORY) final
-                        Blob zippedMetamodelBlob
+                @Parameter(fileAccept=".zip", optionality = Optionality.MANDATORY)
+                final Blob zippedMetamodelBlob
 
         ) throws IOException {
 
@@ -293,14 +296,14 @@ public class MetaModelServiceMenu {
     }
 
     private List<String> namespaceChoices() {
-        final DomainModel domainModel = metaModelService.getDomainModel();
-        final List<DomainMember> export = domainModel.getDomainMembers();
-        final SortedSet<String> namespaces = _Sets.newTreeSet();
-        for (final DomainMember domainMember : export) {
-            final String namespace = domainMember.getNamespace();
-            final String[] split = namespace.split("[.]");
-            final StringBuilder buf = new StringBuilder();
-            for (final String part : split) {
+        val domainModel = metaModelService.getDomainModel();
+        val domainMembers = domainModel.getDomainMembers();
+        val namespaces = _Sets.<String>newTreeSet();
+        for (val domainMember : domainMembers) {
+            val namespace = domainMember.getNamespace();
+            val namespaceParts = namespace.split("[.]");
+            val buf = new StringBuilder();
+            for (val part : namespaceParts) {
                 if(buf.length() > 0) {
                     buf.append(".");
                 }
diff --git a/api/applib/src/main/java/org/apache/causeway/applib/value/LocalResourcePath.java b/api/applib/src/main/java/org/apache/causeway/applib/value/LocalResourcePath.java
index a460c5204a..ac3b5f538b 100644
--- a/api/applib/src/main/java/org/apache/causeway/applib/value/LocalResourcePath.java
+++ b/api/applib/src/main/java/org/apache/causeway/applib/value/LocalResourcePath.java
@@ -52,11 +52,13 @@ import lombok.NonNull;
  * @since 2.0 {@index}
  * @see OpenUrlStrategy
  */
-@Named(CausewayModuleApplib.NAMESPACE + ".value.LocalResourcePath")
+@Named(LocalResourcePath.LOGICAL_TYPE_NAME)
 @Value
 @XmlJavaTypeAdapter(LocalResourcePath.JaxbToStringAdapter.class)   // for JAXB view model support
 public final class LocalResourcePath implements Serializable {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleApplib.NAMESPACE + ".value.LocalResourcePath";
+
     private static final long serialVersionUID = 1L;
     @NonNull private final String path;
     @Getter @NonNull private final OpenUrlStrategy openUrlStrategy;
diff --git a/api/schema/src/main/java/org/apache/causeway/schema/CausewayModuleSchema.java b/api/schema/src/main/java/org/apache/causeway/schema/CausewayModuleSchema.java
index 587390d5c0..a1e8cfac1e 100644
--- a/api/schema/src/main/java/org/apache/causeway/schema/CausewayModuleSchema.java
+++ b/api/schema/src/main/java/org/apache/causeway/schema/CausewayModuleSchema.java
@@ -26,4 +26,5 @@ import org.springframework.context.annotation.Configuration;
 @Configuration
 public class CausewayModuleSchema {
 
+    public static final String NAMESPACE = "causeway.schema";
 }
diff --git a/core/interaction/src/main/java/org/apache/causeway/core/interaction/CausewayModuleCoreInteraction.java b/core/interaction/src/main/java/org/apache/causeway/core/interaction/CausewayModuleCoreInteraction.java
index 59aa11d27b..c915622590 100644
--- a/core/interaction/src/main/java/org/apache/causeway/core/interaction/CausewayModuleCoreInteraction.java
+++ b/core/interaction/src/main/java/org/apache/causeway/core/interaction/CausewayModuleCoreInteraction.java
@@ -33,5 +33,6 @@ import org.apache.causeway.core.interaction.scope.InteractionScopeBeanFactoryPos
 })
 public class CausewayModuleCoreInteraction {
 
+    public static final String NAMESPACE = "causeway.interaction";
 
 }
diff --git a/core/interaction/src/main/java/org/apache/causeway/core/interaction/integration/InteractionAwareTransactionalBoundaryHandler.java b/core/interaction/src/main/java/org/apache/causeway/core/interaction/integration/InteractionAwareTransactionalBoundaryHandler.java
index 29bdd3c6f9..d5164556c8 100644
--- a/core/interaction/src/main/java/org/apache/causeway/core/interaction/integration/InteractionAwareTransactionalBoundaryHandler.java
+++ b/core/interaction/src/main/java/org/apache/causeway/core/interaction/integration/InteractionAwareTransactionalBoundaryHandler.java
@@ -26,6 +26,7 @@ import javax.annotation.Priority;
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.apache.causeway.core.interaction.CausewayModuleCoreInteraction;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.PlatformTransactionManager;
@@ -47,12 +48,14 @@ import lombok.val;
 import lombok.extern.log4j.Log4j2;
 
 @Service
-@Named("causeway.interaction.InteractionAwareTransactionalBoundaryHandler")
+@Named(InteractionAwareTransactionalBoundaryHandler.LOGICAL_TYPE_NAME)
 @Priority(PriorityPrecedence.MIDPOINT)
 @Qualifier("Default")
 @Log4j2
 public class InteractionAwareTransactionalBoundaryHandler {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleCoreInteraction.NAMESPACE + ".InteractionAwareTransactionalBoundaryHandler";
+
     private final Can<PlatformTransactionManager> txManagers;
 
     @Inject
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/CausewayModuleCoreMetamodel.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/CausewayModuleCoreMetamodel.java
index 03b9920e10..6be7eac695 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/CausewayModuleCoreMetamodel.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/CausewayModuleCoreMetamodel.java
@@ -203,6 +203,7 @@ import lombok.NonNull;
 public class CausewayModuleCoreMetamodel {
 
     public static final String NAMESPACE = "causeway.metamodel";
+    public static final String NAMESPACE_VALUE = NAMESPACE + ".value";
 
     @FunctionalInterface
     public static interface PreloadableTypes {
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/ActionNode.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/ActionNode.java
index 7b11ef529e..ced26420ab 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/ActionNode.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/ActionNode.java
@@ -50,7 +50,7 @@ import lombok.val;
 @ToString
 public class ActionNode extends MemberNode {
 
-    public static final String LOGICAL_TYPE_NAME = CausewayModuleApplib.NAMESPACE + ".ActionNode";
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleApplib.NAMESPACE + ".node.ActionNode";
 
     @Property(hidden = Where.EVERYWHERE)
     @Getter @Setter private Action action;
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/CollectionNode.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/CollectionNode.java
index 5d0ffc8d12..977a37059e 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/CollectionNode.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/CollectionNode.java
@@ -48,7 +48,7 @@ import lombok.val;
 @ToString
 public class CollectionNode extends MemberNode {
 
-    public static final String LOGICAL_TYPE_NAME = CausewayModuleApplib.NAMESPACE + ".CollectionNode";
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleApplib.NAMESPACE + ".node.CollectionNode";
 
     @Property(hidden = Where.EVERYWHERE)
     @Getter @Setter private Collection collection;
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetAttrNode.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetAttrNode.java
index abdc623b77..17e54856d3 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetAttrNode.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetAttrNode.java
@@ -49,7 +49,7 @@ import lombok.ToString;
 @ToString
 public class FacetAttrNode extends MMNode {
 
-    public static final String LOGICAL_TYPE_NAME = CausewayModuleApplib.NAMESPACE + ".FacetAttrNode";
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleApplib.NAMESPACE + ".node.FacetAttrNode";
 
     @Property(hidden = Where.EVERYWHERE)
     @Getter @Setter private FacetAttr facetAttr;
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetNode.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetNode.java
index 0c2d4bde1c..bf1c45e955 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetNode.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/inspect/model/FacetNode.java
@@ -53,7 +53,7 @@ import lombok.val;
 @ToString
 public class FacetNode extends MMNode {
 
-    public static final String LOGICAL_TYPE_NAME = CausewayModuleApplib.NAMESPACE + ".FacetNode";
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleApplib.NAMESPACE + ".node.FacetNode";
 
     @Property(hidden = Where.EVERYWHERE)
     @Getter @Setter private Facet facet;
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/ServiceInjectorDefault.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/ServiceInjectorDefault.java
index e430a8675b..69f9388d1d 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/ServiceInjectorDefault.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/services/ServiceInjectorDefault.java
@@ -42,12 +42,14 @@ import lombok.val;
  *
  */
 @Service
-@Named(CausewayModuleCoreMetamodel.NAMESPACE + ".ServiceInjectorDefault")
+@Named(ServiceInjectorDefault.LOGICAL_TYPE_NAME)
 @Priority(PriorityPrecedence.EARLY)
 @Qualifier("Default")
 @RequiredArgsConstructor(onConstructor_ = {@Inject})
 public class ServiceInjectorDefault implements ServiceInjector {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleCoreMetamodel.NAMESPACE + ".ServiceInjectorDefault";
+
     private final AutowireCapableBeanFactory autowireCapableBeanFactory;
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ApplicationFeatureIdValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ApplicationFeatureIdValueSemantics.java
index 8a18b56d42..0ace27a19f 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ApplicationFeatureIdValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ApplicationFeatureIdValueSemantics.java
@@ -37,7 +37,7 @@ import org.apache.causeway.schema.common.v2.ValueType;
 import lombok.val;
 
 @Component
-@Named("causeway.val.ApplicationFeatureIdValueSemantics")
+@Named("causeway.metamodel.value.ApplicationFeatureIdValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class ApplicationFeatureIdValueSemantics
 extends ValueSemanticsAbstract<ApplicationFeatureId>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
index bb7f690f1e..4b8e51a32b 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
@@ -47,7 +47,7 @@ import lombok.Setter;
 import lombok.val;
 
 @Component
-@Named("causeway.val.BigDecimalValueSemantics")
+@Named("causeway.metamodel.value.BigDecimalValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class BigDecimalValueSemantics
 extends ValueSemanticsAbstract<BigDecimal>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigIntegerValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigIntegerValueSemantics.java
index dddc5b1160..483468846f 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigIntegerValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BigIntegerValueSemantics.java
@@ -40,7 +40,7 @@ import org.apache.causeway.schema.common.v2.ValueWithTypeDto;
 import lombok.NonNull;
 
 @Component
-@Named("causeway.val.BigIntegerValueSemantics")
+@Named("causeway.metamodel.value.BigIntegerValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class BigIntegerValueSemantics
 extends ValueSemanticsAbstract<BigInteger>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BlobValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BlobValueSemantics.java
index 44fc526414..08f3126842 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BlobValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BlobValueSemantics.java
@@ -37,7 +37,7 @@ import org.apache.causeway.commons.collections.Can;
 import org.apache.causeway.schema.common.v2.ValueType;
 
 @Component
-@Named("causeway.val.BlobValueSemantics")
+@Named("causeway.metamodel.value.BlobValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class BlobValueSemantics
 extends ValueSemanticsAbstract<Blob>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BookmarkValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BookmarkValueSemantics.java
index d5bcc82e5e..c550f0e835 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BookmarkValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BookmarkValueSemantics.java
@@ -38,7 +38,7 @@ import org.apache.causeway.schema.common.v2.ValueType;
 import lombok.val;
 
 @Component
-@Named("causeway.val.BookmarkValueSemantics")
+@Named("causeway.metamodel.value.BookmarkValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class BookmarkValueSemantics
 extends ValueSemanticsAbstract<Bookmark>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BooleanValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BooleanValueSemantics.java
index 8f20afd2f0..edc8aac0d3 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BooleanValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BooleanValueSemantics.java
@@ -44,7 +44,7 @@ import lombok.val;
  * due to auto-boxing also handles the primitive variant
  */
 @Component
-@Named("causeway.val.BooleanValueSemantics")
+@Named("causeway.metamodel.value.BooleanValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class BooleanValueSemantics
 extends ValueSemanticsAbstract<Boolean>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BufferedImageValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BufferedImageValueSemantics.java
index 6c2d1fb65b..7bdfc017c2 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BufferedImageValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/BufferedImageValueSemantics.java
@@ -42,7 +42,7 @@ import org.apache.causeway.schema.common.v2.ValueType;
 import org.apache.causeway.schema.common.v2.ValueWithTypeDto;
 
 @Component
-@Named("causeway.val.BufferedImageValueSemantics")
+@Named("causeway.metamodel.value.BufferedImageValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class BufferedImageValueSemantics
 extends ValueSemanticsAbstract<BufferedImage>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ByteValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ByteValueSemantics.java
index de6954acbd..40f9b4346b 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ByteValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ByteValueSemantics.java
@@ -46,7 +46,7 @@ import lombok.val;
  * due to auto-boxing also handles the primitive variant
  */
 @Component
-@Named("causeway.val.ByteValueSemantics")
+@Named("causeway.metamodel.value.ByteValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class ByteValueSemantics
 extends ValueSemanticsAbstract<Byte>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ChangesDtoValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ChangesDtoValueSemantics.java
index 3ab56e3a6e..85cfa4c38b 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ChangesDtoValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ChangesDtoValueSemantics.java
@@ -29,7 +29,7 @@ import org.apache.causeway.commons.collections.Can;
 import org.apache.causeway.schema.chg.v2.ChangesDto;
 
 @Component
-@Named("causeway.val.ChangesDtoValueSemantics")
+@Named("causeway.metamodel.value.ChangesDtoValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class ChangesDtoValueSemantics
 extends XmlValueSemanticsAbstract<ChangesDto> {
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CharacterValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CharacterValueSemantics.java
index b903d7f7cf..f2be09b592 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CharacterValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CharacterValueSemantics.java
@@ -48,7 +48,7 @@ import lombok.val;
  * due to auto-boxing also handles the primitive variant
  */
 @Component
-@Named("causeway.val.CharacterValueSemantics")
+@Named("causeway.metamodel.value.CharacterValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class CharacterValueSemantics
 extends ValueSemanticsAbstract<Character>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ClobValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ClobValueSemantics.java
index ec79f600bd..5dc3795146 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ClobValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ClobValueSemantics.java
@@ -37,7 +37,7 @@ import org.apache.causeway.commons.collections.Can;
 import org.apache.causeway.schema.common.v2.ValueType;
 
 @Component
-@Named("causeway.val.ClobValueSemantics")
+@Named("causeway.metamodel.value.ClobValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class ClobValueSemantics
 extends ValueSemanticsAbstract<Clob>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CommandDtoValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CommandDtoValueSemantics.java
index 860be546f4..b16d69e391 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CommandDtoValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/CommandDtoValueSemantics.java
@@ -29,7 +29,7 @@ import org.apache.causeway.commons.collections.Can;
 import org.apache.causeway.schema.cmd.v2.CommandDto;
 
 @Component
-@Named("causeway.val.CommandDtoValueSemantics")
+@Named("causeway.metamodel.value.CommandDtoValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class CommandDtoValueSemantics
 extends XmlValueSemanticsAbstract<CommandDto> {
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/DoubleValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/DoubleValueSemantics.java
index 156485159a..8eccd6ddda 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/DoubleValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/DoubleValueSemantics.java
@@ -40,7 +40,7 @@ import org.apache.causeway.schema.common.v2.ValueWithTypeDto;
  * due to auto-boxing also handles the primitive variant
  */
 @Component
-@Named("causeway.val.DoubleValueSemantics")
+@Named("causeway.metamodel.value.DoubleValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class DoubleValueSemantics
 extends ValueSemanticsAbstract<Double>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/FloatValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/FloatValueSemantics.java
index d8def994ac..7dc81d1660 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/FloatValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/FloatValueSemantics.java
@@ -40,7 +40,7 @@ import org.apache.causeway.schema.common.v2.ValueWithTypeDto;
  * due to auto-boxing also handles the primitive variant
  */
 @Component
-@Named("causeway.val.FloatValueSemantics")
+@Named("causeway.metamodel.value.FloatValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class FloatValueSemantics
 extends ValueSemanticsAbstract<Float>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IdStringifierForSerializable.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IdStringifierForSerializable.java
index b2db967657..dafa7a82f8 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IdStringifierForSerializable.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IdStringifierForSerializable.java
@@ -40,7 +40,7 @@ import lombok.NonNull;
  * is available to handle the corresponding value type.
  */
 @Component
-@Named("causeway.val.IdStringifierForSerializable")
+@Named("causeway.metamodel.value.IdStringifierForSerializable")
 @Priority(PriorityPrecedence.LAST)
 public class IdStringifierForSerializable
 implements
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IntValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IntValueSemantics.java
index 0a69d1a493..0b1edc0dce 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IntValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/IntValueSemantics.java
@@ -46,7 +46,7 @@ import lombok.val;
  * due to auto-boxing also handles the primitive variant
  */
 @Component
-@Named("causeway.val.IntValueSemantics")
+@Named("causeway.metamodel.value.IntValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class IntValueSemantics
 extends ValueSemanticsAbstract<Integer>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/InteractionDtoValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/InteractionDtoValueSemantics.java
index 5b3b168d26..e8978b1c63 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/InteractionDtoValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/InteractionDtoValueSemantics.java
@@ -29,7 +29,7 @@ import org.apache.causeway.commons.collections.Can;
 import org.apache.causeway.schema.ixn.v2.InteractionDto;
 
 @Component
-@Named("causeway.val.InteractionDtoValueSemantics")
+@Named("causeway.metamodel.value.InteractionDtoValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class InteractionDtoValueSemantics
 extends XmlValueSemanticsAbstract<InteractionDto> {
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java
index de4a9630fb..ac5bb45f24 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocalResourcePathValueSemantics.java
@@ -38,7 +38,7 @@ import org.apache.causeway.schema.common.v2.ValueType;
 import lombok.val;
 
 @Component
-@Named("causeway.val.LocalResourcePathValueSemantics")
+@Named("causeway.metamodel.value.LocalResourcePathValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class LocalResourcePathValueSemantics
 extends ValueSemanticsAbstract<LocalResourcePath>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocaleValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocaleValueSemantics.java
index 13086b2738..bdd33fbd8f 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocaleValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LocaleValueSemantics.java
@@ -39,7 +39,7 @@ import org.apache.causeway.schema.common.v2.ValueType;
 import lombok.val;
 
 @Component
-@Named("causeway.val.LocaleValueSemantics")
+@Named("causeway.metamodel.value.LocaleValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class LocaleValueSemantics
 extends ValueSemanticsAbstract<Locale>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LongValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LongValueSemantics.java
index ffce139e13..fcf82e0428 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LongValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/LongValueSemantics.java
@@ -46,7 +46,7 @@ import lombok.val;
  * due to auto-boxing also handles the primitive variant
  */
 @Component
-@Named("causeway.val.LongValueSemantics")
+@Named("causeway.metamodel.value.LongValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class LongValueSemantics
 extends ValueSemanticsAbstract<Long>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/MarkupValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/MarkupValueSemantics.java
index bce3d71a63..482387eba5 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/MarkupValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/MarkupValueSemantics.java
@@ -35,7 +35,7 @@ import org.apache.causeway.commons.internal.hardening._Hardening;
 import org.apache.causeway.schema.common.v2.ValueType;
 
 @Component
-@Named("causeway.val.MarkupValueSemantics")
+@Named("causeway.metamodel.value.MarkupValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class MarkupValueSemantics
 extends ValueSemanticsAbstract<Markup>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/OidDtoValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/OidDtoValueSemantics.java
index 4393e080b8..f6e63ba8e5 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/OidDtoValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/OidDtoValueSemantics.java
@@ -22,6 +22,8 @@ import javax.annotation.Priority;
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.apache.causeway.applib.CausewayModuleApplib;
+import org.apache.causeway.core.metamodel.CausewayModuleCoreMetamodel;
 import org.springframework.stereotype.Component;
 
 import org.apache.causeway.applib.annotation.PriorityPrecedence;
@@ -32,11 +34,13 @@ import org.apache.causeway.core.metamodel.valuetypes.ValueSemanticsAdapter;
 import org.apache.causeway.schema.common.v2.OidDto;
 
 @Component
-@Named("causeway.val.OidDtoValueSemantics")
+@Named(OidDtoValueSemantics.LOGICAL_TYPE_NAME)
 @Priority(PriorityPrecedence.LATE)
 public class OidDtoValueSemantics
 extends ValueSemanticsAdapter<OidDto, Bookmark, Void> {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleCoreMetamodel.NAMESPACE_VALUE + ".OidDtoValueSemantics";
+
     @Inject BookmarkValueSemantics bookmarkValueSemantics;
 
     @Override
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/PasswordValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/PasswordValueSemantics.java
index 0a440e2b98..bb34371e79 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/PasswordValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/PasswordValueSemantics.java
@@ -36,7 +36,7 @@ import org.apache.causeway.schema.common.v2.ValueType;
 import org.apache.causeway.schema.common.v2.ValueWithTypeDto;
 
 @Component
-@Named("causeway.val.PasswordValueSemantics")
+@Named("causeway.metamodel.value.PasswordValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class PasswordValueSemantics
 extends ValueSemanticsAbstract<Password>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ShortValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ShortValueSemantics.java
index 29e39a10e5..b29f4d641d 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ShortValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/ShortValueSemantics.java
@@ -46,7 +46,7 @@ import lombok.val;
  * due to auto-boxing also handles the primitive variant
  */
 @Component
-@Named("causeway.val.ShortValueSemantics")
+@Named("causeway.metamodel.value.ShortValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class ShortValueSemantics
 extends ValueSemanticsAbstract<Short>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/StringValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/StringValueSemantics.java
index ae1730861e..e2d1afe459 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/StringValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/StringValueSemantics.java
@@ -40,7 +40,7 @@ import org.apache.causeway.schema.common.v2.ValueType;
 import lombok.NonNull;
 
 @Component
-@Named("causeway.val.StringValueSemantics")
+@Named("causeway.metamodel.value.StringValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class StringValueSemantics
 extends ValueSemanticsAbstract<String>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/TreeNodeValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/TreeNodeValueSemantics.java
index c2bd61d46a..57cbc18d90 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/TreeNodeValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/TreeNodeValueSemantics.java
@@ -43,7 +43,7 @@ import org.apache.causeway.commons.internal.memento._Mementos.SerializingAdapter
 import org.apache.causeway.schema.common.v2.ValueType;
 
 @Component
-@Named("causeway.val.TreeNodeValueSemantics")
+@Named("causeway.metamodel.value.TreeNodeValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class TreeNodeValueSemantics
 extends ValueSemanticsAbstract<TreeNode<?>>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/URLValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/URLValueSemantics.java
index a4dbc45c80..5886cf335f 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/URLValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/URLValueSemantics.java
@@ -41,7 +41,7 @@ import lombok.SneakyThrows;
 import lombok.val;
 
 @Component
-@Named("causeway.val.URLValueSemantics")
+@Named("causeway.metamodel.value.URLValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class URLValueSemantics
 extends ValueSemanticsAbstract<java.net.URL>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/UUIDValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/UUIDValueSemantics.java
index 04040513b3..a3854cc896 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/UUIDValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/UUIDValueSemantics.java
@@ -40,7 +40,7 @@ import lombok.NonNull;
 import lombok.val;
 
 @Component
-@Named("causeway.val.UUIDValueSemantics")
+@Named("causeway.metamodel.value.UUIDValueSemantics")
 @Priority(PriorityPrecedence.LATE)
 public class UUIDValueSemantics
 extends ValueSemanticsAbstract<UUID>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateTimeValueSemantics.java
index dad75d3b09..dada946973 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateTimeValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateTimeValueSemantics.java
@@ -31,7 +31,7 @@ import org.apache.causeway.commons.internal.base._Temporals;
 import org.apache.causeway.schema.common.v2.ValueType;
 
 @Component
-@Named("causeway.val.LocalDateTimeValueSemantics")
+@Named("causeway.metamodel.value.LocalDateTimeValueSemantics")
 //@Log4j2
 public class LocalDateTimeValueSemantics
 extends TemporalValueSemanticsProvider<LocalDateTime>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateValueSemantics.java
index 558a34f396..674f472e70 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalDateValueSemantics.java
@@ -31,7 +31,7 @@ import org.apache.causeway.commons.internal.base._Temporals;
 import org.apache.causeway.schema.common.v2.ValueType;
 
 @Component
-@Named("causeway.val.LocalDateValueSemantics")
+@Named("causeway.metamodel.value.LocalDateValueSemantics")
 //@Log4j2
 public class LocalDateValueSemantics
 extends TemporalValueSemanticsProvider<LocalDate>
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalTimeValueSemantics.java
index 5c9cf5bc9a..f9b27980d2 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalTimeValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/LocalTimeValueSemantics.java
@@ -30,7 +30,7 @@ import org.apache.causeway.commons.internal.base._Temporals;
 import org.apache.causeway.schema.common.v2.ValueType;
 
 @Component
-@Named("causeway.val.LocalTimeValueSemantics")
+@Named("causeway.metamodel.value.LocalTimeValueSemantics")
 //@Log4j2
 public class LocalTimeValueSemantics
 extends TemporalValueSemanticsProvider<LocalTime> {
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetDateTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetDateTimeValueSemantics.java
index cf2815b758..6abed17061 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetDateTimeValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetDateTimeValueSemantics.java
@@ -30,7 +30,7 @@ import org.apache.causeway.commons.internal.base._Temporals;
 import org.apache.causeway.schema.common.v2.ValueType;
 
 @Component
-@Named("causeway.val.OffsetDateTimeValueSemantics")
+@Named("causeway.metamodel.value.OffsetDateTimeValueSemantics")
 //@Log4j2
 public class OffsetDateTimeValueSemantics
 extends TemporalValueSemanticsProvider<OffsetDateTime> {
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetTimeValueSemantics.java
index fd51232454..4a4b7d9c4d 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetTimeValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/OffsetTimeValueSemantics.java
@@ -30,7 +30,7 @@ import org.apache.causeway.commons.internal.base._Temporals;
 import org.apache.causeway.schema.common.v2.ValueType;
 
 @Component
-@Named("causeway.val.OffsetTimeValueSemantics")
+@Named("causeway.metamodel.value.OffsetTimeValueSemantics")
 //@Log4j2
 public class OffsetTimeValueSemantics
 extends TemporalValueSemanticsProvider<OffsetTime> {
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/ZonedDateTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/ZonedDateTimeValueSemantics.java
index 3c578992d9..c9593acdec 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/ZonedDateTimeValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/ZonedDateTimeValueSemantics.java
@@ -30,7 +30,7 @@ import org.apache.causeway.commons.internal.base._Temporals;
 import org.apache.causeway.schema.common.v2.ValueType;
 
 @Component
-@Named("causeway.val.ZonedDateTimeValueSemantics")
+@Named("causeway.metamodel.value.ZonedDateTimeValueSemantics")
 //@Log4j2
 public class ZonedDateTimeValueSemantics
 extends TemporalValueSemanticsProvider<ZonedDateTime> {
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlDateValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlDateValueSemantics.java
index af0d228a6b..7e391b64ad 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlDateValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlDateValueSemantics.java
@@ -38,7 +38,7 @@ import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter;
  * @see JavaSqlTimeValueSemantics
  */
 @Component
-@Named("causeway.val.JavaSqlDateValueSemantics")
+@Named("causeway.metamodel.value.JavaSqlDateValueSemantics")
 public class JavaSqlDateValueSemantics
 extends TemporalSemanticsAdapter<Date, LocalDate> {
 
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java
index 1a1c33c4fb..bad63ca76f 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeStampValueSemantics.java
@@ -32,7 +32,7 @@ import org.apache.causeway.core.metamodel.valuesemantics.temporal.LocalDateTimeV
 import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter;
 
 @Component
-@Named("causeway.val.JavaSqlTimeStampValueSemantics")
+@Named("causeway.metamodel.value.JavaSqlTimeStampValueSemantics")
 public class JavaSqlTimeStampValueSemantics
 extends TemporalSemanticsAdapter<Timestamp, LocalDateTime> {
 
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeValueSemantics.java
index c33f175b14..b156ad2df8 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaSqlTimeValueSemantics.java
@@ -36,7 +36,7 @@ import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter;
  *
  */
 @Component
-@Named("causeway.val.JavaSqlTimeValueSemantics")
+@Named("causeway.metamodel.value.JavaSqlTimeValueSemantics")
 public class JavaSqlTimeValueSemantics
 extends TemporalSemanticsAdapter<Time, LocalTime>  {
 
diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java
index 90fb238ae2..dce7b4e182 100644
--- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/valuesemantics/temporal/legacy/JavaUtilDateValueSemantics.java
@@ -40,7 +40,7 @@ import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter;
  * @see JavaSqlTimeValueSemantics
  */
 @Component
-@Named("causeway.val.JavaUtilDateValueSemantics")
+@Named("causeway.metamodel.value.JavaUtilDateValueSemantics")
 public class JavaUtilDateValueSemantics
 extends TemporalSemanticsAdapter<java.util.Date, LocalDateTime>  {
 
diff --git a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/spring/SpringBeansService.java b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/spring/SpringBeansService.java
index 5a22fb0c82..5c2a27268a 100644
--- a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/spring/SpringBeansService.java
+++ b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/spring/SpringBeansService.java
@@ -24,6 +24,7 @@ import java.util.Map;
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.apache.causeway.core.runtimeservices.CausewayModuleCoreRuntimeServices;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ConfigurableApplicationContext;
@@ -39,7 +40,7 @@ import lombok.experimental.UtilityClass;
  * @since 2.0 {@index}
  */
 @Service
-@Named("causeway.sub.spring.SpringBeansService")
+@Named(CausewayModuleCoreRuntimeServices.NAMESPACE + ".SpringBeansService")
 @javax.annotation.Priority(PriorityPrecedence.MIDPOINT)
 @Qualifier("Default")
 public class SpringBeansService {
diff --git a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/xml/XmlServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/xml/XmlServiceDefault.java
index 3550991ef6..68cd458857 100644
--- a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/xml/XmlServiceDefault.java
+++ b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/xml/XmlServiceDefault.java
@@ -32,6 +32,7 @@ import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 import javax.xml.transform.stream.StreamSource;
 
+import org.apache.causeway.core.runtimeservices.CausewayModuleCoreRuntimeServices;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 import org.w3c.dom.Document;
@@ -51,11 +52,13 @@ import org.apache.causeway.commons.internal.exceptions._Exceptions;
  * @since 2.0 {@index}
  */
 @Service
-@Named("causeway.runtimeservice.XmlService")
+@Named(XmlServiceDefault.LOGICAL_TYPE_NAME)
 @Priority(PriorityPrecedence.EARLY)
 @Qualifier("Default")
 public class XmlServiceDefault implements XmlService {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleCoreRuntimeServices.NAMESPACE + ".XmlServiceDefault";
+
     @Override
     public Document asDocument(String xmlStr) {
         try {
diff --git a/core/security/src/main/java/org/apache/causeway/core/security/authentication/manager/AuthenticationManager.java b/core/security/src/main/java/org/apache/causeway/core/security/authentication/manager/AuthenticationManager.java
index e83ba11dba..f18fa9889a 100644
--- a/core/security/src/main/java/org/apache/causeway/core/security/authentication/manager/AuthenticationManager.java
+++ b/core/security/src/main/java/org/apache/causeway/core/security/authentication/manager/AuthenticationManager.java
@@ -26,6 +26,7 @@ import javax.annotation.Priority;
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.apache.causeway.core.security.CausewayModuleCoreSecurity;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.lang.Nullable;
 import org.springframework.stereotype.Service;
@@ -50,11 +51,13 @@ import lombok.NonNull;
 import lombok.val;
 
 @Service
-@Named("causeway.security.AuthenticationManager")
+@Named(AuthenticationManager.LOGICAL_TYPE_NAME)
 @Priority(PriorityPrecedence.MIDPOINT)
 @Qualifier("Default")
 public class AuthenticationManager {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleCoreSecurity.NAMESPACE + ".AuthenticationManager";
+
     @Getter private final @NonNull Can<Authenticator> authenticators;
 
     private final Map<String, String> userByValidationCode = _Maps.newConcurrentHashMap();
diff --git a/core/security/src/main/java/org/apache/causeway/core/security/authentication/standard/RandomCodeGeneratorDefault.java b/core/security/src/main/java/org/apache/causeway/core/security/authentication/standard/RandomCodeGeneratorDefault.java
index aedca38f3b..cfe45dfcda 100644
--- a/core/security/src/main/java/org/apache/causeway/core/security/authentication/standard/RandomCodeGeneratorDefault.java
+++ b/core/security/src/main/java/org/apache/causeway/core/security/authentication/standard/RandomCodeGeneratorDefault.java
@@ -23,17 +23,20 @@ import java.security.SecureRandom;
 import javax.annotation.Priority;
 import javax.inject.Named;
 
+import org.apache.causeway.core.security.CausewayModuleCoreSecurity;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
 import org.apache.causeway.applib.annotation.PriorityPrecedence;
 
 @Component
-@Named("causeway.security.RandomCodeGenerator10Chars")
+@Named(RandomCodeGeneratorDefault.LOGICAL_TYPE_NAME)
 @Priority(PriorityPrecedence.LATE)
 @Qualifier("Default")
 public class RandomCodeGeneratorDefault implements RandomCodeGenerator {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleCoreSecurity.NAMESPACE + ".RandomCodeGenerator10Chars";
+
     private static final int NUMBER_CHARACTERS = 10;
     private static final String CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
 
diff --git a/core/security/src/main/java/org/apache/causeway/core/security/authorization/manager/AuthorizationManager.java b/core/security/src/main/java/org/apache/causeway/core/security/authorization/manager/AuthorizationManager.java
index 839c9d134f..9978327339 100644
--- a/core/security/src/main/java/org/apache/causeway/core/security/authorization/manager/AuthorizationManager.java
+++ b/core/security/src/main/java/org/apache/causeway/core/security/authorization/manager/AuthorizationManager.java
@@ -25,6 +25,7 @@ import javax.annotation.Priority;
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.apache.causeway.core.security.CausewayModuleCoreSecurity;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.lang.Nullable;
 import org.springframework.stereotype.Service;
@@ -45,11 +46,13 @@ import org.apache.causeway.core.security.authorization.Authorizor;
  * @since 1.x {@index}
  */
 @Service
-@Named("causeway.security.AuthorizationManager")
+@Named(AuthorizationManager.LOGICAL_TYPE_NAME)
 @Priority(PriorityPrecedence.MIDPOINT)
 @Qualifier("Default")
 public class AuthorizationManager {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleCoreSecurity.NAMESPACE + ".AuthorizationManager";
+
     private final Authorizor authorizor;
     private final ActionSemanticsResolver actionSemanticsResolver;
     private final boolean actionsWithSafeSemanticsRequireOnlyViewingPermission;
diff --git a/core/transaction/src/main/java/org/apache/causeway/core/transaction/CausewayModuleCoreTransaction.java b/core/transaction/src/main/java/org/apache/causeway/core/transaction/CausewayModuleCoreTransaction.java
index 552845913b..21a841b29a 100644
--- a/core/transaction/src/main/java/org/apache/causeway/core/transaction/CausewayModuleCoreTransaction.java
+++ b/core/transaction/src/main/java/org/apache/causeway/core/transaction/CausewayModuleCoreTransaction.java
@@ -31,4 +31,5 @@ import org.apache.causeway.core.transaction.changetracking.events.TimestampServi
 })
 public class CausewayModuleCoreTransaction {
 
+    public static final String NAMESPACE = "causeway.transaction";
 }
diff --git a/core/transaction/src/main/java/org/apache/causeway/core/transaction/changetracking/events/TimestampService.java b/core/transaction/src/main/java/org/apache/causeway/core/transaction/changetracking/events/TimestampService.java
index 3f3dc1669e..cfb300364f 100644
--- a/core/transaction/src/main/java/org/apache/causeway/core/transaction/changetracking/events/TimestampService.java
+++ b/core/transaction/src/main/java/org/apache/causeway/core/transaction/changetracking/events/TimestampService.java
@@ -22,6 +22,7 @@ import javax.annotation.Priority;
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.apache.causeway.core.transaction.CausewayModuleCoreTransaction;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Service;
@@ -35,11 +36,13 @@ import org.apache.causeway.applib.services.user.UserService;
 import lombok.val;
 
 @Service
-@Named("causeway.transaction.TimestampService")
+@Named(TimestampService.LOGICAL_TYPE_NAME)
 @Priority(PriorityPrecedence.MIDPOINT)
 @Qualifier("Default")
 public class TimestampService {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleCoreTransaction.NAMESPACE + ".TimestampService";
+
     @Inject private UserService userService;
     @Inject private ClockService clockService;
 
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayConfigurationRoleAndPermissions.java b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayConfigurationRoleAndPermissions.java
index 6096eab0e4..bca3cbb3b6 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayConfigurationRoleAndPermissions.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayConfigurationRoleAndPermissions.java
@@ -22,6 +22,7 @@ import org.apache.causeway.applib.CausewayModuleApplib;
 import org.apache.causeway.applib.services.appfeat.ApplicationFeatureId;
 import org.apache.causeway.applib.services.confview.ConfigurationMenu;
 import org.apache.causeway.commons.collections.Can;
+import org.apache.causeway.core.config.CausewayModuleCoreConfig;
 import org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPermissionMode;
 import org.apache.causeway.extensions.secman.applib.permission.dom.ApplicationPermissionRule;
 import org.apache.causeway.extensions.secman.applib.role.fixtures.AbstractRoleAndPermissionsFixtureScript;
@@ -46,7 +47,8 @@ extends AbstractRoleAndPermissionsFixtureScript {
                 ApplicationPermissionRule.ALLOW,
                 ApplicationPermissionMode.CHANGING,
                 Can.of(
-                        ApplicationFeatureId.newNamespace(CausewayModuleApplib.NAMESPACE_CONF)
+                        ApplicationFeatureId.newNamespace(CausewayModuleApplib.NAMESPACE_CONF),
+                        ApplicationFeatureId.newNamespace(CausewayModuleCoreConfig.NAMESPACE)
                 )
         );
     }
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayViewerRestfulObjectsSwaggerRoleAndPermissions.java b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayViewerRestfulObjectsSwaggerRoleAndPermissions.java
index 63bd1505e6..a21833baeb 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayViewerRestfulObjectsSwaggerRoleAndPermissions.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/role/seed/CausewayViewerRestfulObjectsSwaggerRoleAndPermissions.java
@@ -32,7 +32,7 @@ import org.apache.causeway.extensions.secman.applib.role.fixtures.AbstractRoleAn
 public class CausewayViewerRestfulObjectsSwaggerRoleAndPermissions
 extends AbstractRoleAndPermissionsFixtureScript {
 
-    private static final String SERVICE_LOGICAL_TYPE_NAME = "causeway.viewer.restfulobjects.SwaggerServiceMenu";
+    private static final String SERVICE_LOGICAL_TYPE_NAME = "causeway.viewer.roRendering.SwaggerServiceMenu";
 
     public static final String ROLE_NAME = SERVICE_LOGICAL_TYPE_NAME.replace(".","-");
 
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/ApplicationUserRepositoryAbstract.java b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/ApplicationUserRepositoryAbstract.java
index 7357c760ee..a3cb4d3592 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/ApplicationUserRepositoryAbstract.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/ApplicationUserRepositoryAbstract.java
@@ -66,7 +66,7 @@ implements ApplicationUserRepository {
     @Inject private Provider<QueryResultsCache> queryResultsCacheProvider;
 
     // empty if no candidate is available
-    @Autowired(required = false) @Qualifier("secman") PasswordEncoder passwordEncoder;
+    @Autowired(required = false) @Qualifier("Secman") PasswordEncoder passwordEncoder;
 
 
     private final Class<U> applicationUserClass;
diff --git a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updatePassword.java b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updatePassword.java
index 45d1b853ee..b06832662a 100644
--- a/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updatePassword.java
+++ b/extensions/security/secman/applib/src/main/java/org/apache/causeway/extensions/secman/applib/user/dom/mixins/ApplicationUser_updatePassword.java
@@ -58,7 +58,7 @@ public class ApplicationUser_updatePassword {
             extends CausewayModuleExtSecmanApplib.ActionDomainEvent<ApplicationUser_updatePassword> {}
 
     @Inject private ApplicationUserRepository applicationUserRepository;
-    @Autowired(required = false) private @Qualifier("secman") PasswordEncoder passwordEncoder;
+    @Autowired(required = false) private @Qualifier("Secman") PasswordEncoder passwordEncoder;
 
     private final ApplicationUser target;
 
diff --git a/extensions/security/secman/delegated-shiro/src/main/java/org/apache/causeway/extensions/secman/delegated/shiro/realm/CausewayModuleExtSecmanShiroRealm.java b/extensions/security/secman/delegated-shiro/src/main/java/org/apache/causeway/extensions/secman/delegated/shiro/realm/CausewayModuleExtSecmanShiroRealm.java
index 540625b379..2eaef92550 100644
--- a/extensions/security/secman/delegated-shiro/src/main/java/org/apache/causeway/extensions/secman/delegated/shiro/realm/CausewayModuleExtSecmanShiroRealm.java
+++ b/extensions/security/secman/delegated-shiro/src/main/java/org/apache/causeway/extensions/secman/delegated/shiro/realm/CausewayModuleExtSecmanShiroRealm.java
@@ -267,7 +267,7 @@ public class CausewayModuleExtSecmanShiroRealm extends AuthorizingRealm {
     private CheckPasswordResult checkPassword(final char[] candidate, final String actualEncryptedPassword) {
         return execute(new Supplier<CheckPasswordResult>() {
 
-            @Autowired(required = false) private @Qualifier("secman") PasswordEncoder passwordEncoder;
+            @Autowired(required = false) private @Qualifier("Secman") PasswordEncoder passwordEncoder;
 
             @Override
             public CheckPasswordResult get() {
diff --git a/extensions/security/secman/encryption-jbcrypt/src/main/java/org/apache/causeway/extensions/secman/encryption/jbcrypt/services/PasswordEncoderUsingJBcrypt.java b/extensions/security/secman/encryption-jbcrypt/src/main/java/org/apache/causeway/extensions/secman/encryption/jbcrypt/services/PasswordEncoderUsingJBcrypt.java
index 5aa8cd0580..d0c25516ab 100644
--- a/extensions/security/secman/encryption-jbcrypt/src/main/java/org/apache/causeway/extensions/secman/encryption/jbcrypt/services/PasswordEncoderUsingJBcrypt.java
+++ b/extensions/security/secman/encryption-jbcrypt/src/main/java/org/apache/causeway/extensions/secman/encryption/jbcrypt/services/PasswordEncoderUsingJBcrypt.java
@@ -34,7 +34,7 @@ import org.apache.causeway.extensions.secman.applib.CausewayModuleExtSecmanAppli
 @Service
 @Named(CausewayModuleExtSecmanApplib.NAMESPACE + ".PasswordEncoderUsingJBcrypt")
 @javax.annotation.Priority(PriorityPrecedence.MIDPOINT)
-@Qualifier("secman")
+@Qualifier("Secman")
 public class PasswordEncoderUsingJBcrypt
 implements PasswordEncoder {
 
diff --git a/extensions/security/secman/encryption-spring/src/main/java/org/apache/causeway/extensions/secman/encryption/spring/CausewayModuleExtSecmanEncryptionSpring.java b/extensions/security/secman/encryption-spring/src/main/java/org/apache/causeway/extensions/secman/encryption/spring/CausewayModuleExtSecmanEncryptionSpring.java
index d52de8f62a..9653e98010 100644
--- a/extensions/security/secman/encryption-spring/src/main/java/org/apache/causeway/extensions/secman/encryption/spring/CausewayModuleExtSecmanEncryptionSpring.java
+++ b/extensions/security/secman/encryption-spring/src/main/java/org/apache/causeway/extensions/secman/encryption/spring/CausewayModuleExtSecmanEncryptionSpring.java
@@ -45,7 +45,7 @@ public class CausewayModuleExtSecmanEncryptionSpring {
     /**
      * @see "https://www.baeldung.com/spring-security-5-default-password-encoder"
      */
-    @Bean @Qualifier("secman") @Order(Ordered.LOWEST_PRECEDENCE)
+    @Bean @Qualifier("Secman") @Order(Ordered.LOWEST_PRECEDENCE)
     public PasswordEncoder passwordEncoder() {
         // set up the list of supported encoders and their prefixes
         val encoders = Map.<String, PasswordEncoder>of(
diff --git a/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/authenticator/AuthenticatorSecman.java b/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/authenticator/AuthenticatorSecman.java
index 7545c5ea52..4868259e59 100644
--- a/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/authenticator/AuthenticatorSecman.java
+++ b/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/authenticator/AuthenticatorSecman.java
@@ -60,7 +60,7 @@ public class AuthenticatorSecman implements Authenticator {
     @Inject
     public AuthenticatorSecman(
             final ApplicationUserRepository applicationUserRepository,
-            final @Qualifier("secman") PasswordEncoder passwordEncoder) {
+            final @Qualifier("Secman") PasswordEncoder passwordEncoder) {
         this.applicationUserRepository = applicationUserRepository;
         this.passwordEncoder = passwordEncoder;
     }
diff --git a/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/authenticator/AuthenticatorSecmanAutoConfiguration.java b/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/authenticator/AuthenticatorSecmanAutoConfiguration.java
index 5265378928..73455ddf90 100644
--- a/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/authenticator/AuthenticatorSecmanAutoConfiguration.java
+++ b/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/authenticator/AuthenticatorSecmanAutoConfiguration.java
@@ -18,6 +18,7 @@
  */
 package org.apache.causeway.extensions.secman.integration.authenticator;
 
+import org.apache.causeway.extensions.secman.applib.CausewayModuleExtSecmanApplib;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.boot.autoconfigure.AutoConfigureOrder;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -36,12 +37,12 @@ import org.apache.causeway.extensions.secman.applib.user.dom.ApplicationUserRepo
 @Configuration
 public class AuthenticatorSecmanAutoConfiguration  {
 
-    @Bean("causeway.ext.secman.AuthenticatorSecman")
+    @Bean(CausewayModuleExtSecmanApplib.NAMESPACE + ".AuthenticatorSecman")
     @ConditionalOnMissingBean(Authenticator.class)
     @Qualifier("Secman")
     public Authenticator authenticatorSecman(
             final ApplicationUserRepository applicationUserRepository,
-            final @Qualifier("secman") PasswordEncoder passwordEncoder) {
+            final @Qualifier("Secman") PasswordEncoder passwordEncoder) {
         return new AuthenticatorSecman(
                 applicationUserRepository, passwordEncoder);
     }
diff --git a/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/spiimpl/ImpersonateMenuAdvisorForSecman.java b/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/spiimpl/ImpersonateMenuAdvisorForSecman.java
index 694e6a5efb..4b5be54b5d 100644
--- a/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/spiimpl/ImpersonateMenuAdvisorForSecman.java
+++ b/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/spiimpl/ImpersonateMenuAdvisorForSecman.java
@@ -50,7 +50,7 @@ import lombok.val;
 @Service
 @Named(CausewayModuleExtSecmanApplib.NAMESPACE + ".ImpersonateMenuAdvisorForSecman")
 @javax.annotation.Priority(PriorityPrecedence.MIDPOINT)
-@Qualifier("SecMan")
+@Qualifier("Secman")
 @RequiredArgsConstructor(onConstructor_ = {@Inject})
 public class ImpersonateMenuAdvisorForSecman implements ImpersonateMenuAdvisor {
 
diff --git a/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/userreg/UserRegistrationServiceForSecman.java b/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/userreg/UserRegistrationServiceForSecman.java
index 2de125b263..98ca54f720 100644
--- a/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/userreg/UserRegistrationServiceForSecman.java
+++ b/extensions/security/secman/integration/src/main/java/org/apache/causeway/extensions/secman/integration/userreg/UserRegistrationServiceForSecman.java
@@ -51,7 +51,7 @@ import lombok.val;
 @Service
 @Named(CausewayModuleExtSecmanApplib.NAMESPACE + ".UserRegistrationServiceForSecman")
 @javax.annotation.Priority(PriorityPrecedence.MIDPOINT)
-@Qualifier("SecMan")
+@Qualifier("Secman")
 @RequiredArgsConstructor(onConstructor_ = {@Inject})
 public class UserRegistrationServiceForSecman implements UserRegistrationService {
 
diff --git a/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/CausewayModuleExtSseWicket.java b/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/CausewayModuleExtSseWicket.java
index 144b966c8f..33443b5d50 100644
--- a/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/CausewayModuleExtSseWicket.java
+++ b/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/CausewayModuleExtSseWicket.java
@@ -44,4 +44,6 @@ import org.apache.causeway.extensions.sse.wicket.webmodule.WebModuleServerSentEv
 })
 public class CausewayModuleExtSseWicket {
 
+    public static final String NAMESPACE = "causeway.ext.sse";
+
 }
diff --git a/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/services/SseServiceDefault.java b/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/services/SseServiceDefault.java
index a5187b8fc4..efdf99c635 100644
--- a/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/services/SseServiceDefault.java
+++ b/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/services/SseServiceDefault.java
@@ -18,26 +18,20 @@
  */
 package org.apache.causeway.extensions.sse.wicket.services;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Queue;
-import java.util.UUID;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.ForkJoinPool;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.Value;
+import lombok.extern.log4j.Log4j2;
+import lombok.val;
+
+import java.util.*;
+import java.util.concurrent.*;
 import java.util.function.Predicate;
 
 import javax.annotation.Priority;
 import javax.inject.Inject;
 import javax.inject.Named;
 
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Service;
-
 import org.apache.causeway.applib.annotation.PriorityPrecedence;
 import org.apache.causeway.applib.services.iactnlayer.InteractionService;
 import org.apache.causeway.applib.services.xactn.TransactionService;
@@ -45,12 +39,9 @@ import org.apache.causeway.commons.internal.collections._Lists;
 import org.apache.causeway.extensions.sse.applib.annotations.SseSource;
 import org.apache.causeway.extensions.sse.applib.service.SseChannel;
 import org.apache.causeway.extensions.sse.applib.service.SseService;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import lombok.Value;
-import lombok.val;
-import lombok.extern.log4j.Log4j2;
+import org.apache.causeway.extensions.sse.wicket.CausewayModuleExtSseWicket;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Service;
 
 /**
  * Server-sent events.
@@ -60,12 +51,14 @@ import lombok.extern.log4j.Log4j2;
  * @since 2.0 {@index}
  */
 @Service
-@Named("causeway.val.SseServiceDefault")
+@Named(SseServiceDefault.LOGICAL_TYPE_NAME)
 @Priority(PriorityPrecedence.MIDPOINT)
 @Qualifier("Default")
 @Log4j2
 public class SseServiceDefault implements SseService {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleExtSseWicket.NAMESPACE + ".SseServiceDefault";
+
     @Inject private TransactionService transactionService;
     @Inject private InteractionService interactionService;
 
diff --git a/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/webmodule/WebModuleServerSentEvents.java b/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/webmodule/WebModuleServerSentEvents.java
index c4783e34eb..f7a20c9a8e 100644
--- a/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/webmodule/WebModuleServerSentEvents.java
+++ b/extensions/vw/sse/wicket/src/main/java/org/apache/causeway/extensions/sse/wicket/webmodule/WebModuleServerSentEvents.java
@@ -24,6 +24,7 @@ import javax.servlet.ServletContext;
 import javax.servlet.ServletContextListener;
 import javax.servlet.ServletException;
 
+import org.apache.causeway.extensions.sse.wicket.CausewayModuleExtSseWicket;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
@@ -40,11 +41,13 @@ import lombok.Getter;
  * @since 2.0 {@index}
  */
 @Service
-@Named("causeway.val.WebModuleServerSentEvents")
+@Named(WebModuleServerSentEvents.LOGICAL_TYPE_NAME)
 @Qualifier("ServerSentEvents")
 @javax.annotation.Priority(PriorityPrecedence.MIDPOINT)
 public final class WebModuleServerSentEvents extends WebModuleAbstract {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleExtSseWicket.NAMESPACE + ".WebModuleServerSentEvents";
+
     private static final String SERVLET_NAME = "ServerSentEventsServlet";
 
     @Getter
diff --git a/security/bypass/src/main/java/org/apache/causeway/security/bypass/CausewayModuleSecurityBypass.java b/security/bypass/src/main/java/org/apache/causeway/security/bypass/CausewayModuleSecurityBypass.java
index e4e77dc2d0..60e03a48f9 100644
--- a/security/bypass/src/main/java/org/apache/causeway/security/bypass/CausewayModuleSecurityBypass.java
+++ b/security/bypass/src/main/java/org/apache/causeway/security/bypass/CausewayModuleSecurityBypass.java
@@ -42,4 +42,6 @@ import org.apache.causeway.security.bypass.authorization.AuthorizorBypass;
 })
 public class CausewayModuleSecurityBypass {
 
+    public static final String NAMESPACE = "causeway.security.bypass";
+
 }
diff --git a/security/bypass/src/main/java/org/apache/causeway/security/bypass/authentication/AuthenticatorBypass.java b/security/bypass/src/main/java/org/apache/causeway/security/bypass/authentication/AuthenticatorBypass.java
index e5eef6cbdb..1c800b61ed 100644
--- a/security/bypass/src/main/java/org/apache/causeway/security/bypass/authentication/AuthenticatorBypass.java
+++ b/security/bypass/src/main/java/org/apache/causeway/security/bypass/authentication/AuthenticatorBypass.java
@@ -20,6 +20,7 @@ package org.apache.causeway.security.bypass.authentication;
 
 import javax.inject.Named;
 
+import org.apache.causeway.security.bypass.CausewayModuleSecurityBypass;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
@@ -33,11 +34,13 @@ import org.apache.causeway.core.security.authentication.standard.AuthenticatorAb
  * @since 1.x {@index}
  */
 @Service
-@Named("causeway.security.AuthenticatorBypass")
+@Named(AuthenticatorBypass.LOGICAL_TYPE_NAME)
 @javax.annotation.Priority(PriorityPrecedence.LATE)
 @Qualifier("Bypass")
 public class AuthenticatorBypass extends AuthenticatorAbstract {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleSecurityBypass.NAMESPACE + ".AuthenticatorBypass";
+
     @Override
     public boolean isValid(final AuthenticationRequest request) {
         return true;
diff --git a/security/bypass/src/main/java/org/apache/causeway/security/bypass/authorization/AuthorizorBypass.java b/security/bypass/src/main/java/org/apache/causeway/security/bypass/authorization/AuthorizorBypass.java
index f870300247..23b1a51d15 100644
--- a/security/bypass/src/main/java/org/apache/causeway/security/bypass/authorization/AuthorizorBypass.java
+++ b/security/bypass/src/main/java/org/apache/causeway/security/bypass/authorization/AuthorizorBypass.java
@@ -20,6 +20,7 @@ package org.apache.causeway.security.bypass.authorization;
 
 import javax.inject.Named;
 
+import org.apache.causeway.security.bypass.CausewayModuleSecurityBypass;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
@@ -32,11 +33,13 @@ import org.apache.causeway.core.security.authorization.Authorizor;
  * @since 1.x {@index}
  */
 @Service
-@Named("causeway.security.AuthorizorBypass")
+@Named(AuthorizorBypass.LOGICAL_TYPE_NAME)
 @javax.annotation.Priority(PriorityPrecedence.LATE)
 @Qualifier("Bypass")
 public class AuthorizorBypass implements Authorizor {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleSecurityBypass.NAMESPACE + ".AuthorizorBypass";
+
     @Override
     public boolean isVisible(final InteractionContext authentication, final Identifier identifier) {
         return true;
diff --git a/security/spring/src/main/java/org/apache/causeway/security/spring/CausewayModuleSecuritySpring.java b/security/spring/src/main/java/org/apache/causeway/security/spring/CausewayModuleSecuritySpring.java
index 737a1ab676..49ce98b004 100644
--- a/security/spring/src/main/java/org/apache/causeway/security/spring/CausewayModuleSecuritySpring.java
+++ b/security/spring/src/main/java/org/apache/causeway/security/spring/CausewayModuleSecuritySpring.java
@@ -64,6 +64,8 @@ import lombok.extern.log4j.Log4j2;
 @Log4j2
 public class CausewayModuleSecuritySpring {
 
+    public static final String NAMESPACE = "causeway.security.spring";
+
     @Qualifier("springSecurityFilterChain")
     @Inject private Filter springSecurityFilterChain;
     @Inject private CausewayConfiguration causewayConfiguration;
diff --git a/security/spring/src/main/java/org/apache/causeway/security/spring/authentication/AuthenticatorSpring.java b/security/spring/src/main/java/org/apache/causeway/security/spring/authentication/AuthenticatorSpring.java
index 14b9119278..fd2ab1fb1a 100644
--- a/security/spring/src/main/java/org/apache/causeway/security/spring/authentication/AuthenticatorSpring.java
+++ b/security/spring/src/main/java/org/apache/causeway/security/spring/authentication/AuthenticatorSpring.java
@@ -21,6 +21,7 @@ package org.apache.causeway.security.spring.authentication;
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.apache.causeway.security.spring.CausewayModuleSecuritySpring;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
@@ -34,11 +35,13 @@ import org.apache.causeway.core.security.authentication.Authenticator;
  * @since 2.0 {@index}
  */
 @Service
-@Named("causeway.security.AuthenticatorSpring")
+@Named(AuthenticatorSpring.LOGICAL_TYPE_NAME)
 @javax.annotation.Priority(PriorityPrecedence.EARLY)
 @Qualifier("Spring")
 public class AuthenticatorSpring implements Authenticator {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleSecuritySpring.NAMESPACE + ".AuthenticatorSpring";
+
     @Inject private InteractionProvider interactionProvider;
 
     @Override
diff --git a/security/spring/src/main/java/org/apache/causeway/security/spring/webmodule/WebModuleSpringSecurity.java b/security/spring/src/main/java/org/apache/causeway/security/spring/webmodule/WebModuleSpringSecurity.java
index 94ce481ffb..837204078b 100644
--- a/security/spring/src/main/java/org/apache/causeway/security/spring/webmodule/WebModuleSpringSecurity.java
+++ b/security/spring/src/main/java/org/apache/causeway/security/spring/webmodule/WebModuleSpringSecurity.java
@@ -24,6 +24,7 @@ import javax.servlet.ServletContext;
 import javax.servlet.ServletContextListener;
 import javax.servlet.ServletException;
 
+import org.apache.causeway.security.spring.CausewayModuleSecuritySpring;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
@@ -40,11 +41,13 @@ import lombok.Getter;
  * @since 2.0 {@index}
  */
 @Service
-@Named("causeway.security.WebModuleSpringSecurity")
+@Named(WebModuleSpringSecurity.LOGICAL_TYPE_NAME)
 @javax.annotation.Priority(PriorityPrecedence.FIRST + 100)
 @Qualifier("Spring")
 public final class WebModuleSpringSecurity extends WebModuleAbstract {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleSecuritySpring.NAMESPACE + ".WebModuleSpringSecurity";
+
     @Getter
     private final String name = "Spring Security Integration";
 
diff --git a/testing/fakedata/applib/src/main/java/org/apache/causeway/testing/fakedata/applib/services/FakeDataService.java b/testing/fakedata/applib/src/main/java/org/apache/causeway/testing/fakedata/applib/services/FakeDataService.java
index 5a2547f5e1..70a25015e2 100644
--- a/testing/fakedata/applib/src/main/java/org/apache/causeway/testing/fakedata/applib/services/FakeDataService.java
+++ b/testing/fakedata/applib/src/main/java/org/apache/causeway/testing/fakedata/applib/services/FakeDataService.java
@@ -50,7 +50,7 @@ import org.apache.causeway.applib.services.repository.RepositoryService;
  * @since 2.0 {@index}
  */
 @Service
-@Named("causeway.test.FakeDataService")
+@Named("causeway.testing.FakeDataService")
 @Priority(PriorityPrecedence.MIDPOINT)
 @Qualifier("Default")
 public class FakeDataService {
diff --git a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/CausewayModuleValJodatimeIntegration.java b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/CausewayModuleValJodatimeIntegration.java
index cf30ea0b3b..4857550637 100644
--- a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/CausewayModuleValJodatimeIntegration.java
+++ b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/CausewayModuleValJodatimeIntegration.java
@@ -37,4 +37,7 @@ import org.apache.causeway.valuetypes.jodatime.integration.valuesemantics.JodaLo
     JodaDateTimeValueSemantics.class,
 })
 public class CausewayModuleValJodatimeIntegration {
+
+    public static final String NAMESPACE = "causeway.value.joda";
+
 }
diff --git a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaDateTimeValueSemantics.java b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaDateTimeValueSemantics.java
index 56ba20ae7e..0d758034d1 100644
--- a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaDateTimeValueSemantics.java
+++ b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaDateTimeValueSemantics.java
@@ -23,6 +23,7 @@ import java.time.ZonedDateTime;
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.apache.causeway.valuetypes.jodatime.integration.CausewayModuleValJodatimeIntegration;
 import org.joda.time.DateTime;
 import org.springframework.stereotype.Component;
 
@@ -33,10 +34,12 @@ import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter;
 import org.apache.causeway.valuetypes.jodatime.applib.value.JodaTimeConverters;
 
 @Component
-@Named("causeway.val.JodaDateTimeValueSemantics")
+@Named(JodaDateTimeValueSemantics.LOGICAL_TYPE_NAME)
 public class JodaDateTimeValueSemantics
 extends TemporalSemanticsAdapter<org.joda.time.DateTime, ZonedDateTime>  {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleValJodatimeIntegration.NAMESPACE + ".JodaDateTimeValueSemantics";
+
     @Inject ZonedDateTimeValueSemantics zonedDateTimeValueSemantics;
 
     @Override
diff --git a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateTimeValueSemantics.java b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateTimeValueSemantics.java
index 4f7078c070..b286152982 100644
--- a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateTimeValueSemantics.java
+++ b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateTimeValueSemantics.java
@@ -21,6 +21,7 @@ package org.apache.causeway.valuetypes.jodatime.integration.valuesemantics;
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.apache.causeway.valuetypes.jodatime.integration.CausewayModuleValJodatimeIntegration;
 import org.joda.time.LocalDateTime;
 import org.springframework.stereotype.Component;
 
@@ -31,10 +32,12 @@ import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter;
 import org.apache.causeway.valuetypes.jodatime.applib.value.JodaTimeConverters;
 
 @Component
-@Named("causeway.val.JodaLocalDateTimeValueSemantics")
+@Named(JodaLocalDateTimeValueSemantics.LOGICAL_TYPE_NAME)
 public class JodaLocalDateTimeValueSemantics
 extends TemporalSemanticsAdapter<org.joda.time.LocalDateTime, java.time.LocalDateTime>  {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleValJodatimeIntegration.NAMESPACE + ".JodaLocalDateTimeValueSemantics";
+
     @Inject LocalDateTimeValueSemantics localDateTimeValueSemantics;
 
     @Override
diff --git a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateValueSemantics.java b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateValueSemantics.java
index cb99971f25..8c04aa5ba0 100644
--- a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateValueSemantics.java
+++ b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalDateValueSemantics.java
@@ -21,6 +21,7 @@ package org.apache.causeway.valuetypes.jodatime.integration.valuesemantics;
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.apache.causeway.valuetypes.jodatime.integration.CausewayModuleValJodatimeIntegration;
 import org.joda.time.LocalDate;
 import org.springframework.stereotype.Component;
 
@@ -31,10 +32,12 @@ import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter;
 import org.apache.causeway.valuetypes.jodatime.applib.value.JodaTimeConverters;
 
 @Component
-@Named("causeway.val.JodaLocalDateValueSemantics")
+@Named(JodaLocalDateValueSemantics.LOGICAL_TYPE_NAME)
 public class JodaLocalDateValueSemantics
 extends TemporalSemanticsAdapter<org.joda.time.LocalDate, java.time.LocalDate>  {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleValJodatimeIntegration.NAMESPACE + ".JodaLocalDateValueSemantics";
+
     @Inject LocalDateValueSemantics localDateValueSemantics;
 
     @Override
diff --git a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalTimeValueSemantics.java b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalTimeValueSemantics.java
index da51d75824..efa2df2de8 100644
--- a/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalTimeValueSemantics.java
+++ b/valuetypes/jodatime/integration/src/main/java/org/apache/causeway/valuetypes/jodatime/integration/valuesemantics/JodaLocalTimeValueSemantics.java
@@ -21,6 +21,7 @@ package org.apache.causeway.valuetypes.jodatime.integration.valuesemantics;
 import javax.inject.Inject;
 import javax.inject.Named;
 
+import org.apache.causeway.valuetypes.jodatime.integration.CausewayModuleValJodatimeIntegration;
 import org.joda.time.LocalTime;
 import org.springframework.stereotype.Component;
 
@@ -31,10 +32,12 @@ import org.apache.causeway.core.metamodel.valuetypes.TemporalSemanticsAdapter;
 import org.apache.causeway.valuetypes.jodatime.applib.value.JodaTimeConverters;
 
 @Component
-@Named("causeway.val.JodaLocalTimeValueSemantics")
+@Named(JodaLocalTimeValueSemantics.LOGICAL_TYPE_NAME)
 public class JodaLocalTimeValueSemantics
 extends TemporalSemanticsAdapter<org.joda.time.LocalTime, java.time.LocalTime>  {
 
+    public static final String LOGICAL_TYPE_NAME = CausewayModuleValJodatimeIntegration.NAMESPACE + ".JodaLocalTimeValueSemantics";
+
     @Inject LocalTimeValueSemantics localTimeValueSemantics;
 
     @Override
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/internal/TaggerDefault.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/internal/TaggerDefault.java
index 3844be0f8e..93799a305b 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/internal/TaggerDefault.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/internal/TaggerDefault.java
@@ -25,6 +25,12 @@ import java.util.stream.Stream;
 
 import javax.inject.Named;
 
+import org.apache.causeway.applib.CausewayModuleApplib;
+import org.apache.causeway.core.config.CausewayModuleCoreConfig;
+import org.apache.causeway.core.metamodel.CausewayModuleCoreMetamodel;
+import org.apache.causeway.core.runtime.CausewayModuleCoreRuntime;
+import org.apache.causeway.schema.CausewayModuleSchema;
+import org.apache.causeway.viewer.restfulobjects.rendering.CausewayModuleRestfulObjectsRendering;
 import org.springframework.stereotype.Component;
 
 import org.apache.causeway.applib.annotation.Programmatic;
@@ -44,31 +50,59 @@ public class TaggerDefault implements Tagger {
     public String tagForLogicalTypeName(final String logicalTypeName, final String fallback) {
 
         if (logicalTypeName.startsWith("org.apache.causeway.")) {
-            return ". apache causeway internals";
+            return "… asf causeway internals";
         }
-        if (logicalTypeName.startsWith("causeway.applib.")) {
-            return ". apache causeway applib";
+        if (logicalTypeName.startsWith(CausewayModuleApplib.NAMESPACE)) {
+            return "… asf causeway applib";
         }
-        if (logicalTypeName.startsWith("causeway.conf.")) {
-            return ". apache causeway conf";
+        if (logicalTypeName.startsWith(CausewayModuleApplib.NAMESPACE_CONF) ||
+            logicalTypeName.startsWith(CausewayModuleCoreConfig.NAMESPACE)) {
+            return "… asf causeway config";
         }
-        if (logicalTypeName.startsWith("causeway.sudo.")) {
-            return ". apache causeway sudo";
+        if (logicalTypeName.startsWith(CausewayModuleApplib.NAMESPACE_FEAT)) {
+            return "… asf causeway feat";
+        }
+        if (logicalTypeName.startsWith(CausewayModuleSchema.NAMESPACE)) {
+            return "… asf causeway schema";
+        }
+        if (logicalTypeName.startsWith(CausewayModuleApplib.NAMESPACE_SUDO)) {
+            return "… asf causeway sudo";
+        }
+        if (logicalTypeName.startsWith(CausewayModuleCoreMetamodel.NAMESPACE)) {
+            return "… asf causeway metamodel";
+        }
+        if (logicalTypeName.startsWith(CausewayModuleCoreRuntime.NAMESPACE) ||
+            logicalTypeName.startsWith("causeway.runtimeservices") ||
+            logicalTypeName.startsWith("causeway.interaction") ||
+            logicalTypeName.startsWith("causeway.transaction") ||
+            logicalTypeName.startsWith("causeway.webapp")
+        ) {
+            return "… asf causeway runtime";
+        }
+        if (logicalTypeName.startsWith(CausewayModuleViewerRestfulObjectsApplib.NAMESPACE) ||
+            logicalTypeName.startsWith(CausewayModuleRestfulObjectsRendering.NAMESPACE)) {
+            return "… asf causeway viewer (restful)";
+        }
+        if (logicalTypeName.startsWith("causeway.viewer.wicket")) {
+            return "… asf causeway viewer (wicket)";
+        }
+        if (logicalTypeName.startsWith("causeway.viewer.")) {
+            return "… asf causeway viewer";
         }
         if (logicalTypeName.startsWith("causeway.persistence.")) {
-            return ". apache causeway persistence - " + partsOf(logicalTypeName).skip(2).limit(1).collect(Collectors.joining("."));
+            return "… asf causeway persistence - " + partsOf(logicalTypeName).skip(2).limit(1).collect(Collectors.joining("."));
         }
         if (logicalTypeName.startsWith("causeway.security.")) {
-            return ". apache causeway security";
+            return "… asf causeway security";
         }
-        if (logicalTypeName.startsWith("causeway.ext.")) {
-            return ". apache causeway extensions - " + partsOf(logicalTypeName).skip(2).limit(1).collect(Collectors.joining("."));
+        if (logicalTypeName.startsWith("causeway.testing")) {
+            return "… asf causeway testing";
         }
-        if (logicalTypeName.startsWith("causeway.sub.")) {
-            return ". apache causeway subdomains - " + partsOf(logicalTypeName).skip(2).limit(1).collect(Collectors.joining("."));
+        if (logicalTypeName.startsWith("causeway.ext.")) {
+            return "… asf causeway extensions - " + partsOf(logicalTypeName).skip(2).limit(1).collect(Collectors.joining("."));
         }
         if (logicalTypeName.startsWith("org.springframework.")) {
-            return "> spring framework " + partsOf(logicalTypeName).skip(2).limit(1).collect(Collectors.joining("."));
+            return "… spring framework " + partsOf(logicalTypeName).skip(2).limit(1).collect(Collectors.joining("."));
         }
 
         Matcher matcher;
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/internal/_OpenApiModelFactory.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/internal/_OpenApiModelFactory.java
index 0f5f027c08..aaddad2f46 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/internal/_OpenApiModelFactory.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/swagger/internal/_OpenApiModelFactory.java
@@ -231,7 +231,7 @@ class _OpenApiModelFactory {
 
     void appendRestfulObjectsSupportingPathsAndDefinitions() {
 
-        final String tag = ". restful objects supporting resources";
+        final String tag = "… asf restful objects supporting resources";
 
         oa3.path("/",
                 new PathItem()