You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2019/12/02 23:02:09 UTC

[isis-app-simpleapp] 01/09: ISIS-2148 - Initial take-on (moved out from apache/isis)

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

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

commit cc93a3707f373b498d88135c64c9811c5d1b1465
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Dec 2 10:43:53 2019 +0000

    ISIS-2148 - Initial take-on (moved out from apache/isis)
---
 .gitattributes                                     |   51 +
 .gitignore                                         |   43 +
 .gitlab-ci.yml                                     |   51 +
 .m2/settings.xml                                   |   15 +
 README.adoc                                        |  149 +++
 application/.gitignore                             |    1 +
 application/log4j2-test.xml                        |   60 +
 application/pom.xml                                |  133 +++
 .../domainapp/application/ApplicationModule.java   |   33 +
 ...mainAppFixtureScriptsSpecificationProvider.java |   45 +
 .../fixture/scenarios/DomainAppDemo.java           |   41 +
 .../services/health/HealthCheckServiceImpl.java    |   47 +
 .../services/homepage/HomePageService.java         |   42 +
 .../services/homepage/HomePageViewModel.java       |   47 +
 .../services/homepage/HomePageViewModel.layout.xml |   51 +
 .../services/homepage/HomePageViewModel.png        |  Bin 0 -> 456 bytes
 application/src/main/resources/log4j2-spring.xml   |   42 +
 .../application/bdd/RunIntegBddSpecs.java          |   41 +
 .../application/bdd/glue/SimpleObjectsStepDef.java |  100 ++
 .../SimpleObjectSpec_listAllAndCreate.feature      |   24 +
 .../integtests/ApplicationIntegTestAbstract.java   |   57 +
 .../integtests/mml/DomainModel_IntegTest.java      |   41 +
 .../integtests/mml/MetaModelService_IntegTest.java |  145 +++
 ...omainAppFixtureScriptsSpecificationProvider.xml |   44 +
 ...tion.services.health.HealthCheckServiceImpl.xml |   44 +
 ...ication.services.homepage.HomePageViewModel.xml |  617 ++++++++++
 ...ainapp.modules.simple.dom.impl.SimpleObject.xml | 1182 ++++++++++++++++++++
 ...inapp.modules.simple.dom.impl.SimpleObjects.xml |  399 +++++++
 .../application/integtests/mml/received/.gitignore |    1 +
 .../integtests/smoke/Smoke_IntegTest.java          |  102 ++
 enhance-all.sh                                     |    2 +
 module-simple/.gitignore                           |    8 +
 module-simple/log4j2-test.xml                      |   60 +
 module-simple/logging-dn-enhance.properties        |   41 +
 module-simple/pom.xml                              |   84 ++
 .../src/main/java/META-INF/persistence.xml         |   26 +
 .../domainapp/modules/simple/SimpleModule.java     |   53 +
 .../modules/simple/dom/impl/SimpleObject.java      |  116 ++
 .../simple/dom/impl/SimpleObject.layout.xml        |   68 ++
 .../modules/simple/dom/impl/SimpleObject.png       |  Bin 0 -> 653 bytes
 .../modules/simple/dom/impl/SimpleObjects.java     |   96 ++
 .../domainapp/modules/simple/dom/types/Name.java   |   54 +
 .../domainapp/modules/simple/dom/types/Notes.java  |   43 +
 .../simple/fixture/SimpleObjectBuilder.java        |   50 +
 .../simple/fixture/SimpleObject_persona.java       |   66 ++
 .../modules/simple/dom/impl/SimpleObject_Test.java |   50 +
 .../simple/dom/impl/SimpleObjects_Test.java        |  115 ++
 .../integtests/SimpleModuleIntegTestAbstract.java  |   56 +
 .../integtests/tests/SimpleObject_IntegTest.java   |  153 +++
 .../integtests/tests/SimpleObjects_IntegTest.java  |  111 ++
 pom.xml                                            |   81 ++
 webapp/lib/.gitignore                              |    0
 webapp/pom.xml                                     |  243 ++++
 .../src/main/java/domainapp/webapp/SimpleApp.java  |   75 ++
 .../domainapp/webapp/layout/menubars.layout.xml    |  115 ++
 webapp/src/main/resources/application.yml          |  145 +++
 webapp/src/main/resources/banner.txt               |    6 +
 .../main/resources/config/application.properties   |   12 +
 webapp/src/main/resources/shiro.ini                |   93 ++
 .../src/main/resources/static/css/application.css  |   19 +
 .../static/images/apache-isis/logo-48x48.png       |  Bin 0 -> 2622 bytes
 .../resources/static/images/apache-isis/logo.png   |  Bin 0 -> 14160 bytes
 .../src/main/resources/static/images/favicon.png   |  Bin 0 -> 2143 bytes
 webapp/src/main/resources/static/index.html        |  117 ++
 .../main/resources/static/scripts/application.js   |    3 +
 webapp/src/main/webapp/WEB-INF/translations-en.po  |  674 +++++++++++
 webapp/src/main/webapp/WEB-INF/translations-es.po  |  673 +++++++++++
 webapp/src/main/webapp/WEB-INF/translations-nl.po  |  674 +++++++++++
 webapp/src/main/webapp/WEB-INF/translations.po     |  673 +++++++++++
 webapp/src/main/webapp/WEB-INF/web.xml             |   27 +
 .../test/java/domain/webapp/lockdown/.gitignore    |    1 +
 .../webapp/lockdown/LockDownMavenDeps_Test.java    |   50 +
 .../LockDownMavenDeps_Test.list.approved.txt       |  225 ++++
 .../LockDownMavenDeps_Test.tree.approved.txt       |  224 ++++
 74 files changed, 9030 insertions(+)

diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..b1eafb6
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,51 @@
+#
+#
+# text files are normalized (convert crlf => lf)
+# binary files are not normalized (binary is a macro for -text -diff)
+#
+#
+
+
+# Unless otherwise stated, assume text
+
+* text=auto
+
+
+*.java text diff=java
+*.html text diff=html
+*.xhtml text diff=html
+*.xml text
+*.txt text
+
+
+*.jar binary
+*.so binary
+*.dll binary
+
+# images
+*.jpg binary
+*.jpeg binary
+*.png binary
+*.pdn binary
+*.pdn binary
+
+
+*.cs     text diff=csharp
+
+*.sln    merge=union
+*.csproj merge=union
+*.vbproj merge=union
+*.fsproj merge=union
+*.dbproj merge=union
+
+*.doc	 diff=astextplain
+*.DOC	 diff=astextplain
+*.docx diff=astextplain
+*.DOCX diff=astextplain
+*.dot  diff=astextplain
+*.DOT  diff=astextplain
+*.pdf  diff=astextplain
+*.PDF	 diff=astextplain
+*.rtf	 diff=astextplain
+*.RTF	 diff=astextplain
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..371262a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,43 @@
+*~
+*.swp
+*.class
+bin/
+target/
+target-ide/
+logs/
+.settings/
+.project
+.classpath
+.idea
+*.iml
+
+build/
+
+JArchitectOut/
+*.jdproj
+
+neo4j_DB/
+
+# log files
+datanucleus.log
+isis.log
+i18n-po.log
+hs_err_pid*.log
+
+# Package Files #
+*.war
+*.ear
+
+dependency-reduced-pom.xml
+pom.xml.tag
+pom.xml.next
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+
+.clover/
+
+
+rebel.xml
+translations.pot
+
+.flattened-pom.xml
\ No newline at end of file
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..7d4a33b
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,51 @@
+#
+# requires the following gitlab secret variables
+# - DOCKER_REGISTRY_USERNAME
+# - DOCKER_REGISTRY_PASSWORD
+# - DOCKER_REGISTRY_EMAIL
+# - DOCKER_REGISTRY_NAME        # eg "registry-1.docker.io" (for docker hub)
+                                # or "docker-dev.incode.cloud" (eg a cloud-based nexus)
+# - DOCKER_REGISTRY_URL         # eg "https://index.docker.io/v1/" (for docker hub)
+                                # or "https://repo.incode.cloud/repository/docker-dev/" (eg a cloud-based nexus)
+#
+
+image: maven:3.5.3-jdk-8
+
+before_script:
+  - export REVISION=$(date +%Y%m%d.%H%M).$CI_COMMIT_REF_SLUG.$(echo $CI_COMMIT_SHA | cut -c1-8)
+
+services:
+  - docker:dind
+
+variables:
+  DOCKER_HOST: tcp://docker:2375
+  DOCKER_DRIVER: overlay2
+  MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository -Dskip.cloudbees-estatio-repositories -Dskip.sonatype-snapshots -Dskip.apache-snapshots"
+  APP_NAME: "simpleapp"
+
+stages:
+  - build-package-push
+
+build-package-push:
+  stage: build-package-push
+  script:
+    - echo "REVISION=$REVISION"
+    - >
+      mvn --batch-mode \
+           install \
+          -Drevision=$REVISION \
+          -Dmavenmixin-docker \
+          -Ddocker-plugin.imageName=$DOCKER_REGISTRY_NAME/$DOCKER_REGISTRY_USERNAME/$APP_NAME
+    - >
+      mvn -s .m2/settings.xml \
+          --batch-mode \
+          docker:push@push-image-tagged \
+          -pl webapp \
+          -Drevision=$REVISION \
+          -DskipTests \
+          -Dskip.isis-swagger \
+          -Dmavenmixin-docker \
+          -Ddocker-plugin.imageName=$DOCKER_REGISTRY_USERNAME/$DOCKER_REGISTRY_REPOSITORY \
+          -Ddocker-plugin.serverId=docker-registry \
+          -Ddocker.registryUrl=$DOCKER_REGISTRY_URL
+
diff --git a/.m2/settings.xml b/.m2/settings.xml
new file mode 100644
index 0000000..6038b0e
--- /dev/null
+++ b/.m2/settings.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
+  <servers>
+    <server>
+      <id>docker-registry</id>
+      <username>${env.DOCKER_REGISTRY_USERNAME}</username>
+      <password>${env.DOCKER_REGISTRY_PASSWORD}</password>
+      <configuration>
+        <email>${env.DOCKER_REGISTRY_EMAIL}</email>
+      </configuration>
+    </server>
+  </servers>
+</settings>
diff --git a/README.adoc b/README.adoc
new file mode 100644
index 0000000..79c242a
--- /dev/null
+++ b/README.adoc
@@ -0,0 +1,149 @@
+= SimpleApp
+
+This is a simple link:http://isis.apache.org[Apache Isis] application, but structured so it can be used as a starting point for developing your own applications.
+
+
+
+== Quick start
+
+Build using:
+
+[source,bash]
+----
+mvn clean install
+----
+
+Run using:
+
+[source,bash]
+----
+mvn -pl webapp spring-boot:run
+----
+
+Login using: 
+
+* username: `sven`
+* password: `pass`
+
+The app runs with HSQLDB running in-memory, with sample data set up using link:https://isis.apache.org/guides/ugtst.html#_ugtst_fixture-scripts[fixture scripts].
+
+
+
+== Application Structure
+
+The following table explains the contents of each of the directories:
+
+[width="100%",options="header,footer", cols="2a,4a"]
+|====================
+|Directory
+|Description
+
+|`application`
+|Defines application-level classes such as menus and the ``AppManifest`` (which defines the modules that make up the application).
+It also  holds application-wide integration tests/BDD specs.
+
+|`module-simple`
+|Holds the "simple" module, consisting of the `SimpleObject` entity and supporting repository, along with module-specific unit- and integration tests.
+Also runs `isis:validate` goal for the domain objects within the module. +
+
+[TIP]
+====
+Larger applications should consist of multiple modules; each such module can be copied from this starter module.
+====
+
+|`webapp`
+|Assembles the application into a webapp (comprising both the Wicket viewer and Restful Objects viewer) and also as a docker image, and runs the `isis:swagger` goal.
+
+
+|====================
+
+== More advanced use cases
+
+* To enhance all JDO entities prior to running: +
++
+[source,bash]
+----
+mvn -pl module-simple datanucleus:enhance -o
+----
+
+
+* To disable the running of unit tests: +
++
+[source,bash]
+----
+mvn -DskipUTs 
+----
++
+[TIP]
+====
+By default, output of unit tests are in  `target/surefire-unittest-reports` (in the ``module-simple`` modules).
+====
+
+* To disable the running of integration tests: +
++
+[source,bash]
+----
+mvn -DskipITs 
+----
++
+[TIP]
+====
+By default, output of integration tests are in  `target/surefire-integtest-reports` (in the ``application`` and ``module-simple`` modules).
+====
+
+* To disable the running of BDD specs: +
++
+[source,bash]
+----
+mvn -DskipBSs 
+----
++
+[TIP]
+====
+By default, output of integration tests are in  `target/surefire-integbddspecs-reports` (in the ``application`` module).
+====
+
+* To disable the running of all tests and BDD specs: +
++
+[source,bash]
+----
+mvn -DskipTests 
+----
+
+//* To package up the application as a docker image (specifying the docker image name as a system property): +
+//+
+//[source,bash]
+//----
+//mvn install -Dmavenmixin-docker -Ddocker-plugin.imageName=mycompany/myapp
+//----
+//+
+//Alternatively, define the `${docker-plugin.imageName}` in the `webapp` module and use simply: +
+//+
+//[source,bash]
+//----
+//mvn install -Dmavenmixin-docker
+//----
+//+
+//The packaged image can be viewed using `docker images`.
+//
+//* To run a docker image previously packaged: +
+//+
+//[source,bash]
+//----
+//docker container run -d -p 8080:8080 mycompany/myapp
+//----
+//+
+//This can then be accessed at link:http://localhost:8080[localhost:8080].
+//+
+//See link:https://github.com/danhaywood/java-mavenmixin-docker#how-to-consume[mavenmixin-docker] for further details on how to run docker images.
+//
+//* To upload the application as a docker image to link:https://hub.docker.com[docker hub] (or some other docker registry): +
+//+
+//[source,bash]
+//----
+//mvn -pl webapp deploy -Dmavenmixin-docker
+//----
+//+
+//This assumes that the `${docker-plugin.imageName}` property has been defined, _and_ also that docker registry credentials have been specified in `~/.m2/settings.xml`.
+//Once more, see link:https://github.com/danhaywood/java-mavenmixin-docker#how-to-configure[mavenmixin-docker] for further details.
+
diff --git a/application/.gitignore b/application/.gitignore
new file mode 100644
index 0000000..c71ea97
--- /dev/null
+++ b/application/.gitignore
@@ -0,0 +1 @@
+/.apt_generated/
diff --git a/application/log4j2-test.xml b/application/log4j2-test.xml
new file mode 100644
index 0000000..56e8ad6
--- /dev/null
+++ b/application/log4j2-test.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="WARN">
+	<Properties>
+		<Property name="PID">????</Property>
+		<Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>
+		<Property name="LOG_LEVEL_PATTERN">%5p</Property>
+		<Property name="LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property>
+		<Property name="CONSOLE_LOG_PATTERN">%clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+		<Property name="FILE_LOG_PATTERN">%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+	</Properties>
+	<Appenders>
+		<Console name="Console" target="SYSTEM_OUT" follow="true">
+			<PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}" />
+		</Console>
+	</Appenders>
+	<Loggers>
+		<Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />
+		<Logger name="org.apache.catalina.util.LifecycleBase" level="error" />
+		<Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
+		<logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/>
+		<Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
+		<Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" />
+		<Logger name="org.hibernate.validator.internal.util.Version" level="warn" />
+		<logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/>
+		
+		<logger name="org.apache.directory" level="warn"/>
+		<logger name="org.apache.directory.api.ldap.model.entry.Value" level="off"/>
+		
+		<logger name="DataNucleus.Persistence" level="info"/>
+		<logger name="DataNucleus.Transaction" level="info"/>
+		<logger name="DataNucleus.Datastore.Schema" level="info"/>
+		<logger name="DataNucleus.Datastore.Native" level="info"/>
+		
+		<Root level="info">
+			<AppenderRef ref="Console" />
+		</Root>
+	</Loggers>
+</Configuration>
+
+<!-- # DataNucleus Logging Categories -->
+<!-- DataNucleus.Persistence - All messages relating to the persistence process -->
+<!-- DataNucleus.Transaction - All messages relating to transactions -->
+<!-- DataNucleus.Connection - All messages relating to Connections. -->
+<!-- DataNucleus.Query - All messages relating to queries -->
+<!-- DataNucleus.Cache - All messages relating to the DataNucleus Cache -->
+<!-- DataNucleus.MetaData - All messages relating to MetaData -->
+<!-- DataNucleus.Datastore - All general datastore messages -->
+<!-- DataNucleus.Datastore.Schema - All schema related datastore log messages -->
+<!-- DataNucleus.Datastore.Persist - All datastore persistence messages -->
+<!-- DataNucleus.Datastore.Retrieve - All datastore retrieval messages -->
+<!-- DataNucleus.Datastore.Native - Log of all 'native' statements sent to the datastore -->
+<!-- DataNucleus.General - All general operational messages -->
+<!-- DataNucleus.Lifecycle - All messages relating to object lifecycle changes -->
+<!-- DataNucleus.ValueGeneration - All messages relating to value generation -->
+<!-- DataNucleus.Enhancer - All messages from the DataNucleus Enhancer. -->
+<!-- DataNucleus.SchemaTool - All messages from DataNucleus SchemaTool -->
+<!-- DataNucleus.JDO - All messages general to JDO -->
+<!-- DataNucleus.JPA - All messages general to JPA -->
+<!-- DataNucleus.JCA - All messages relating to Connector JCA. -->
+<!-- DataNucleus.IDE - Messages from the DataNucleus IDE. -->
\ No newline at end of file
diff --git a/application/pom.xml b/application/pom.xml
new file mode 100644
index 0000000..ee571d5
--- /dev/null
+++ b/application/pom.xml
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.isis.examples.apps</groupId>
+        <artifactId>simpleapp</artifactId>
+        <version>2.0.0-M3-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>simpleapp-application</artifactId>
+    <name>Apache Isis App - SimpleApp Application</name>
+
+    <description>This defines the application (manifest) and runs application-level fixtures and integration (smoke) tests</description>
+
+    <packaging>jar</packaging>
+
+    <properties>
+        <maven-cucumber-reporting.version>4.11.2</maven-cucumber-reporting.version>
+    </properties>
+
+    <build>
+        <resources>
+            <resource>
+                <filtering>false</filtering>
+                <directory>src/main/resources</directory>
+            </resource>
+            <resource>
+                <filtering>false</filtering>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**</include>
+                </includes>
+                <excludes>
+                    <exclude>**/*.java</exclude>
+                </excludes>
+            </resource>
+        </resources>
+        <testResources>
+            <testResource>
+                <filtering>false</filtering>
+                <directory>src/test/resources</directory>
+            </testResource>
+            <testResource>
+                <filtering>false</filtering>
+                <directory>src/test/java</directory>
+            </testResource>
+        </testResources>
+        <plugins>
+            <plugin>
+                <groupId>net.masterthought</groupId>
+                <artifactId>maven-cucumber-reporting</artifactId>
+                <version>${maven-cucumber-reporting.version}</version>
+                <executions>
+                    <execution>
+                        <id>execution</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <goal>generate</goal>
+                        </goals>
+                        <configuration>
+                            <projectName>SimpleApp</projectName>
+                            <outputDirectory>${project.build.directory}</outputDirectory>
+                            <inputDirectory>${project.build.directory}</inputDirectory>
+                            <jsonFiles>
+                                <param>**/*.json</param>
+                            </jsonFiles>
+                            <skip>${skipBSs}</skip>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+    
+    	<dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>simpleapp-module-simple</artifactId>
+        </dependency>
+        
+		<dependency>
+			<groupId>org.apache.isis.mavendeps</groupId>
+			<artifactId>isis-mavendeps-webapp</artifactId>
+			<type>pom</type>
+		</dependency>
+		
+        <dependency>
+            <groupId>org.apache.isis.mavendeps</groupId>
+            <artifactId>isis-mavendeps-jdk11</artifactId>
+            <type>pom</type>
+        </dependency>
+
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.isis.mavendeps</groupId>
+            <artifactId>isis-mavendeps-testing</artifactId>
+            <type>pom</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>junit</groupId>
+                    <artifactId>junit</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+    </dependencies>
+
+</project>
diff --git a/application/src/main/java/domainapp/application/ApplicationModule.java b/application/src/main/java/domainapp/application/ApplicationModule.java
new file mode 100644
index 0000000..684e332
--- /dev/null
+++ b/application/src/main/java/domainapp/application/ApplicationModule.java
@@ -0,0 +1,33 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.application;
+
+import org.apache.isis.extensions.fixtures.modules.Module;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import domainapp.modules.simple.SimpleModule;
+
+@Configuration
+@Import(SimpleModule.class)
+@ComponentScan
+public class ApplicationModule implements Module {
+
+}
diff --git a/application/src/main/java/domainapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java b/application/src/main/java/domainapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java
new file mode 100644
index 0000000..f51acff
--- /dev/null
+++ b/application/src/main/java/domainapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java
@@ -0,0 +1,45 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.application.fixture;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScripts;
+import org.apache.isis.extensions.fixtures.fixturespec.FixtureScriptsSpecification;
+import org.apache.isis.extensions.fixtures.fixturespec.FixtureScriptsSpecificationProvider;
+
+import domainapp.application.fixture.scenarios.DomainAppDemo;
+
+/**
+ * Specifies where to find fixtures, and other settings.
+ */
+@DomainService(
+        nature = NatureOfService.DOMAIN
+        )
+public class DomainAppFixtureScriptsSpecificationProvider implements FixtureScriptsSpecificationProvider {
+    @Override
+    public FixtureScriptsSpecification getSpecification() {
+        return FixtureScriptsSpecification
+                .builder(DomainAppFixtureScriptsSpecificationProvider.class)
+                .with(FixtureScripts.MultipleExecutionStrategy.EXECUTE)
+                .withRunScriptDefault(DomainAppDemo.class)
+                .withRecreate(DomainAppDemo.class)
+                .build();
+    }
+}
diff --git a/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java b/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java
new file mode 100644
index 0000000..1c2dccc
--- /dev/null
+++ b/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java
@@ -0,0 +1,41 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.application.fixture.scenarios;
+
+import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScript;
+import org.apache.isis.extensions.fixtures.legacy.teardown.TeardownFixtureAbstract2;
+import org.springframework.stereotype.Component;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.fixture.SimpleObject_persona;
+
+public class DomainAppDemo extends FixtureScript {
+
+    @Override
+    protected void execute(final ExecutionContext ec) {
+        ec.executeChild(this, new TeardownFixtureAbstract2() {
+            @Override
+            protected void execute(final ExecutionContext executionContext) {
+                deleteFrom(SimpleObject.class);
+            }
+        });
+        ec.executeChild(this, new SimpleObject_persona.PersistAll());
+    }
+
+}
diff --git a/application/src/main/java/domainapp/application/services/health/HealthCheckServiceImpl.java b/application/src/main/java/domainapp/application/services/health/HealthCheckServiceImpl.java
new file mode 100644
index 0000000..329b973
--- /dev/null
+++ b/application/src/main/java/domainapp/application/services/health/HealthCheckServiceImpl.java
@@ -0,0 +1,47 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.application.services.health;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.services.health.Health;
+import org.apache.isis.applib.services.health.HealthCheckService;
+
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+
+@DomainService(nature = NatureOfService.DOMAIN)
+public class HealthCheckServiceImpl implements HealthCheckService {
+
+    @Override
+    public Health check() {
+
+        try {
+            simpleObjects.ping();
+            return Health.ok();
+        } catch (Exception ex) {
+            return Health.error(ex.getMessage());
+        }
+
+    }
+
+    @Inject
+    SimpleObjects simpleObjects;
+}
diff --git a/application/src/main/java/domainapp/application/services/homepage/HomePageService.java b/application/src/main/java/domainapp/application/services/homepage/HomePageService.java
new file mode 100644
index 0000000..d3a4719
--- /dev/null
+++ b/application/src/main/java/domainapp/application/services/homepage/HomePageService.java
@@ -0,0 +1,42 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.application.services.homepage;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import org.springframework.stereotype.Service;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.HomePage;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.services.factory.FactoryService;
+
+@Service @Named("homepage.HomePageService")
+public class HomePageService {
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @HomePage
+    public HomePageViewModel homePage() {
+        return factoryService.instantiate(HomePageViewModel.class);
+    }
+
+
+    @Inject FactoryService factoryService;
+}
diff --git a/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.java b/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.java
new file mode 100644
index 0000000..952ab03
--- /dev/null
+++ b/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.java
@@ -0,0 +1,47 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.application.services.homepage;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.Nature;
+import org.apache.isis.applib.services.i18n.TranslatableString;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+
+@DomainObject(
+        nature = Nature.VIEW_MODEL,
+        objectType = "domainapp.application.services.homepage.HomePageViewModel"
+        )
+public class HomePageViewModel {
+
+    public TranslatableString title() {
+        return TranslatableString.tr("{num} objects", "num", getObjects().size());
+    }
+
+    public List<SimpleObject> getObjects() {
+        return simpleObjects.listAll();
+    }
+
+    @Inject SimpleObjects simpleObjects;
+}
diff --git a/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.layout.xml b/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.layout.xml
new file mode 100644
index 0000000..1436efc
--- /dev/null
+++ b/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.layout.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<bs3:grid xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd" xmlns="http://isis.apache.org/applib/layout/component" xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <bs3:row>
+        <bs3:col span="2">
+            <bs3:sizeSpan size="LG" span="2" offset="true"/>
+            <bs3:row>
+                <bs3:col span="12" unreferencedActions="true">
+                    <domainObject/>
+                    <action id="clearHints"/>
+                    <action id="downloadLayoutXml" hidden="EVERYWHERE"/>
+                    <action id="rebuildMetamodel" hidden="EVERYWHERE"/>
+                    <action id="downloadMetaModelXml" hidden="EVERYWHERE"/>
+                    <action id="openRestApi" hidden="EVERYWHERE"/>
+                </bs3:col>
+            </bs3:row>
+        </bs3:col>
+        <bs3:col span="4" unreferencedCollections="true">
+            <bs3:row>
+                <bs3:col span="12">
+                    <collection id="objects" defaultView="table"/>
+                </bs3:col>
+            </bs3:row>
+        </bs3:col>
+    </bs3:row>
+    <bs3:row>
+
+    </bs3:row>
+    <bs3:row>
+        <bs3:col span="0">
+            <fieldSet name="General" id="general" unreferencedProperties="true"/>
+        </bs3:col>
+    </bs3:row>
+</bs3:grid>
diff --git a/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.png b/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.png
new file mode 100644
index 0000000..cb03785
Binary files /dev/null and b/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.png differ
diff --git a/application/src/main/resources/log4j2-spring.xml b/application/src/main/resources/log4j2-spring.xml
new file mode 100644
index 0000000..08a5edb
--- /dev/null
+++ b/application/src/main/resources/log4j2-spring.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="WARN">
+	<Properties>
+		<Property name="PID">????</Property>
+		<Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>
+		<Property name="LOG_LEVEL_PATTERN">%5p</Property>
+		<Property name="LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property>
+		<Property name="CONSOLE_LOG_PATTERN">%clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+		<Property name="FILE_LOG_PATTERN">%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+	</Properties>
+	<Appenders>
+		<Console name="Console" target="SYSTEM_OUT" follow="true">
+			<PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}" />
+		</Console>
+	</Appenders>
+	<Loggers>
+	
+		<!-- silence Wicket -->
+		<Logger name="org.apache.wicket.page.PartialPageUpdate" level="error" />
+	
+		<Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />
+		<Logger name="org.apache.catalina.util.LifecycleBase" level="error" />
+		<Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
+		<logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/>
+		<Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
+		<Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" />
+		<Logger name="org.hibernate.validator.internal.util.Version" level="warn" />
+		<logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/>
+		
+		<logger name="org.apache.directory" level="warn"/>
+		<logger name="org.apache.directory.api.ldap.model.entry.Value" level="off"/>
+		
+		<logger name="DataNucleus.Persistence" level="info"/>
+		<logger name="DataNucleus.Transaction" level="info"/>
+		<logger name="DataNucleus.Datastore.Schema" level="info"/>
+		<logger name="DataNucleus.Datastore.Native" level="info"/>
+		
+		<Root level="info">
+			<AppenderRef ref="Console" />
+		</Root>
+	</Loggers>
+</Configuration>
diff --git a/application/src/test/java/domainapp/application/bdd/RunIntegBddSpecs.java b/application/src/test/java/domainapp/application/bdd/RunIntegBddSpecs.java
new file mode 100644
index 0000000..a50b050
--- /dev/null
+++ b/application/src/test/java/domainapp/application/bdd/RunIntegBddSpecs.java
@@ -0,0 +1,41 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package domainapp.application.bdd;
+
+import io.cucumber.junit.Cucumber;
+import io.cucumber.junit.CucumberOptions;
+
+import org.junit.runner.RunWith;
+
+
+/**
+ * Runs scenarios in all <tt>.feature</tt> files (this package and any subpackages). 
+ */
+@RunWith(Cucumber.class)
+@CucumberOptions(
+        plugin = {
+                "html:target/cucumber-html-report"
+                ,"json:target/cucumber.json"
+        },
+        strict = true,
+        tags = { "not @backlog", "not @ignore" },
+        glue = {
+        }
+        )
+public class RunIntegBddSpecs {
+    // intentionally empty 
+}
diff --git a/application/src/test/java/domainapp/application/bdd/glue/SimpleObjectsStepDef.java b/application/src/test/java/domainapp/application/bdd/glue/SimpleObjectsStepDef.java
new file mode 100644
index 0000000..70efd86
--- /dev/null
+++ b/application/src/test/java/domainapp/application/bdd/glue/SimpleObjectsStepDef.java
@@ -0,0 +1,100 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.application.bdd.glue;
+
+import java.util.List;
+import java.util.UUID;
+
+import javax.inject.Inject;
+
+import org.junit.Ignore;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.support.TransactionTemplate;
+
+import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScripts;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+import domainapp.application.fixture.scenarios.DomainAppDemo;
+import domainapp.application.integtests.ApplicationIntegTestAbstract;
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+import domainapp.modules.simple.fixture.SimpleObject_persona;
+import io.cucumber.java.After;
+import io.cucumber.java.Before;
+import io.cucumber.java.en.Given;
+import io.cucumber.java.en.When;
+import lombok.val;
+
+public class SimpleObjectsStepDef extends ApplicationIntegTestAbstract {
+
+    @Given("^there are.* (\\d+) simple objects$")
+    public void there_are_N_simple_objects(int n) throws Throwable {
+        final List<SimpleObject> list = wrap(simpleObjects).listAll();
+        assertThat(list.size(), is(n));
+    }
+
+    @When("^.*create a .*simple object$")
+    public void create_a_simple_object() throws Throwable {
+        wrap(simpleObjects).create(UUID.randomUUID().toString());
+    }
+
+    // -- TRANSACTION ASPECT
+
+    private Runnable afterScenario;
+
+    @Before //TODO is there another way to make scenarios transactional?
+    public void beforeScenario(){
+        val txTemplate = new TransactionTemplate(txMan);
+        val status = txTemplate.getTransactionManager().getTransaction(null);
+        afterScenario = () -> {
+            txTemplate.getTransactionManager().rollback(status);
+        };
+
+		fixtureScripts.runPersonas(
+		        SimpleObject_persona.BANG, 
+		        SimpleObject_persona.BAR, 
+		        SimpleObject_persona.BAZ);
+
+        status.flush();
+    } 
+
+    @After
+    public void afterScenario(){
+        if(afterScenario==null) {
+            return;
+        }
+        afterScenario.run();
+        afterScenario = null;
+    }
+
+
+    // -- DEPENDENCIES
+
+    @Inject protected SimpleObjects simpleObjects;
+    @Inject private FixtureScripts fixtureScripts; 
+    @Inject private PlatformTransactionManager txMan;
+
+    @Before(value="@DomainAppDemo", order=20000)
+    public void runDomainAppDemo() {
+        fixtureScripts.runFixtureScript(new DomainAppDemo(), null); // <1>
+    }
+
+}
diff --git a/application/src/test/java/domainapp/application/bdd/specs/SimpleObjectSpec_listAllAndCreate.feature b/application/src/test/java/domainapp/application/bdd/specs/SimpleObjectSpec_listAllAndCreate.feature
new file mode 100644
index 0000000..1fb0c83
--- /dev/null
+++ b/application/src/test/java/domainapp/application/bdd/specs/SimpleObjectSpec_listAllAndCreate.feature
@@ -0,0 +1,24 @@
+#
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You under the Apache License, Version 2.0
+#  (the "License"); you may not use this file except in compliance with
+#  the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#
+Feature: List and Create New Simple Objects
+
+  Scenario: Existing simple objects can be listed and new ones created
+    Given there are initially 3 simple objects
+    When  I create a new simple object
+    Then  there are 4 simple objects
+
+    
\ No newline at end of file
diff --git a/application/src/test/java/domainapp/application/integtests/ApplicationIntegTestAbstract.java b/application/src/test/java/domainapp/application/integtests/ApplicationIntegTestAbstract.java
new file mode 100644
index 0000000..b059ff0
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/ApplicationIntegTestAbstract.java
@@ -0,0 +1,57 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.application.integtests;
+
+import domainapp.application.ApplicationModule;
+
+import org.apache.isis.config.IsisPresets;
+import org.apache.isis.extensions.fixtures.IsisExtFixturesModule;
+import org.apache.isis.integtestsupport.IsisIntegrationTestAbstract;
+import org.apache.isis.jdo.IsisBootDataNucleus;
+import org.apache.isis.runtime.spring.IsisBoot;
+import org.apache.isis.security.bypass.IsisBootSecurityBypass;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.context.annotation.PropertySources;
+import org.springframework.test.context.ContextConfiguration;
+
+@SpringBootTest(classes = ApplicationIntegTestAbstract.AppManifest.class)
+@ContextConfiguration
+public abstract class ApplicationIntegTestAbstract extends IsisIntegrationTestAbstract {
+
+    @Configuration
+    @PropertySources({
+            @PropertySource(IsisPresets.Log4j2Test),
+            @PropertySource(IsisPresets.H2InMemory_withUniqueSchema),
+            @PropertySource(IsisPresets.NoTranslations),
+            @PropertySource(IsisPresets.DataNucleusAutoCreate),
+    })
+    @Import({
+            IsisBoot.class,
+            IsisBootDataNucleus.class,
+            IsisBootSecurityBypass.class,
+            IsisExtFixturesModule.class,
+            ApplicationModule.class
+    })
+    public static class AppManifest {
+    }
+
+}
diff --git a/application/src/test/java/domainapp/application/integtests/mml/DomainModel_IntegTest.java b/application/src/test/java/domainapp/application/integtests/mml/DomainModel_IntegTest.java
new file mode 100644
index 0000000..04c1dfa
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/DomainModel_IntegTest.java
@@ -0,0 +1,41 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.application.integtests.mml;
+
+import javax.inject.Inject;
+
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import org.apache.isis.integtestsupport.validate.ValidateDomainModel;
+import org.apache.isis.metamodel.specloader.SpecificationLoader;
+
+import domainapp.application.integtests.ApplicationIntegTestAbstract;
+
+class DomainModel_IntegTest extends ApplicationIntegTestAbstract {
+    
+    @Inject protected SpecificationLoader specificationLoader;
+
+    @Test @Disabled("with full introspection in place this test actually throws")
+    void validateDomainModel() {
+        new ValidateDomainModel(specificationLoader).run();
+    }
+
+
+}
\ No newline at end of file
diff --git a/application/src/test/java/domainapp/application/integtests/mml/MetaModelService_IntegTest.java b/application/src/test/java/domainapp/application/integtests/mml/MetaModelService_IntegTest.java
new file mode 100644
index 0000000..4fc7d4d
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/MetaModelService_IntegTest.java
@@ -0,0 +1,145 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.application.integtests.mml;
+
+import java.io.File;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.approvaltests.namer.StackTraceNamer;
+import org.approvaltests.reporters.DiffReporter;
+import org.approvaltests.reporters.QuietReporter;
+import org.approvaltests.reporters.UseReporter;
+import org.approvaltests.writers.ApprovalTextWriter;
+import org.junit.jupiter.api.Test;
+
+import org.apache.isis.applib.services.jaxb.JaxbService;
+import org.apache.isis.applib.services.metamodel.MetaModelService;
+import org.apache.isis.schema.metamodel.v1.DomainClassDto;
+import org.apache.isis.schema.metamodel.v1.MetamodelDto;
+
+import static org.approvaltests.Approvals.getReporter;
+import static org.approvaltests.Approvals.verify;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assume.assumeThat;
+
+import domainapp.application.integtests.ApplicationIntegTestAbstract;
+
+class MetaModelService_IntegTest extends ApplicationIntegTestAbstract {
+
+    @Inject MetaModelService metaModelService;
+    @Inject JaxbService jaxbService;
+
+    //
+    // learn...
+    //
+    // ... move the resultant files in "received" directory over to "approved".
+    //
+    @UseReporter(QuietReporter.class)
+    @Test
+    void _1_learn() throws Exception {
+
+        assumeThat(System.getProperty("lockdown.learn"), is(notNullValue()));
+
+        // when
+        MetamodelDto metamodelDto =
+                metaModelService.exportMetaModel(
+                        new MetaModelService.Config()
+                        .withIgnoreNoop()
+                        .withIgnoreAbstractClasses()
+                        .withIgnoreBuiltInValueTypes()
+                        .withIgnoreInterfaces()
+                        .withPackagePrefix("domainapp")
+                        );
+
+        // then
+        final List<DomainClassDto> domainClassDto = metamodelDto.getDomainClassDto();
+        for (final DomainClassDto domainClass : domainClassDto) {
+            try {
+                verifyClass(domainClass);
+            } catch (Error e) {
+                //ignore ... learning.
+            }
+        }
+    }
+
+
+    //
+    // verify ...
+    //
+    // ... ie compare the current metamodel to that previously captured.
+    //
+    @UseReporter(DiffReporter.class)
+    @Test
+    void _2_verify() throws Exception {
+
+        assumeThat(System.getProperty("lockdown.verify"), is(notNullValue()));
+
+        // when
+        MetamodelDto metamodelDto =
+                metaModelService.exportMetaModel(
+                        new MetaModelService.Config()
+                        .withIgnoreNoop()
+                        .withIgnoreAbstractClasses()
+                        .withIgnoreBuiltInValueTypes()
+                        .withIgnoreInterfaces()
+                        .withPackagePrefix("domainapp")
+                        );
+
+        // then
+        final List<DomainClassDto> domainClassDto = metamodelDto.getDomainClassDto();
+        for (final DomainClassDto domainClass : domainClassDto) {
+            verifyClass(domainClass);
+        }
+    }
+
+    private void verifyClass(final DomainClassDto domainClass) {
+        String asXml = jaxbService.toXml(domainClass);
+        verify(new ApprovalTextWriter(asXml, "xml"){
+            @Override public String writeReceivedFile(final String received) {
+                return super.writeReceivedFile(received);
+            }
+
+            @Override public String getReceivedFilename(final String base) {
+                return toFilename("received", base);
+            }
+
+            @Override public String getApprovalFilename(final String base) {
+                return toFilename("approved", base);
+            }
+
+            private String toFilename(final String prefix, final String base) {
+                final File file = new File(base);
+                final File parentFile = file.getParentFile();
+                final String localName = file.getName();
+                final File newDir = new File(parentFile, prefix);
+                final File newFile = new File(newDir, localName + ".xml");
+                return newFile.toString();
+            }
+
+        }, new StackTraceNamer() {
+            @Override public String getApprovalName() {
+                return domainClass.getId();
+            }
+        }, getReporter());
+    }
+
+}
\ No newline at end of file
diff --git a/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.DomainAppFixtureScriptsSpecificationProvider.xml b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.DomainAppFixtureScriptsSpecificationProvider.xml
new file mode 100644
index 0000000..84cfa08
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.DomainAppFixtureScriptsSpecificationProvider.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<mml:domainClassDto id="domainapp.application.fixture.DomainAppFixtureScriptsSpecificationProvider" service="true" xmlns:mml="http://isis.apache.org/schema/metamodel">
+    <mml:facets>
+        <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+            <mml:attr name="disabling">true</mml:attr>
+            <mml:attr name="hiding">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.named.NamedFacetInferred">
+            <mml:attr name="escaped">true</mml:attr>
+            <mml:attr name="value">Domain App Fixture Scripts Specification Provider</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.domainservice.DomainServiceFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservice.annotation.DomainServiceFacetAnnotation">
+            <mml:attr name="natureOfService">DOMAIN</mml:attr>
+            <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
+            <mml:attr name="menuBar">PRIMARY</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.metamodel.facets.object.grid.GridFacetDefault"/>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservice.annotation.IconFacetDerivedFromDomainServiceAnnotation">
+            <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.layout.LayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.layout.LayoutFacetFallback">
+            <mml:attr name="derived">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromIoCNamingStrategy">
+            <mml:attr name="value">domainAppFixtureScriptsSpecificationProvider</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+            <mml:attr name="validating">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.metamodel.facets.fallback.PagedFacetFromConfiguration">
+            <mml:attr name="derived">true</mml:attr>
+            <mml:attr name="value">25</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+            <mml:attr name="derived">true</mml:attr>
+            <mml:attr name="value">Domain App Fixture Scripts Specification Providers</mml:attr>
+        </mml:facet>
+    </mml:facets>
+</mml:domainClassDto>
diff --git a/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.health.HealthCheckServiceImpl.xml b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.health.HealthCheckServiceImpl.xml
new file mode 100644
index 0000000..ec21c6c
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.health.HealthCheckServiceImpl.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<mml:domainClassDto id="domainapp.application.services.health.HealthCheckServiceImpl" service="true" xmlns:mml="http://isis.apache.org/schema/metamodel">
+    <mml:facets>
+        <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+            <mml:attr name="disabling">true</mml:attr>
+            <mml:attr name="hiding">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.named.NamedFacetInferred">
+            <mml:attr name="escaped">true</mml:attr>
+            <mml:attr name="value">Health Check Service Impl</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.domainservice.DomainServiceFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservice.annotation.DomainServiceFacetAnnotation">
+            <mml:attr name="natureOfService">DOMAIN</mml:attr>
+            <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
+            <mml:attr name="menuBar">PRIMARY</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.metamodel.facets.object.grid.GridFacetDefault"/>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservice.annotation.IconFacetDerivedFromDomainServiceAnnotation">
+            <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.layout.LayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.layout.LayoutFacetFallback">
+            <mml:attr name="derived">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromIoCNamingStrategy">
+            <mml:attr name="value">healthCheckServiceImpl</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+            <mml:attr name="validating">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.metamodel.facets.fallback.PagedFacetFromConfiguration">
+            <mml:attr name="derived">true</mml:attr>
+            <mml:attr name="value">25</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+            <mml:attr name="derived">true</mml:attr>
+            <mml:attr name="value">Health Check Service Impls</mml:attr>
+        </mml:facet>
+    </mml:facets>
+</mml:domainClassDto>
diff --git a/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageViewModel.xml b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageViewModel.xml
new file mode 100644
index 0000000..867f66a
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageViewModel.xml
@@ -0,0 +1,617 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<mml:domainClassDto id="domainapp.application.services.homepage.HomePageViewModel" xmlns:mml="http://isis.apache.org/schema/metamodel">
+    <mml:facets>
+        <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+            <mml:attr name="disabling">true</mml:attr>
+            <mml:attr name="hiding">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.named.NamedFacetInferred">
+            <mml:attr name="escaped">true</mml:attr>
+            <mml:attr name="value">Home Page View Model</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
+            <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectCreatedEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.LoadedLifecycleEventFacetForDomainObjectAnnotation">
+            <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectLoadedEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.PersistedLifecycleEventFacetForDomainObjectAnnotation">
+            <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectPersistedEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.PersistingLifecycleEventFacetForDomainObjectAnnotation">
+            <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectPersistingEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.RemovingLifecycleEventFacetForDomainObjectAnnotation">
+            <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectRemovingEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacetForDomainObjectAnnotation">
+            <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation">
+            <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.metamodel.facets.object.grid.GridFacetDefault"/>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.layout.LayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.layout.LayoutFacetFallback">
+            <mml:attr name="derived">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForDomainObjectAnnotation">
+            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName</mml:attr>
+            <mml:attr name="value">domainapp.application.services.homepage.HomePageViewModel</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+            <mml:attr name="validating">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.metamodel.facets.fallback.PagedFacetFromConfiguration">
+            <mml:attr name="derived">true</mml:attr>
+            <mml:attr name="value">25</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+            <mml:attr name="derived">true</mml:attr>
+            <mml:attr name="value">Home Page View Models</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.isis.metamodel.facets.object.title.methods.TitleFacetViaTitleMethod">
+            <mml:attr name="intent.title">UI_HINT</mml:attr>
+            <mml:attr name="methods">public org.apache.isis.applib.services.i18n.TranslatableString domainapp.application.services.homepage.HomePageViewModel.title()</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.viewmodel.ViewModelFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobject.recreatable.RecreatableObjectFacetForDomainObjectAnnotation">
+            <mml:attr name="recreationMechanism">INITIALIZES</mml:attr>
+        </mml:facet>
+    </mml:facets>
+    <mml:properties>
+        <mml:prop id="objectIdentifier">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.prop">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier.prop()</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier</mml:attr>
+                    <mml:attr name="returnType">java.lang.String</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel#objectIdentifier()</mml:attr>
+                    <mml:attr name="originalText">Object Identifier</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.members.disabled.DisabledFacetForContributee">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="inverted">false</mml:attr>
+                    <mml:attr name="reason">Contributed property</mml:attr>
+                    <mml:attr name="semantics">DISABLED</mml:attr>
+                    <mml:attr name="where">ANYWHERE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.hidden.HiddenFacetAbstract" fqcn="org.apache.isis.metamodel.facets.actions.layout.HiddenFacetForActionLayoutAnnotation">
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="where">ALL_TABLES</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">700.2</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacetForPropertyAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.String</mml:type>
+        </mml:prop>
+        <mml:prop id="objectType">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.mixins.metamodel.Object_objectType.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.applib.mixins.metamodel.Object_objectType.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.prop">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.metamodel.Object_objectType.prop()</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.applib.mixins.metamodel.Object_objectType</mml:attr>
+                    <mml:attr name="returnType">java.lang.String</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel#objectType()</mml:attr>
+                    <mml:attr name="originalText">Object Type</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.members.disabled.DisabledFacetForContributee">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="inverted">false</mml:attr>
+                    <mml:attr name="reason">Contributed property</mml:attr>
+                    <mml:attr name="semantics">DISABLED</mml:attr>
+                    <mml:attr name="where">ANYWHERE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.hidden.HiddenFacetAbstract" fqcn="org.apache.isis.metamodel.facets.actions.layout.HiddenFacetForActionLayoutAnnotation">
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="where">ALL_TABLES</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">700.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacetForPropertyAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.String</mml:type>
+        </mml:prop>
+    </mml:properties>
+    <mml:collections>
+        <mml:coll id="objects">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacet" fqcn="org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics">
+                    <mml:attr name="value">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel#objects</mml:attr>
+                    <mml:attr name="originalText">Objects</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.modify.CollectionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.collections.collection.modify.CollectionDomainEventFacetDefault">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.collections.collection.modify.CollectionDomainEventFacetDefault</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.CollectionDomainEvent.Default</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.modify.CollectionAddToFacet" fqcn="org.apache.isis.metamodel.facets.collections.collection.modify.CollectionAddToFacetForDomainEventFromDefault">
+                    <mml:attr name="collectionAddToFacet">org.apache.isis.metamodel.facets.collections.modify.CollectionAddToFacetViaAccessor</mml:attr>
+                    <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.collections.accessor.CollectionAccessorFacetViaAccessor</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.collections.modify.CollectionAddToFacetViaAccessor</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.CollectionDomainEvent.Default</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.modify.CollectionClearFacet" fqcn="org.apache.isis.metamodel.facets.collections.clear.CollectionClearFacetViaAccessor">
+                    <mml:attr name="intent.getObjects">ACCESSOR</mml:attr>
+                    <mml:attr name="methods">public java.util.List&lt;domainapp.modules.simple.dom.impl.SimpleObject&gt; domainapp.application.services.homepage.HomePageViewModel.getObjects()</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.modify.CollectionRemoveFromFacet" fqcn="org.apache.isis.metamodel.facets.collections.collection.modify.CollectionRemoveFromFacetForDomainEventFromDefault">
+                    <mml:attr name="collectionRemoveFromFacet">org.apache.isis.metamodel.facets.collections.modify.CollectionRemoveFromFacetViaAccessor</mml:attr>
+                    <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.collections.accessor.CollectionAccessorFacetViaAccessor</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.collections.modify.CollectionRemoveFromFacetViaAccessor</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.CollectionDomainEvent.Default</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collparam.semantics.CollectionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.collparam.semantics.CollectionSemanticsFacetDefault">
+                    <mml:attr name="value">LIST_INTERFACE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.metamodel.facets.fallback.PagedFacetFromConfiguration">
+                    <mml:attr name="derived">true</mml:attr>
+                    <mml:attr name="value">12</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.recreatable.DisabledFacetOnCollectionDerivedFromRecreatableObject" fqcn="org.apache.isis.metamodel.facets.object.recreatable.DisabledFacetOnCollectionDerivedFromRecreatableObject">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="inverted">false</mml:attr>
+                    <mml:attr name="semantics">DISABLED</mml:attr>
+                    <mml:attr name="where">ANYWHERE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet" fqcn="org.apache.isis.metamodel.facets.collections.accessor.CollectionAccessorFacetViaAccessor">
+                    <mml:attr name="intent.getObjects">ACCESSOR</mml:attr>
+                    <mml:attr name="methods">public java.util.List&lt;domainapp.modules.simple.dom.impl.SimpleObject&gt; domainapp.application.services.homepage.HomePageViewModel.getObjects()</mml:attr>
+                    <mml:attr name="onType">domainapp.application.services.homepage.HomePageViewModel</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:type>domainapp.modules.simple.dom.impl.SimpleObject</mml:type>
+        </mml:coll>
+    </mml:collections>
+    <mml:actions>
+        <mml:act id="downloadLayoutXml">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.act">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.lang.Object org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml</mml:attr>
+                    <mml:attr name="returnType">java.lang.Object</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+                    <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel#downloadLayoutXml()</mml:attr>
+                    <mml:attr name="originalText">Download Layout Xml</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">LEFT</mml:attr>
+                    <mml:attr name="value">fa fa-fw fa-download</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">700.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>java.lang.Object</mml:returnType>
+            <mml:params>
+                <mml:param xsi:type="mml:scalarParam" id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+                    <mml:facets>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.DescribedAsFacetTranslated">
+                            <mml:attr name="context">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+                            <mml:attr name="originalText">File name extension can be omitted.</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.DescribedAsFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+                            <mml:attr name="originalText">File name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                            <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                            <mml:attr name="inverted">false</mml:attr>
+                            <mml:attr name="semantics">REQUIRED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                            <mml:attr name="intent.default0Act">DEFAULTS</mml:attr>
+                            <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.default0Act()</mml:attr>
+                        </mml:facet>
+                    </mml:facets>
+                    <mml:type>java.lang.String</mml:type>
+                </mml:param>
+                <mml:param xsi:type="mml:scalarParam" id="style" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+                    <mml:facets>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+                            <mml:attr name="originalText">Style</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.name.NamedFacetForParameterUsingReflection</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                            <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                            <mml:attr name="inverted">false</mml:attr>
+                            <mml:attr name="semantics">REQUIRED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                            <mml:attr name="intent.default1Act">DEFAULTS</mml:attr>
+                            <mml:attr name="methods">public org.apache.isis.applib.services.layout.LayoutService$Style org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.default1Act()</mml:attr>
+                        </mml:facet>
+                    </mml:facets>
+                    <mml:type>org.apache.isis.applib.services.layout.LayoutService$Style</mml:type>
+                </mml:param>
+            </mml:params>
+        </mml:act>
+        <mml:act id="downloadMetaModelXml">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.act">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.lang.Object org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.act(java.lang.String)</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml</mml:attr>
+                    <mml:attr name="returnType">java.lang.Object</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+                    <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel#downloadMetaModelXml()</mml:attr>
+                    <mml:attr name="originalText">Download Meta Model Xml</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">LEFT</mml:attr>
+                    <mml:attr name="value">fa fa-fw fa-download</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">700.2</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>java.lang.Object</mml:returnType>
+            <mml:params>
+                <mml:param xsi:type="mml:scalarParam" id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+                    <mml:facets>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.DescribedAsFacetTranslated">
+                            <mml:attr name="context">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml#act(java.lang.String)</mml:attr>
+                            <mml:attr name="originalText">File name extension can be omitted.</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.DescribedAsFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml#act(java.lang.String)</mml:attr>
+                            <mml:attr name="originalText">File name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                            <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                            <mml:attr name="inverted">false</mml:attr>
+                            <mml:attr name="semantics">REQUIRED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                            <mml:attr name="intent.default0Act">DEFAULTS</mml:attr>
+                            <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.default0Act()</mml:attr>
+                        </mml:facet>
+                    </mml:facets>
+                    <mml:type>java.lang.String</mml:type>
+                </mml:param>
+            </mml:params>
+        </mml:act>
+        <mml:act id="openRestApi">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.mixins.layout.Object_openRestApi.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.applib.mixins.layout.Object_openRestApi.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.act">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public org.apache.isis.applib.value.LocalResourcePath org.apache.isis.applib.mixins.layout.Object_openRestApi.act()</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.applib.mixins.layout.Object_openRestApi</mml:attr>
+                    <mml:attr name="returnType">org.apache.isis.applib.value.LocalResourcePath</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+                    <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel#openRestApi()</mml:attr>
+                    <mml:attr name="originalText">Open Rest Api</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">LEFT</mml:attr>
+                    <mml:attr name="value">fa fa-fw fa-external-link</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">750.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>org.apache.isis.applib.value.LocalResourcePath</mml:returnType>
+            <mml:params/>
+        </mml:act>
+        <mml:act id="rebuildMetamodel">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.act">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.lang.Object org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel.act()</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel</mml:attr>
+                    <mml:attr name="returnType">java.lang.Object</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+                    <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">IDEMPOTENT</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel#rebuildMetamodel()</mml:attr>
+                    <mml:attr name="originalText">Rebuild Metamodel</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">LEFT</mml:attr>
+                    <mml:attr name="value">fa fa-fw fa-refresh</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">800.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>java.lang.Object</mml:returnType>
+            <mml:params/>
+        </mml:act>
+    </mml:actions>
+</mml:domainClassDto>
diff --git a/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObject.xml b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObject.xml
new file mode 100644
index 0000000..b664f8d
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObject.xml
@@ -0,0 +1,1182 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<mml:domainClassDto id="domainapp.modules.simple.dom.impl.SimpleObject" xmlns:mml="http://isis.apache.org/schema/metamodel">
+    <mml:facets>
+        <mml:facet id="org.apache.isis.jdo.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityFacet" fqcn="org.apache.isis.jdo.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityFacetAnnotation">
+            <mml:attr name="strategy">IDENTITY</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet" fqcn="org.apache.isis.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacetAnnotation">
+            <mml:attr name="identityType">DATASTORE</mml:attr>
+            <mml:attr name="schema">simple</mml:attr>
+            <mml:attr name="table">SimpleObject</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.jdo.metamodel.facets.object.version.JdoVersionFacet" fqcn="org.apache.isis.jdo.metamodel.facets.object.version.JdoVersionFacetFromAnnotation"/>
+        <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+            <mml:attr name="disabling">true</mml:attr>
+            <mml:attr name="hiding">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.named.NamedFacetInferred">
+            <mml:attr name="escaped">true</mml:attr>
+            <mml:attr name="value">Simple Object</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.jaxb.XmlJavaTypeAdapterFacet" fqcn="org.apache.isis.metamodel.facets.jaxb.XmlJavaTypeAdapterFacetDefault">
+            <mml:attr name="value">org.apache.isis.schema.utils.jaxbadapters.PersistentEntityAdapter</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.members.cssclass.CssClassFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobjectlayout.CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent">
+            <mml:attr name="cssClassUiEventClass">org.apache.isis.applib.events.ui.CssClassUiEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.audit.AuditableFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobject.auditing.AuditableFacetForDomainObjectAnnotation">
+            <mml:attr name="enablement">ENABLED</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobjectlayout.BookmarkPolicyFacetForDomainObjectLayoutAnnotation">
+            <mml:attr name="bookmarkPolicy">NOT_SPECIFIED</mml:attr>
+            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
+            <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectCreatedEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.LoadedLifecycleEventFacetForDomainObjectAnnotation">
+            <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectLoadedEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.PersistedLifecycleEventFacetForDomainObjectAnnotation">
+            <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectPersistedEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.PersistingLifecycleEventFacetForDomainObjectAnnotation">
+            <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectPersistingEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.RemovingLifecycleEventFacetForDomainObjectAnnotation">
+            <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectRemovingEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacetForDomainObjectAnnotation">
+            <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectUpdatedEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet" fqcn="org.apache.isis.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation">
+            <mml:attr name="value">org.apache.isis.applib.events.lifecycle.ObjectUpdatingEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.metamodel.facets.object.grid.GridFacetDefault"/>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobjectlayout.IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent">
+            <mml:attr name="iconUiEventClass">org.apache.isis.applib.events.ui.IconUiEvent.Default</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.layout.LayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobjectlayout.LayoutFacetViaDomainObjectLayoutAnnotationUsingLayoutUiEvent">
+            <mml:attr name="layoutUiEventClass">org.apache.isis.applib.events.ui.LayoutUiEvent.Default</mml:attr>
+            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.object.layout.LayoutFacetFallback</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.jdo.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForJdoPersistenceCapableAnnotation">
+            <mml:attr name="value">simple.SimpleObject</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+            <mml:attr name="validating">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.metamodel.facets.fallback.PagedFacetFromConfiguration">
+            <mml:attr name="derived">true</mml:attr>
+            <mml:attr name="value">25</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobjectlayout.PluralFacetForDomainObjectLayoutAnnotation"/>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.isis.metamodel.facets.object.domainobjectlayout.TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent">
+            <mml:attr name="titleUiEventClass">org.apache.isis.applib.events.ui.TitleUiEvent.Default</mml:attr>
+            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.object.title.methods.TitleFacetViaTitleMethod</mml:attr>
+        </mml:facet>
+    </mml:facets>
+    <mml:properties>
+        <mml:prop id="datanucleusIdLong">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusIdLong.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusIdLong.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.prop">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.lang.Long org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusIdLong.prop()</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusIdLong</mml:attr>
+                    <mml:attr name="returnType">java.lang.Long</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#datanucleusIdLong()</mml:attr>
+                    <mml:attr name="originalText">Id</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.members.disabled.DisabledFacetForContributee">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="inverted">false</mml:attr>
+                    <mml:attr name="reason">Contributed property</mml:attr>
+                    <mml:attr name="semantics">DISABLED</mml:attr>
+                    <mml:attr name="where">ANYWHERE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.hidden.method.HideForContextFacet" fqcn="org.apache.isis.metamodel.facets.members.hidden.method.HideForContextFacetViaMethod">
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="intent.hideProp">CHECK_IF_HIDDEN</mml:attr>
+                    <mml:attr name="methods">public boolean org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusIdLong.hideProp()</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">800.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation" fqcn="org.apache.isis.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation">
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="where">ALL_TABLES</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.Long</mml:type>
+        </mml:prop>
+        <mml:prop id="datanucleusVersionLong">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionLong.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionLong.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.prop">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.lang.Long org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionLong.prop()</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionLong</mml:attr>
+                    <mml:attr name="returnType">java.lang.Long</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#datanucleusVersionLong()</mml:attr>
+                    <mml:attr name="originalText">Version</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.members.disabled.DisabledFacetForContributee">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="inverted">false</mml:attr>
+                    <mml:attr name="reason">Contributed property</mml:attr>
+                    <mml:attr name="semantics">DISABLED</mml:attr>
+                    <mml:attr name="where">ANYWHERE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.hidden.method.HideForContextFacet" fqcn="org.apache.isis.metamodel.facets.members.hidden.method.HideForContextFacetViaMethod">
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="intent.hideProp">CHECK_IF_HIDDEN</mml:attr>
+                    <mml:attr name="methods">public boolean org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionLong.hideProp()</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">800.2</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation" fqcn="org.apache.isis.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation">
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="where">ALL_TABLES</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.Long</mml:type>
+        </mml:prop>
+        <mml:prop id="datanucleusVersionTimestamp">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionTimestamp.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionTimestamp.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.prop">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.sql.Timestamp org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionTimestamp.prop()</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionTimestamp</mml:attr>
+                    <mml:attr name="returnType">java.sql.Timestamp</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#datanucleusVersionTimestamp()</mml:attr>
+                    <mml:attr name="originalText">Version</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.members.disabled.DisabledFacetForContributee">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="inverted">false</mml:attr>
+                    <mml:attr name="reason">Contributed property</mml:attr>
+                    <mml:attr name="semantics">DISABLED</mml:attr>
+                    <mml:attr name="where">ANYWHERE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.hidden.method.HideForContextFacet" fqcn="org.apache.isis.metamodel.facets.members.hidden.method.HideForContextFacetViaMethod">
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="intent.hideProp">CHECK_IF_HIDDEN</mml:attr>
+                    <mml:attr name="methods">public boolean org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionTimestamp.hideProp()</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">800.2</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation" fqcn="org.apache.isis.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation">
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="where">ALL_TABLES</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:type>java.sql.Timestamp</mml:type>
+        </mml:prop>
+        <mml:prop id="name">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#name</mml:attr>
+                    <mml:attr name="originalText">Name</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.disabled.DisabledFacetForPropertyAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="inverted">false</mml:attr>
+                    <mml:attr name="semantics">DISABLED</mml:attr>
+                    <mml:attr name="where">EVERYWHERE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                    <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                    <mml:attr name="inverted">false</mml:attr>
+                    <mml:attr name="semantics">REQUIRED</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.jdo.metamodel.facets.prop.column.MandatoryFacetDerivedFromJdoColumn</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.maxlength.MaxLengthFacetForPropertyAnnotation">
+                    <mml:attr name="underlyingFacet">org.apache.isis.jdo.metamodel.facets.prop.column.MaxLengthFacetDerivedFromJdoColumn</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">40</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mustsatisfyspec.MustSatisfySpecificationFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.mustsatisfy.MustSatisfySpecificationFacetForPropertyAnnotation">
+                    <mml:attr name="specifications">domainapp.modules.simple.dom.types.Name$NoExclamationMarks</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.metamodel.facets.properties.typicallen.fromtype.TypicalLengthFacetOnPropertyDerivedFromType">
+                    <mml:attr name="derived">true</mml:attr>
+                    <mml:attr name="typicalLengthFacet">org.apache.isis.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet" fqcn="org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor">
+                    <mml:attr name="intent.getName">ACCESSOR</mml:attr>
+                    <mml:attr name="methods">public java.lang.String domainapp.modules.simple.dom.impl.SimpleObject.getName()</mml:attr>
+                    <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet" fqcn="org.apache.isis.metamodel.facets.properties.defaults.fromtype.PropertyDefaultFacetDerivedFromDefaultedFacet">
+                    <mml:attr name="typeFacet">org.apache.isis.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacetDefault">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyClearFacetForDomainEventFromDefault">
+                    <mml:attr name="clearFacet">org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod</mml:attr>
+                    <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.update.init.PropertyInitializationFacet" fqcn="org.apache.isis.metamodel.facets.properties.update.init.PropertyInitializationFacetViaSetterMethod">
+                    <mml:attr name="intent.setName">MODIFY_PROPERTY</mml:attr>
+                    <mml:attr name="methods">public void domainapp.modules.simple.dom.impl.SimpleObject.setName(java.lang.String)</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertySetterFacetForDomainEventFromDefault">
+                    <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+                    <mml:attr name="setterFacet">org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.validating.PropertyValidateFacet" fqcn="org.apache.isis.metamodel.facets.properties.validating.dflt.PropertyValidateFacetDefault">
+                    <mml:attr name="validating">true</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.String</mml:type>
+        </mml:prop>
+        <mml:prop id="notes">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#notes</mml:attr>
+                    <mml:attr name="originalText">Notes</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.disabled.DisabledFacetForPropertyAnnotationInvertedSemantics">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="inverted">true</mml:attr>
+                    <mml:attr name="semantics">ENABLED</mml:attr>
+                    <mml:attr name="where">EVERYWHERE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                    <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                    <mml:attr name="inverted">false</mml:attr>
+                    <mml:attr name="semantics">REQUIRED</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.jdo.metamodel.facets.prop.column.MandatoryFacetDerivedFromJdoColumn</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.maxlength.MaxLengthFacetForPropertyAnnotation">
+                    <mml:attr name="underlyingFacet">org.apache.isis.jdo.metamodel.facets.prop.column.MaxLengthFacetDerivedFromJdoColumn</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">4000</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.metamodel.facets.properties.typicallen.fromtype.TypicalLengthFacetOnPropertyDerivedFromType">
+                    <mml:attr name="derived">true</mml:attr>
+                    <mml:attr name="typicalLengthFacet">org.apache.isis.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet" fqcn="org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor">
+                    <mml:attr name="intent.getNotes">ACCESSOR</mml:attr>
+                    <mml:attr name="methods">public java.lang.String domainapp.modules.simple.dom.impl.SimpleObject.getNotes()</mml:attr>
+                    <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.defaults.PropertyDefaultFacet" fqcn="org.apache.isis.metamodel.facets.properties.defaults.fromtype.PropertyDefaultFacetDerivedFromDefaultedFacet">
+                    <mml:attr name="typeFacet">org.apache.isis.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacetDefault">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyClearFacetForDomainEventFromDefault">
+                    <mml:attr name="clearFacet">org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod</mml:attr>
+                    <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.update.init.PropertyInitializationFacet" fqcn="org.apache.isis.metamodel.facets.properties.update.init.PropertyInitializationFacetViaSetterMethod">
+                    <mml:attr name="intent.setNotes">MODIFY_PROPERTY</mml:attr>
+                    <mml:attr name="methods">public void domainapp.modules.simple.dom.impl.SimpleObject.setNotes(java.lang.String)</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertySetterFacetForDomainEventFromDefault">
+                    <mml:attr name="getterFacet">org.apache.isis.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+                    <mml:attr name="setterFacet">org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.validating.PropertyValidateFacet" fqcn="org.apache.isis.metamodel.facets.properties.validating.dflt.PropertyValidateFacetDefault">
+                    <mml:attr name="validating">true</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.String</mml:type>
+        </mml:prop>
+        <mml:prop id="objectIdentifier">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.prop">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier.prop()</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.applib.mixins.metamodel.Object_objectIdentifier</mml:attr>
+                    <mml:attr name="returnType">java.lang.String</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#objectIdentifier()</mml:attr>
+                    <mml:attr name="originalText">Object Identifier</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.members.disabled.DisabledFacetForContributee">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="inverted">false</mml:attr>
+                    <mml:attr name="reason">Contributed property</mml:attr>
+                    <mml:attr name="semantics">DISABLED</mml:attr>
+                    <mml:attr name="where">ANYWHERE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.hidden.HiddenFacetAbstract" fqcn="org.apache.isis.metamodel.facets.actions.layout.HiddenFacetForActionLayoutAnnotation">
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="where">ALL_TABLES</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">700.2</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacetForPropertyAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.String</mml:type>
+        </mml:prop>
+        <mml:prop id="objectType">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.mixins.metamodel.Object_objectType.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.applib.mixins.metamodel.Object_objectType.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.prop">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.metamodel.Object_objectType.prop()</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.applib.mixins.metamodel.Object_objectType</mml:attr>
+                    <mml:attr name="returnType">java.lang.String</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#objectType()</mml:attr>
+                    <mml:attr name="originalText">Object Type</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.metamodel.facets.members.disabled.DisabledFacetForContributee">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="inverted">false</mml:attr>
+                    <mml:attr name="reason">Contributed property</mml:attr>
+                    <mml:attr name="semantics">DISABLED</mml:attr>
+                    <mml:attr name="where">ANYWHERE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.hidden.HiddenFacetAbstract" fqcn="org.apache.isis.metamodel.facets.actions.layout.HiddenFacetForActionLayoutAnnotation">
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="where">ALL_TABLES</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">700.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.properties.property.modify.PropertyDomainEventFacetForPropertyAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.PropertyDomainEvent.Default</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:type>java.lang.String</mml:type>
+        </mml:prop>
+    </mml:properties>
+    <mml:collections/>
+    <mml:actions>
+        <mml:act id="delete">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+                    <mml:attr name="eventType">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+                    <mml:attr name="intent.delete">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public void domainapp.modules.simple.dom.impl.SimpleObject.delete()</mml:attr>
+                    <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+                    <mml:attr name="returnType">void</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacetFallback">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">NON_IDEMPOTENT_ARE_YOU_SURE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#delete()</mml:attr>
+                    <mml:attr name="originalText">Delete</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>void</mml:returnType>
+            <mml:params/>
+        </mml:act>
+        <mml:act id="downloadJdoMetadata">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.jdo.jdosupport.mixins.Persistable_downloadJdoMetadata.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.jdo.jdosupport.mixins.Persistable_downloadJdoMetadata.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.act">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public org.apache.isis.applib.value.Clob org.apache.isis.jdo.jdosupport.mixins.Persistable_downloadJdoMetadata.act(java.lang.String) throws javax.xml.bind.JAXBException,java.io.IOException</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.jdo.jdosupport.mixins.Persistable_downloadJdoMetadata</mml:attr>
+                    <mml:attr name="returnType">org.apache.isis.applib.value.Clob</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+                    <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#downloadJdoMetadata()</mml:attr>
+                    <mml:attr name="originalText">Download Jdo Metadata</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">LEFT</mml:attr>
+                    <mml:attr name="value">fa fa-fw fa-download</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">710.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>org.apache.isis.applib.value.Clob</mml:returnType>
+            <mml:params>
+                <mml:param xsi:type="mml:scalarParam" id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+                    <mml:facets>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">org.apache.isis.jdo.jdosupport.mixins.Persistable_downloadJdoMetadata#act(java.lang.String)</mml:attr>
+                            <mml:attr name="originalText">File name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                            <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                            <mml:attr name="inverted">false</mml:attr>
+                            <mml:attr name="semantics">REQUIRED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                            <mml:attr name="intent.default0Act">DEFAULTS</mml:attr>
+                            <mml:attr name="methods">public java.lang.String org.apache.isis.jdo.jdosupport.mixins.Persistable_downloadJdoMetadata.default0Act()</mml:attr>
+                        </mml:facet>
+                    </mml:facets>
+                    <mml:type>java.lang.String</mml:type>
+                </mml:param>
+            </mml:params>
+        </mml:act>
+        <mml:act id="downloadLayoutXml">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.act">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.lang.Object org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml</mml:attr>
+                    <mml:attr name="returnType">java.lang.Object</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+                    <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#downloadLayoutXml()</mml:attr>
+                    <mml:attr name="originalText">Download Layout Xml</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">LEFT</mml:attr>
+                    <mml:attr name="value">fa fa-fw fa-download</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">700.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>java.lang.Object</mml:returnType>
+            <mml:params>
+                <mml:param xsi:type="mml:scalarParam" id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+                    <mml:facets>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.DescribedAsFacetTranslated">
+                            <mml:attr name="context">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+                            <mml:attr name="originalText">File name extension can be omitted.</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.DescribedAsFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+                            <mml:attr name="originalText">File name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                            <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                            <mml:attr name="inverted">false</mml:attr>
+                            <mml:attr name="semantics">REQUIRED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                            <mml:attr name="intent.default0Act">DEFAULTS</mml:attr>
+                            <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.default0Act()</mml:attr>
+                        </mml:facet>
+                    </mml:facets>
+                    <mml:type>java.lang.String</mml:type>
+                </mml:param>
+                <mml:param xsi:type="mml:scalarParam" id="style" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+                    <mml:facets>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml#act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)</mml:attr>
+                            <mml:attr name="originalText">Style</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.name.NamedFacetForParameterUsingReflection</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                            <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                            <mml:attr name="inverted">false</mml:attr>
+                            <mml:attr name="semantics">REQUIRED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                            <mml:attr name="intent.default1Act">DEFAULTS</mml:attr>
+                            <mml:attr name="methods">public org.apache.isis.applib.services.layout.LayoutService$Style org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml.default1Act()</mml:attr>
+                        </mml:facet>
+                    </mml:facets>
+                    <mml:type>org.apache.isis.applib.services.layout.LayoutService$Style</mml:type>
+                </mml:param>
+            </mml:params>
+        </mml:act>
+        <mml:act id="downloadMetaModelXml">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.act">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.lang.Object org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.act(java.lang.String)</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml</mml:attr>
+                    <mml:attr name="returnType">java.lang.Object</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+                    <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#downloadMetaModelXml()</mml:attr>
+                    <mml:attr name="originalText">Download Meta Model Xml</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">LEFT</mml:attr>
+                    <mml:attr name="value">fa fa-fw fa-download</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">700.2</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>java.lang.Object</mml:returnType>
+            <mml:params>
+                <mml:param xsi:type="mml:scalarParam" id="fileName" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+                    <mml:facets>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.DescribedAsFacetTranslated">
+                            <mml:attr name="context">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml#act(java.lang.String)</mml:attr>
+                            <mml:attr name="originalText">File name extension can be omitted.</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.DescribedAsFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml#act(java.lang.String)</mml:attr>
+                            <mml:attr name="originalText">File name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                            <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                            <mml:attr name="inverted">false</mml:attr>
+                            <mml:attr name="semantics">REQUIRED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                            <mml:attr name="intent.default0Act">DEFAULTS</mml:attr>
+                            <mml:attr name="methods">public java.lang.String org.apache.isis.applib.mixins.metamodel.Object_downloadMetaModelXml.default0Act()</mml:attr>
+                        </mml:facet>
+                    </mml:facets>
+                    <mml:type>java.lang.String</mml:type>
+                </mml:param>
+            </mml:params>
+        </mml:act>
+        <mml:act id="openRestApi">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.mixins.layout.Object_openRestApi.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.applib.mixins.layout.Object_openRestApi.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.act">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public org.apache.isis.applib.value.LocalResourcePath org.apache.isis.applib.mixins.layout.Object_openRestApi.act()</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.applib.mixins.layout.Object_openRestApi</mml:attr>
+                    <mml:attr name="returnType">org.apache.isis.applib.value.LocalResourcePath</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+                    <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#openRestApi()</mml:attr>
+                    <mml:attr name="originalText">Open Rest Api</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">LEFT</mml:attr>
+                    <mml:attr name="value">fa fa-fw fa-external-link</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">750.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>org.apache.isis.applib.value.LocalResourcePath</mml:returnType>
+            <mml:params/>
+        </mml:act>
+        <mml:act id="rebuildMetamodel">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.act">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.lang.Object org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel.act()</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.applib.mixins.layout.Object_rebuildMetamodel</mml:attr>
+                    <mml:attr name="returnType">java.lang.Object</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.prototype.PrototypeFacetForActionAnnotation">
+                    <mml:attr name="deploymentType">PRODUCTION</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">IDEMPOTENT</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#rebuildMetamodel()</mml:attr>
+                    <mml:attr name="originalText">Rebuild Metamodel</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.CssClassFaFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">LEFT</mml:attr>
+                    <mml:attr name="value">fa fa-fw fa-refresh</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">metadata</mml:attr>
+                    <mml:attr name="originalName">metadata</mml:attr>
+                    <mml:attr name="sequence">800.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>java.lang.Object</mml:returnType>
+            <mml:params/>
+        </mml:act>
+        <mml:act id="updateName">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.associateWith.AssociatedWithFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.associateWith.AssociatedWithFacetForActionAnnotation">
+                    <mml:attr name="value">name</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+                    <mml:attr name="eventType">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+                    <mml:attr name="intent.updateName">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public domainapp.modules.simple.dom.impl.SimpleObject domainapp.modules.simple.dom.impl.SimpleObject.updateName(java.lang.String)</mml:attr>
+                    <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+                    <mml:attr name="returnType">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.command.CommandFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.command.CommandFacetForActionAnnotation">
+                    <mml:attr name="disabled">false</mml:attr>
+                    <mml:attr name="executeIn">FOREGROUND</mml:attr>
+                    <mml:attr name="persistence">PERSISTED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.publish.PublishedActionFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.publishing.PublishedActionFacetForActionAnnotation"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacetFallback">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">IDEMPOTENT</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#updateName()</mml:attr>
+                    <mml:attr name="originalText">Update Name</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.metamodel.facets.members.order.annotprop.MemberOrderFacetForActionAnnotation">
+                    <mml:attr name="name">name</mml:attr>
+                    <mml:attr name="originalName">name</mml:attr>
+                    <mml:attr name="sequence">1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>domainapp.modules.simple.dom.impl.SimpleObject</mml:returnType>
+            <mml:params>
+                <mml:param xsi:type="mml:scalarParam" id="name" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+                    <mml:facets>
+                        <mml:facet id="org.apache.isis.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                            <mml:attr name="defaultFacets">org.apache.isis.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                            <mml:attr name="derived">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject#updateName(java.lang.String)</mml:attr>
+                            <mml:attr name="originalText">Name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                            <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                            <mml:attr name="inverted">false</mml:attr>
+                            <mml:attr name="semantics">REQUIRED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.metamodel.facets.param.parameter.maxlen.MaxLengthFacetForParameterAnnotation">
+                            <mml:attr name="validating">true</mml:attr>
+                            <mml:attr name="value">40</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mustsatisfyspec.MustSatisfySpecificationFacet" fqcn="org.apache.isis.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation">
+                            <mml:attr name="specifications">domainapp.modules.simple.dom.types.Name$NoExclamationMarks</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                            <mml:attr name="derived">true</mml:attr>
+                            <mml:attr name="typicalLengthFacet">org.apache.isis.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethod">
+                            <mml:attr name="intent.default0UpdateName">DEFAULTS</mml:attr>
+                            <mml:attr name="methods">public java.lang.String domainapp.modules.simple.dom.impl.SimpleObject.default0UpdateName()</mml:attr>
+                        </mml:facet>
+                    </mml:facets>
+                    <mml:type>java.lang.String</mml:type>
+                </mml:param>
+            </mml:params>
+        </mml:act>
+    </mml:actions>
+</mml:domainClassDto>
diff --git a/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObjects.xml b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObjects.xml
new file mode 100644
index 0000000..6e0d844
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObjects.xml
@@ -0,0 +1,399 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<mml:domainClassDto id="domainapp.modules.simple.dom.impl.SimpleObjects" service="true" xmlns:mml="http://isis.apache.org/schema/metamodel">
+    <mml:facets>
+        <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+            <mml:attr name="disabling">true</mml:attr>
+            <mml:attr name="hiding">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.named.NamedFacetInferred">
+            <mml:attr name="escaped">true</mml:attr>
+            <mml:attr name="value">Simple Objects</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.domainservice.DomainServiceFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservice.annotation.DomainServiceFacetAnnotation">
+            <mml:attr name="natureOfService">VIEW</mml:attr>
+            <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
+            <mml:attr name="menuBar">PRIMARY</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.metamodel.facets.object.grid.GridFacetDefault"/>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.metamodel.facets.object.domainservice.annotation.IconFacetDerivedFromDomainServiceAnnotation">
+            <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.layout.LayoutFacet" fqcn="org.apache.isis.metamodel.facets.object.layout.LayoutFacetFallback">
+            <mml:attr name="derived">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromIoCNamingStrategy">
+            <mml:attr name="value">simple.SimpleObjects</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+            <mml:attr name="validating">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.metamodel.facets.fallback.PagedFacetFromConfiguration">
+            <mml:attr name="derived">true</mml:attr>
+            <mml:attr name="value">25</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+            <mml:attr name="derived">true</mml:attr>
+            <mml:attr name="value">Simple Objectses</mml:attr>
+        </mml:facet>
+    </mml:facets>
+    <mml:actions>
+        <mml:act id="create">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetForActionAnnotation">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">domainapp.modules.simple.dom.impl.SimpleObjects.CreateDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">domainapp.modules.simple.dom.impl.SimpleObjects.CreateDomainEvent</mml:attr>
+                    <mml:attr name="intent.create">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public domainapp.modules.simple.dom.impl.SimpleObject domainapp.modules.simple.dom.impl.SimpleObjects.create(java.lang.String)</mml:attr>
+                    <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObjects</mml:attr>
+                    <mml:attr name="returnType">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
+                    <mml:attr name="value">NON_IDEMPOTENT</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#create()</mml:attr>
+                    <mml:attr name="originalText">Create</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.PromptStyleFacetForActionLayoutAnnotation">
+                    <mml:attr name="promptStyle">DIALOG_MODAL</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>domainapp.modules.simple.dom.impl.SimpleObject</mml:returnType>
+            <mml:params>
+                <mml:param xsi:type="mml:scalarParam" id="name" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+                    <mml:facets>
+                        <mml:facet id="org.apache.isis.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                            <mml:attr name="defaultFacets">org.apache.isis.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                            <mml:attr name="derived">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#create(java.lang.String)</mml:attr>
+                            <mml:attr name="originalText">Name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                            <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                            <mml:attr name="inverted">false</mml:attr>
+                            <mml:attr name="semantics">REQUIRED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.metamodel.facets.param.parameter.maxlen.MaxLengthFacetForParameterAnnotation">
+                            <mml:attr name="validating">true</mml:attr>
+                            <mml:attr name="value">40</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mustsatisfyspec.MustSatisfySpecificationFacet" fqcn="org.apache.isis.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation">
+                            <mml:attr name="specifications">domainapp.modules.simple.dom.types.Name$NoExclamationMarks</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                            <mml:attr name="derived">true</mml:attr>
+                            <mml:attr name="typicalLengthFacet">org.apache.isis.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                        </mml:facet>
+                    </mml:facets>
+                    <mml:type>java.lang.String</mml:type>
+                </mml:param>
+            </mml:params>
+        </mml:act>
+        <mml:act id="findByName">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacet" fqcn="org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics">
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics</mml:attr>
+                    <mml:attr name="value">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+                    <mml:attr name="eventType">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+                    <mml:attr name="intent.findByName">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.util.List&lt;domainapp.modules.simple.dom.impl.SimpleObject&gt; domainapp.modules.simple.dom.impl.SimpleObjects.findByName(java.lang.String)</mml:attr>
+                    <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObjects</mml:attr>
+                    <mml:attr name="returnType">java.util.List</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#findByName()</mml:attr>
+                    <mml:attr name="originalText">Find By Name</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.BookmarkPolicyFacetForActionLayoutAnnotation">
+                    <mml:attr name="bookmarkPolicy">AS_ROOT</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.PromptStyleFacetForActionLayoutAnnotation">
+                    <mml:attr name="promptStyle">DIALOG_SIDEBAR</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>java.util.List</mml:returnType>
+            <mml:params>
+                <mml:param xsi:type="mml:scalarParam" id="name" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+                    <mml:facets>
+                        <mml:facet id="org.apache.isis.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                            <mml:attr name="defaultFacets">org.apache.isis.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                            <mml:attr name="derived">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#findByName(java.lang.String)</mml:attr>
+                            <mml:attr name="originalText">Name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                            <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                            <mml:attr name="inverted">false</mml:attr>
+                            <mml:attr name="semantics">REQUIRED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.metamodel.facets.param.parameter.maxlen.MaxLengthFacetForParameterAnnotation">
+                            <mml:attr name="validating">true</mml:attr>
+                            <mml:attr name="value">40</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mustsatisfyspec.MustSatisfySpecificationFacet" fqcn="org.apache.isis.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation">
+                            <mml:attr name="specifications">domainapp.modules.simple.dom.types.Name$NoExclamationMarks</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                            <mml:attr name="derived">true</mml:attr>
+                            <mml:attr name="typicalLengthFacet">org.apache.isis.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                        </mml:facet>
+                    </mml:facets>
+                    <mml:type>java.lang.String</mml:type>
+                </mml:param>
+            </mml:params>
+        </mml:act>
+        <mml:act id="findByNameExact">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+                    <mml:attr name="eventType">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+                    <mml:attr name="intent.findByNameExact">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public domainapp.modules.simple.dom.impl.SimpleObject domainapp.modules.simple.dom.impl.SimpleObjects.findByNameExact(java.lang.String)</mml:attr>
+                    <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObjects</mml:attr>
+                    <mml:attr name="returnType">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacetFallback">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
+                    <mml:attr name="value">NON_IDEMPOTENT</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#findByNameExact()</mml:attr>
+                    <mml:attr name="originalText">Find By Name Exact</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>domainapp.modules.simple.dom.impl.SimpleObject</mml:returnType>
+            <mml:params>
+                <mml:param xsi:type="mml:scalarParam" id="name" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+                    <mml:facets>
+                        <mml:facet id="org.apache.isis.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                            <mml:attr name="defaultFacets">org.apache.isis.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                            <mml:attr name="derived">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                        <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#findByNameExact(java.lang.String)</mml:attr>
+                            <mml:attr name="originalText">Name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.param.name.NamedFacetForParameterUsingReflection</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration">
+                            <mml:attr name="label">NOT_SPECIFIED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.LabelAtFacetFromLayoutConfiguration</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault">
+                            <mml:attr name="inverted">false</mml:attr>
+                            <mml:attr name="semantics">REQUIRED</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                            <mml:attr name="derived">true</mml:attr>
+                            <mml:attr name="typicalLengthFacet">org.apache.isis.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                        </mml:facet>
+                    </mml:facets>
+                    <mml:type>java.lang.String</mml:type>
+                </mml:param>
+            </mml:params>
+        </mml:act>
+        <mml:act id="listAll">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacet" fqcn="org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics">
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics</mml:attr>
+                    <mml:attr name="value">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+                    <mml:attr name="eventType">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+                    <mml:attr name="intent.listAll">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.util.List&lt;domainapp.modules.simple.dom.impl.SimpleObject&gt; domainapp.modules.simple.dom.impl.SimpleObjects.listAll()</mml:attr>
+                    <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObjects</mml:attr>
+                    <mml:attr name="returnType">java.util.List</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.RedirectFacetFromActionLayoutAnnotation">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#listAll()</mml:attr>
+                    <mml:attr name="originalText">List All</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.actions.layout.BookmarkPolicyFacetForActionLayoutAnnotation">
+                    <mml:attr name="bookmarkPolicy">AS_ROOT</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>java.util.List</mml:returnType>
+            <mml:params/>
+        </mml:act>
+        <mml:act id="ping">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.metamodel.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.metamodel.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionDomainEventFacetDefault">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromDefault">
+                    <mml:attr name="eventType">org.apache.isis.applib.events.domain.ActionDomainEvent.Default</mml:attr>
+                    <mml:attr name="intent.ping">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public void domainapp.modules.simple.dom.impl.SimpleObjects.ping()</mml:attr>
+                    <mml:attr name="onType">domainapp.modules.simple.dom.impl.SimpleObjects</mml:attr>
+                    <mml:attr name="returnType">void</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacet" fqcn="org.apache.isis.metamodel.facets.actions.redirect.RedirectFacetFallback">
+                    <mml:attr name="redirect">AS_CONFIGURED</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
+                    <mml:attr name="value">NON_IDEMPOTENT</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects#ping()</mml:attr>
+                    <mml:attr name="originalText">Ping</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>void</mml:returnType>
+            <mml:params/>
+        </mml:act>
+    </mml:actions>
+</mml:domainClassDto>
diff --git a/application/src/test/java/domainapp/application/integtests/mml/received/.gitignore b/application/src/test/java/domainapp/application/integtests/mml/received/.gitignore
new file mode 100644
index 0000000..b81c795
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/mml/received/.gitignore
@@ -0,0 +1 @@
+*.xml
\ No newline at end of file
diff --git a/application/src/test/java/domainapp/application/integtests/smoke/Smoke_IntegTest.java b/application/src/test/java/domainapp/application/integtests/smoke/Smoke_IntegTest.java
new file mode 100644
index 0000000..559c36c
--- /dev/null
+++ b/application/src/test/java/domainapp/application/integtests/smoke/Smoke_IntegTest.java
@@ -0,0 +1,102 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.application.integtests.smoke;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.transaction.annotation.Transactional;
+
+import org.apache.isis.applib.services.xactn.TransactionService;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import domainapp.application.integtests.ApplicationIntegTestAbstract;
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+
+@Transactional
+class Smoke_IntegTest extends ApplicationIntegTestAbstract {
+
+    @Inject SimpleObjects menu;
+    @Inject TransactionService transactionService;
+
+    @Test
+    void create() {
+
+        // when
+        List<SimpleObject> all = wrap(menu).listAll();
+
+        // then
+        assertThat(all).isEmpty();
+
+
+
+        // when
+        final SimpleObject fred = wrap(menu).create("Fred");
+        transactionService.flushTransaction();
+
+        // then
+        all = wrap(menu).listAll();
+        assertThat(all).hasSize(1);
+        assertThat(all).contains(fred);
+
+
+
+        // when
+        final SimpleObject bill = wrap(menu).create("Bill");
+        transactionService.flushTransaction();
+
+        // then
+        all = wrap(menu).listAll();
+        assertThat(all).hasSize(2);
+        assertThat(all).contains(fred, bill);
+
+
+
+        // when
+        wrap(fred).updateName("Freddy");
+        transactionService.flushTransaction();
+
+        // then
+        assertThat(wrap(fred).getName()).isEqualTo("Freddy");
+
+
+        // when
+        wrap(fred).setNotes("These are some notes");
+        transactionService.flushTransaction();
+
+        // then
+        assertThat(wrap(fred).getNotes()).isEqualTo("These are some notes");
+
+
+        // when
+        wrap(fred).delete();
+        transactionService.flushTransaction();
+
+
+        all = wrap(menu).listAll();
+        assertThat(all).hasSize(1);
+
+    }
+
+}
+
diff --git a/enhance-all.sh b/enhance-all.sh
new file mode 100644
index 0000000..63572d1
--- /dev/null
+++ b/enhance-all.sh
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+mvn -pl module-simple datanucleus:enhance -o
\ No newline at end of file
diff --git a/module-simple/.gitignore b/module-simple/.gitignore
new file mode 100644
index 0000000..85cb54f
--- /dev/null
+++ b/module-simple/.gitignore
@@ -0,0 +1,8 @@
+.gradle
+translations.pot
+*.jar
+gradle/wrapper
+!gradle-wrapper.jar
+/.apt_generated/
+/.factorypath
+/.apt_generated_tests/
diff --git a/module-simple/log4j2-test.xml b/module-simple/log4j2-test.xml
new file mode 100644
index 0000000..56e8ad6
--- /dev/null
+++ b/module-simple/log4j2-test.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="WARN">
+	<Properties>
+		<Property name="PID">????</Property>
+		<Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>
+		<Property name="LOG_LEVEL_PATTERN">%5p</Property>
+		<Property name="LOG_DATEFORMAT_PATTERN">yyyy-MM-dd HH:mm:ss.SSS</Property>
+		<Property name="CONSOLE_LOG_PATTERN">%clr{%d{${LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+		<Property name="FILE_LOG_PATTERN">%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
+	</Properties>
+	<Appenders>
+		<Console name="Console" target="SYSTEM_OUT" follow="true">
+			<PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}" />
+		</Console>
+	</Appenders>
+	<Loggers>
+		<Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />
+		<Logger name="org.apache.catalina.util.LifecycleBase" level="error" />
+		<Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
+		<logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/>
+		<Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
+		<Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" />
+		<Logger name="org.hibernate.validator.internal.util.Version" level="warn" />
+		<logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/>
+		
+		<logger name="org.apache.directory" level="warn"/>
+		<logger name="org.apache.directory.api.ldap.model.entry.Value" level="off"/>
+		
+		<logger name="DataNucleus.Persistence" level="info"/>
+		<logger name="DataNucleus.Transaction" level="info"/>
+		<logger name="DataNucleus.Datastore.Schema" level="info"/>
+		<logger name="DataNucleus.Datastore.Native" level="info"/>
+		
+		<Root level="info">
+			<AppenderRef ref="Console" />
+		</Root>
+	</Loggers>
+</Configuration>
+
+<!-- # DataNucleus Logging Categories -->
+<!-- DataNucleus.Persistence - All messages relating to the persistence process -->
+<!-- DataNucleus.Transaction - All messages relating to transactions -->
+<!-- DataNucleus.Connection - All messages relating to Connections. -->
+<!-- DataNucleus.Query - All messages relating to queries -->
+<!-- DataNucleus.Cache - All messages relating to the DataNucleus Cache -->
+<!-- DataNucleus.MetaData - All messages relating to MetaData -->
+<!-- DataNucleus.Datastore - All general datastore messages -->
+<!-- DataNucleus.Datastore.Schema - All schema related datastore log messages -->
+<!-- DataNucleus.Datastore.Persist - All datastore persistence messages -->
+<!-- DataNucleus.Datastore.Retrieve - All datastore retrieval messages -->
+<!-- DataNucleus.Datastore.Native - Log of all 'native' statements sent to the datastore -->
+<!-- DataNucleus.General - All general operational messages -->
+<!-- DataNucleus.Lifecycle - All messages relating to object lifecycle changes -->
+<!-- DataNucleus.ValueGeneration - All messages relating to value generation -->
+<!-- DataNucleus.Enhancer - All messages from the DataNucleus Enhancer. -->
+<!-- DataNucleus.SchemaTool - All messages from DataNucleus SchemaTool -->
+<!-- DataNucleus.JDO - All messages general to JDO -->
+<!-- DataNucleus.JPA - All messages general to JPA -->
+<!-- DataNucleus.JCA - All messages relating to Connector JCA. -->
+<!-- DataNucleus.IDE - Messages from the DataNucleus IDE. -->
\ No newline at end of file
diff --git a/module-simple/logging-dn-enhance.properties b/module-simple/logging-dn-enhance.properties
new file mode 100644
index 0000000..ca165ac
--- /dev/null
+++ b/module-simple/logging-dn-enhance.properties
@@ -0,0 +1,41 @@
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#  
+#         http://www.apache.org/licenses/LICENSE-2.0
+#         
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+
+# LOG4J Configuration
+# ===================
+
+# Basic logging goes to "datanucleus.log"
+log4j.appender.A1=org.apache.log4j.FileAppender
+log4j.appender.A1.File=datanucleus.log
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} (%t) %-5p [%c] - %m%n
+#log4j.appender.A1.Threshold=INFO
+
+# Categories
+# Each category can be set to a "level", and to direct to an appender
+
+# Default to DEBUG level for all DataNucleus categories
+log4j.logger.DataNucleus = DEBUG, A1
+
+log4j.category.com.mchange.v2.c3p0=INFO, A1
+log4j.category.com.mchange.v2.resourcepool=INFO, A1
+log4j.category.org.logicalcobwebs.proxool=INFO,A1
+
+
+# Hbase libs logging
+log4j.category.org.apache.hadoop=INFO,A1
+log4j.category.org.apache.zookeeper=INFO,A1
\ No newline at end of file
diff --git a/module-simple/pom.xml b/module-simple/pom.xml
new file mode 100644
index 0000000..274583b
--- /dev/null
+++ b/module-simple/pom.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
+	license agreements. See the NOTICE file distributed with this work for additional 
+	information regarding copyright ownership. The ASF licenses this file to 
+	you under the Apache License, Version 2.0 (the "License"); you may not use 
+	this file except in compliance with the License. You may obtain a copy of 
+	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
+	by applicable law or agreed to in writing, software distributed under the 
+	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
+	OF ANY KIND, either express or implied. See the License for the specific 
+	language governing permissions and limitations under the License. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+
+	<parent>
+		<groupId>org.apache.isis.examples.apps</groupId>
+		<artifactId>simpleapp</artifactId>
+		<version>2.0.0-M3-SNAPSHOT</version>
+	</parent>
+
+	<artifactId>simpleapp-module-simple</artifactId>
+	<name>Apache Isis App - SimpleApp Simple Module</name>
+
+	<properties>
+		<maven-checkstyle-plugin.configLocation>${project.parent.basedir}/_checks/checkstyle.xml</maven-checkstyle-plugin.configLocation>
+		<maven-pmd-plugin.ruleset>${project.parent.basedir}/_checks/pmd.xml</maven-pmd-plugin.ruleset>
+	</properties>
+
+	<build>
+		<resources>
+			<resource>
+				<filtering>false</filtering>
+				<directory>src/main/resources</directory>
+			</resource>
+			<resource>
+				<filtering>false</filtering>
+				<directory>src/main/java</directory>
+				<includes>
+					<include>**</include>
+				</includes>
+				<excludes>
+					<exclude>**/*.java</exclude>
+				</excludes>
+			</resource>
+		</resources>
+	</build>
+
+	<dependencies>
+
+		<!-- ISIS API -->
+
+		<dependency>
+			<groupId>org.apache.isis.core</groupId>
+			<artifactId>isis-applib</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.isis.core</groupId>
+			<artifactId>isis-persistence-jdo-datanucleus5</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.apache.isis.extensions</groupId>
+			<artifactId>isis-extensions-fixtures</artifactId>
+		</dependency>
+		
+		<dependency>
+			<groupId>org.apache.isis.extensions</groupId>
+			<artifactId>isis-extensions-specsupport</artifactId>
+		</dependency>
+
+		<!-- TESTS -->
+		<dependency>
+			<groupId>org.apache.isis.mavendeps</groupId>
+			<artifactId>isis-mavendeps-testing</artifactId>
+			<type>pom</type>
+			<scope>test</scope>
+		</dependency>
+
+	</dependencies>
+
+</project>
diff --git a/module-simple/src/main/java/META-INF/persistence.xml b/module-simple/src/main/java/META-INF/persistence.xml
new file mode 100644
index 0000000..8824aa1
--- /dev/null
+++ b/module-simple/src/main/java/META-INF/persistence.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
+
+    <persistence-unit name="simple">
+    </persistence-unit>
+</persistence>
diff --git a/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java b/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
new file mode 100644
index 0000000..a2c757e
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
@@ -0,0 +1,53 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.modules.simple;
+
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+import org.apache.isis.extensions.fixtures.fixturescripts.FixtureScript;
+import org.apache.isis.extensions.fixtures.legacy.teardown.TeardownFixtureAbstract2;
+import org.apache.isis.extensions.fixtures.modules.Module;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+
+@Configuration
+@ComponentScan
+public class SimpleModule implements Module {
+
+    @Override
+    public FixtureScript getTeardownFixture() {
+        return new TeardownFixtureAbstract2() {
+            @Override
+            protected void execute(ExecutionContext executionContext) {
+                deleteFrom(SimpleObject.class);
+            }
+        };
+    }
+
+    public static class PropertyDomainEvent<S,T>
+    extends org.apache.isis.applib.events.domain.PropertyDomainEvent<S,T> {}
+    
+    public static class CollectionDomainEvent<S,T>
+    extends org.apache.isis.applib.events.domain.CollectionDomainEvent<S,T> {}
+    
+    public static class ActionDomainEvent<S> extends
+    org.apache.isis.applib.events.domain.ActionDomainEvent<S> {}
+    
+}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
new file mode 100644
index 0000000..58254b9
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
@@ -0,0 +1,116 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.modules.simple.dom.impl;
+
+import java.util.Comparator;
+
+import javax.inject.Inject;
+import javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.VersionStrategy;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.Auditing;
+import org.apache.isis.applib.annotation.DomainObject;
+import org.apache.isis.applib.annotation.DomainObjectLayout;
+import org.apache.isis.applib.annotation.Publishing;
+import org.apache.isis.applib.services.inject.ServiceInjector;
+import org.apache.isis.applib.services.message.MessageService;
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.applib.services.title.TitleService;
+import org.apache.isis.schema.utils.jaxbadapters.PersistentEntityAdapter;
+
+import lombok.Getter;
+import lombok.Setter;
+import static org.apache.isis.applib.annotation.CommandReification.ENABLED;
+import static org.apache.isis.applib.annotation.SemanticsOf.IDEMPOTENT;
+import static org.apache.isis.applib.annotation.SemanticsOf.NON_IDEMPOTENT_ARE_YOU_SURE;
+
+import domainapp.modules.simple.dom.types.Name;
+import domainapp.modules.simple.dom.types.Notes;
+import lombok.val;
+
+@javax.jdo.annotations.PersistenceCapable(identityType=IdentityType.DATASTORE, schema = "simple")
+@javax.jdo.annotations.DatastoreIdentity(strategy=IdGeneratorStrategy.IDENTITY, column="id")
+@javax.jdo.annotations.Version(strategy= VersionStrategy.DATE_TIME, column="version")
+@javax.jdo.annotations.Unique(name="SimpleObject_name_UNQ", members = {"name"})
+@DomainObject(auditing = Auditing.ENABLED)
+@DomainObjectLayout()  // causes UI events to be triggered
+@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
+public class SimpleObject implements Comparable<SimpleObject> {
+
+    private SimpleObject() {}
+
+    public String title() {
+        return "Object: " + getName();
+    }
+
+    @lombok.Getter @lombok.Setter //@lombok.NonNull XXX lombok+JDOQ issue
+    @Name private String name;
+
+    @lombok.Getter @lombok.Setter
+    @Notes private String notes;
+
+
+    @Action(semantics = IDEMPOTENT, command = ENABLED, publishing = Publishing.ENABLED, associateWith = "name")
+    public SimpleObject updateName(
+            @Name final String name) {
+        setName(name);
+        return this;
+    }
+    public String default0UpdateName() {
+        return getName();
+    }
+
+
+    @Action(semantics = NON_IDEMPOTENT_ARE_YOU_SURE)
+    public void delete() {
+        final String title = titleService.titleOf(this);
+        messageService.informUser(String.format("'%s' deleted", title));
+        repositoryService.removeAndFlush(this);
+    }
+
+    @Override
+    public String toString() {
+        return getName();
+    }
+
+    private final static Comparator<SimpleObject> comparator = 
+            Comparator.comparing(SimpleObject::getName);
+
+    @Override
+    public int compareTo(final SimpleObject other) {
+        return comparator.compare(this, other);
+    }
+
+
+    @Inject RepositoryService repositoryService;
+    @Inject TitleService titleService;
+    @Inject MessageService messageService;
+
+    // FACTORY
+
+    public static SimpleObject ofName(String name) {
+        val simpleObject = new SimpleObject();
+        simpleObject.setName(name);
+        return simpleObject;
+    }
+
+}
\ No newline at end of file
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.layout.xml b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.layout.xml
new file mode 100644
index 0000000..7b5442c
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.layout.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<bs3:grid xsi:schemaLocation="http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/grid/bootstrap3 http://isis.apache.org/applib/layout/grid/bootstrap3/bootstrap3.xsd" xmlns:c="http://isis.apache.org/applib/layout/component" xmlns:bs3="http://isis.apache.org/applib/layout/grid/bootstrap3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+
+    <bs3:row>
+        <bs3:col span="12" unreferencedActions="true">
+            <c:domainObject bookmarking="AS_ROOT"/>
+        </bs3:col>
+    </bs3:row>
+    <bs3:row>
+        <bs3:col span="6">
+            <bs3:tabGroup>
+                <bs3:tab name="General">
+                    <bs3:row>
+                        <bs3:col span="12">
+                            <c:fieldSet name="Name">
+                                <c:action id="delete">
+                                    <c:describedAs>Deletes this object from the persistent datastore</c:describedAs>
+                                </c:action>
+                                <c:property id="name" namedEscaped="true">
+                                    <c:action id="updateName" promptStyle="INLINE"/>
+                                </c:property>
+                                <c:property id="notes" namedEscaped="true" multiLine="10" hidden="ALL_TABLES"/>
+                            </c:fieldSet>
+                        </bs3:col>
+                    </bs3:row>
+                </bs3:tab>
+                <bs3:tab name="Metadata">
+                    <bs3:row>
+                        <bs3:col span="12">
+                            <c:fieldSet name="Metadata"/>
+                        </bs3:col>
+                    </bs3:row>
+                </bs3:tab>
+                <bs3:tab name="Other">
+                    <bs3:row>
+                        <bs3:col span="12">
+                            <c:fieldSet name="Other" unreferencedProperties="true"/>
+                        </bs3:col>
+                    </bs3:row>
+                </bs3:tab>
+            </bs3:tabGroup>
+            <bs3:tabGroup>
+            </bs3:tabGroup>
+        </bs3:col>
+        <bs3:col span="6">
+            <bs3:tabGroup  unreferencedCollections="true">
+            </bs3:tabGroup>
+        </bs3:col>
+    </bs3:row>
+</bs3:grid>
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.png b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.png
new file mode 100644
index 0000000..0bd6f57
Binary files /dev/null and b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.png differ
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java
new file mode 100644
index 0000000..6b3cbb9
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java
@@ -0,0 +1,96 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.modules.simple.dom.impl;
+
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.jdo.JDOQLTypedQuery;
+
+import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.annotation.BookmarkPolicy;
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.PromptStyle;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.events.domain.ActionDomainEvent;
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.jdo.jdosupport.IsisJdoSupport_v3_2;
+
+import domainapp.modules.simple.dom.types.Name;
+
+@DomainService(
+        nature = NatureOfService.VIEW,
+        objectType = "simple.SimpleObjects"
+        )
+public class SimpleObjects {
+
+    public static class CreateDomainEvent extends ActionDomainEvent<SimpleObjects> {}
+
+    @Action(domainEvent = CreateDomainEvent.class)
+    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
+    public SimpleObject create(
+            @Name final String name
+            ) {
+        return repositoryService.persist(SimpleObject.ofName(name));
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT, promptStyle = PromptStyle.DIALOG_SIDEBAR)
+    public List<SimpleObject> findByName(
+            @Name final String name
+            ) {
+        JDOQLTypedQuery<SimpleObject> q = isisJdoSupport.newTypesafeQuery(SimpleObject.class);
+        final QSimpleObject cand = QSimpleObject.candidate();
+        q = q.filter(
+                cand.name.indexOf(q.stringParameter("name")).ne(-1)
+                );
+        return q.setParameter("name", name)
+                .executeList();
+    }
+
+    public SimpleObject findByNameExact(final String name) {
+        JDOQLTypedQuery<SimpleObject> q = isisJdoSupport.newTypesafeQuery(SimpleObject.class);
+        final QSimpleObject cand = QSimpleObject.candidate();
+        q = q.filter(
+                cand.name.eq(q.stringParameter("name"))
+                );
+        return q.setParameter("name", name)
+                .executeUnique();
+    }
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @ActionLayout(bookmarking = BookmarkPolicy.AS_ROOT)
+    public List<SimpleObject> listAll() {
+        return repositoryService.allInstances(SimpleObject.class);
+    }
+
+    public void ping() {
+        JDOQLTypedQuery<SimpleObject> q = isisJdoSupport.newTypesafeQuery(SimpleObject.class);
+        final QSimpleObject candidate = QSimpleObject.candidate();
+        q.range(0,2);
+        q.orderBy(candidate.name.asc());
+        q.executeList();
+    }
+
+    @Inject RepositoryService repositoryService;
+    @Inject IsisJdoSupport_v3_2 isisJdoSupport;
+
+}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java b/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java
new file mode 100644
index 0000000..9cd2b22
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java
@@ -0,0 +1,54 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.modules.simple.dom.types;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.jdo.annotations.Column;
+
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Parameter;
+import org.apache.isis.applib.annotation.ParameterLayout;
+import org.apache.isis.applib.annotation.Property;
+import org.apache.isis.applib.services.i18n.TranslatableString;
+import org.apache.isis.applib.spec.AbstractSpecification2;
+
+@Column(length = Name.MAX_LEN, allowsNull = "false")
+@Property(editing = Editing.DISABLED, mustSatisfy = Name.NoExclamationMarks.class, maxLength = Name.MAX_LEN)
+@Parameter(mustSatisfy = Name.NoExclamationMarks.class, maxLength = Name.MAX_LEN)
+@ParameterLayout(named = "Name")
+@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Name {
+
+    int MAX_LEN = 40;
+
+    class NoExclamationMarks extends AbstractSpecification2<String> {
+
+        @Override
+        public TranslatableString satisfiesTranslatableSafely(final String name) {
+            return name != null && name.contains("!")
+                    ? TranslatableString.tr("Exclamation mark is not allowed")
+                            : null;
+        }
+    }
+}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/dom/types/Notes.java b/module-simple/src/main/java/domainapp/modules/simple/dom/types/Notes.java
new file mode 100644
index 0000000..d5fb397
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/dom/types/Notes.java
@@ -0,0 +1,43 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.modules.simple.dom.types;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import javax.jdo.annotations.Column;
+
+import org.apache.isis.applib.annotation.Editing;
+import org.apache.isis.applib.annotation.Parameter;
+import org.apache.isis.applib.annotation.ParameterLayout;
+import org.apache.isis.applib.annotation.Property;
+
+@Column(length = Notes.MAX_LEN, allowsNull = "true")
+@Property(editing = Editing.ENABLED, maxLength = Notes.MAX_LEN)
+@Parameter(maxLength = Notes.MAX_LEN)
+@ParameterLayout(named = "Notes")
+@Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Notes {
+
+    int MAX_LEN = 4000;
+
+}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java
new file mode 100644
index 0000000..7f1ee24
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java
@@ -0,0 +1,50 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package domainapp.modules.simple.fixture;
+
+import javax.inject.Inject;
+
+import org.apache.isis.extensions.fixtures.fixturescripts.BuilderScriptWithResult;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+@Accessors(chain = true)
+public class SimpleObjectBuilder extends BuilderScriptWithResult<SimpleObject> {
+
+    @Getter @Setter
+    private String name;
+
+    @Override
+    protected SimpleObject buildResult(final ExecutionContext ec) {
+        
+        checkParam("name", ec, String.class);
+        
+        return wrap(simpleObjects).create(name);
+    }
+    
+    // -- DEPENDENCIES
+
+    @Inject SimpleObjects simpleObjects;
+
+}
diff --git a/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
new file mode 100644
index 0000000..19c378b
--- /dev/null
+++ b/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
@@ -0,0 +1,66 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package domainapp.modules.simple.fixture;
+
+import org.apache.isis.applib.services.registry.ServiceRegistry;
+import org.apache.isis.extensions.fixtures.api.PersonaWithBuilderScript;
+import org.apache.isis.extensions.fixtures.api.PersonaWithFinder;
+import org.apache.isis.extensions.fixtures.legacy.setup.PersonaEnumPersistAll;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+import lombok.AllArgsConstructor;
+
+@AllArgsConstructor
+public enum SimpleObject_persona 
+implements PersonaWithBuilderScript<SimpleObjectBuilder>, PersonaWithFinder<SimpleObject> {
+
+    FOO("Foo"),
+    BAR("Bar"),
+    BAZ("Baz"),
+    FRODO("Frodo"),
+    FROYO("Froyo"),
+    FIZZ("Fizz"),
+    BIP("Bip"),
+    BOP("Bop"),
+    BANG("Bang"),
+    BOO("Boo");
+
+    private final String name;
+
+    @Override
+    public SimpleObjectBuilder builder() {
+        return new SimpleObjectBuilder().setName(name);
+    }
+
+    @Override
+    public SimpleObject findUsing(final ServiceRegistry serviceRegistry) {
+        SimpleObjects simpleObjects = serviceRegistry.lookupService(SimpleObjects.class).orElse(null);
+        return simpleObjects.findByNameExact(name);
+    }
+
+    public static class PersistAll
+    extends PersonaEnumPersistAll<SimpleObject_persona, SimpleObject> {
+
+        public PersistAll() {
+            super(SimpleObject_persona.class);
+        }
+    }
+}
diff --git a/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObject_Test.java b/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObject_Test.java
new file mode 100644
index 0000000..8ad7b15
--- /dev/null
+++ b/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObject_Test.java
@@ -0,0 +1,50 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package domainapp.modules.simple.dom.impl;
+
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class SimpleObject_Test {
+
+    SimpleObject simpleObject;
+
+    @BeforeEach
+    public void setUp() throws Exception {
+        simpleObject = SimpleObject.ofName("Foobar");
+    }
+
+    public static class Name extends SimpleObject_Test {
+
+        @Test
+        public void happyCase() throws Exception {
+            // given
+            assertThat(simpleObject.getName()).isEqualTo("Foobar");
+
+            // when
+            String name = "Foobar - updated";
+            simpleObject.setName(name);
+
+            // then
+            assertThat(simpleObject.getName()).isEqualTo(name);
+        }
+    }
+
+}
diff --git a/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjects_Test.java b/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjects_Test.java
new file mode 100644
index 0000000..732d0e9
--- /dev/null
+++ b/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjects_Test.java
@@ -0,0 +1,115 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package domainapp.modules.simple.dom.impl;
+
+import java.util.List;
+
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.TypeSafeMatcher;
+import org.jmock.Expectations;
+import org.jmock.auto.Mock;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import org.apache.isis.applib.services.repository.RepositoryService;
+import org.apache.isis.commons.internal.collections._Lists;
+import org.apache.isis.unittestsupport.jmocking.JMockActions;
+import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class SimpleObjects_Test {
+
+    @Rule
+    public JUnitRuleMockery2 context = JUnitRuleMockery2.createFor(Mode.INTERFACES_AND_CLASSES);
+
+    @Mock
+    RepositoryService mockRepositoryService;
+
+    SimpleObjects simpleObjects;
+
+    @Before
+    public void setUp() {
+        simpleObjects = new SimpleObjects();
+        simpleObjects.repositoryService = mockRepositoryService;
+    }
+
+    public static class Create extends SimpleObjects_Test {
+
+        @Test
+        public void happyCase() {
+
+            final String someName = "Foobar";
+
+            // given
+            context.checking(new Expectations() {
+                {
+                    oneOf(mockRepositoryService).persist(with(nameOf(someName)));
+                    will(JMockActions.returnArgument(0));
+                }
+
+            });
+
+            // when
+            final SimpleObject obj = simpleObjects.create(someName);
+
+            // then
+            assertThat(obj).isNotNull();
+            assertThat(obj.getName()).isEqualTo(someName);
+        }
+
+        private static Matcher<SimpleObject> nameOf(final String name) {
+            return new TypeSafeMatcher<SimpleObject>() {
+                @Override
+                protected boolean matchesSafely(final SimpleObject item) {
+                    return name.equals(item.getName());
+                }
+
+                @Override
+                public void describeTo(final Description description) {
+                    description.appendText("has name of '" + name + "'");
+                }
+            };
+        }
+    }
+
+    public static class ListAll extends SimpleObjects_Test {
+
+        @Test
+        public void happyCase() {
+
+            // given
+            final List<SimpleObject> all = _Lists.newArrayList();
+
+            context.checking(new Expectations() {
+                {
+                    oneOf(mockRepositoryService).allInstances(SimpleObject.class);
+                    will(returnValue(all));
+                }
+            });
+
+            // when
+            final List<SimpleObject> list = simpleObjects.listAll();
+
+            // then
+            assertThat(list).isEqualTo(all);
+        }
+    }
+}
diff --git a/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java b/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java
new file mode 100644
index 0000000..65334a1
--- /dev/null
+++ b/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java
@@ -0,0 +1,56 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.modules.simple.integtests;
+
+import domainapp.modules.simple.SimpleModule;
+
+import org.apache.isis.config.IsisPresets;
+import org.apache.isis.extensions.fixtures.IsisExtFixturesModule;
+import org.apache.isis.extensions.fixtures.IsisIntegrationTestAbstractWithFixtures;
+import org.apache.isis.jdo.IsisBootDataNucleus;
+import org.apache.isis.runtime.spring.IsisBoot;
+import org.apache.isis.security.bypass.IsisBootSecurityBypass;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.context.annotation.PropertySources;
+
+
+@SpringBootTest(classes = SimpleModuleIntegTestAbstract.AppManifest.class)
+public abstract class SimpleModuleIntegTestAbstract extends IsisIntegrationTestAbstractWithFixtures {
+
+    @Configuration
+    @PropertySources({
+        @PropertySource(IsisPresets.H2InMemory_withUniqueSchema),
+        @PropertySource(IsisPresets.Log4j2Test),
+        @PropertySource(IsisPresets.DataNucleusAutoCreate),
+    })
+    @Import({
+        IsisBoot.class,
+        IsisBootSecurityBypass.class,
+        IsisBootDataNucleus.class,
+        IsisExtFixturesModule.class,
+        SimpleModule.class
+    })
+    public static class AppManifest {
+    }
+
+}
+
diff --git a/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java b/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java
new file mode 100644
index 0000000..7901c41
--- /dev/null
+++ b/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java
@@ -0,0 +1,153 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.modules.simple.integtests.tests;
+
+import java.sql.Timestamp;
+
+import javax.inject.Inject;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.springframework.transaction.annotation.Transactional;
+
+import org.apache.isis.applib.services.title.TitleService;
+import org.apache.isis.applib.services.wrapper.DisabledException;
+import org.apache.isis.applib.services.wrapper.InvalidException;
+import org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusIdLong;
+import org.apache.isis.jdo.jdosupport.mixins.Persistable_datanucleusVersionTimestamp;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.junit.Assert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.fixture.SimpleObject_persona;
+import domainapp.modules.simple.integtests.SimpleModuleIntegTestAbstract;
+
+@Transactional
+public class SimpleObject_IntegTest extends SimpleModuleIntegTestAbstract {
+
+    SimpleObject simpleObject;
+
+    @BeforeEach
+    public void setUp() {
+        // given
+        simpleObject = fixtureScripts.runPersona(SimpleObject_persona.FOO);
+    }
+
+    public static class Name extends SimpleObject_IntegTest {
+
+        @Test
+        public void accessible() {
+            // when
+            final String name = wrap(simpleObject).getName();
+
+            // then
+            assertThat(name).isEqualTo(simpleObject.getName());
+        }
+
+        @Test
+        public void not_editable() {
+
+            // expect
+            assertThrows(DisabledException.class, ()->{
+
+                // when
+                wrap(simpleObject).setName("new name");
+
+            });
+        }
+
+    }
+
+    public static class UpdateName extends SimpleObject_IntegTest {
+
+        @Test
+        public void can_be_updated_directly() {
+
+            // when
+            wrap(simpleObject).updateName("new name");
+            transactionService.flushTransaction();
+
+            // then
+            assertThat(wrap(simpleObject).getName()).isEqualTo("new name");
+        }
+
+        @Test
+        public void failsValidation() {
+
+            // expect
+            InvalidException cause = assertThrows(InvalidException.class, ()->{
+
+                // when
+                wrap(simpleObject).updateName("new name!");
+
+            });
+
+            // also expect
+            assertThat(cause.getMessage(), containsString("Exclamation mark is not allowed."));
+
+        }
+    }
+
+
+    public static class Title extends SimpleObject_IntegTest {
+
+        @Inject
+        TitleService titleService;
+
+        @Test
+        public void interpolatesName() {
+
+            // given
+            final String name = wrap(simpleObject).getName();
+
+            // when
+            final String title = titleService.titleOf(simpleObject);
+
+            // then
+            assertThat(title).isEqualTo("Object: " + name);
+        }
+    }
+
+    public static class DataNucleusId extends SimpleObject_IntegTest {
+
+        @Test
+        public void should_be_populated() {
+            // when
+            final Long id = mixin(Persistable_datanucleusIdLong.class, simpleObject).prop();
+
+            // then
+            assertThat(id).isGreaterThanOrEqualTo(0);
+        }
+    }
+
+    public static class DataNucleusVersionTimestamp extends SimpleObject_IntegTest {
+
+        @Test
+        public void should_be_populated() {
+            // when
+            final Timestamp timestamp = mixin(Persistable_datanucleusVersionTimestamp.class, simpleObject).prop();
+            // then
+            assertThat(timestamp).isNotNull();
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java b/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java
new file mode 100644
index 0000000..1769414
--- /dev/null
+++ b/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java
@@ -0,0 +1,111 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.modules.simple.integtests.tests;
+
+import java.sql.SQLIntegrityConstraintViolationException;
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.jdo.JDODataStoreException;
+
+import org.hamcrest.MatcherAssert;
+import org.junit.jupiter.api.Test;
+import org.springframework.transaction.annotation.Transactional;
+
+import org.apache.isis.integtestsupport.ThrowableMatchers;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+import domainapp.modules.simple.fixture.SimpleObject_persona;
+import domainapp.modules.simple.integtests.SimpleModuleIntegTestAbstract;
+
+@Transactional
+public class SimpleObjects_IntegTest extends SimpleModuleIntegTestAbstract {
+
+    @Inject
+    SimpleObjects menu;
+
+    public static class ListAll extends SimpleObjects_IntegTest {
+
+        @Test
+        public void happyCase() {
+
+            // given
+            fixtureScripts.run(new SimpleObject_persona.PersistAll());
+            transactionService.flushTransaction();
+
+            // when
+            final List<SimpleObject> all = wrap(menu).listAll();
+
+            // then
+            assertThat(all).hasSize(SimpleObject_persona.values().length);
+        }
+
+        @Test
+        public void whenNone() {
+
+            // when
+            final List<SimpleObject> all = wrap(menu).listAll();
+
+            // then
+            assertThat(all).hasSize(0);
+        }
+    }
+
+    public static class Create extends SimpleObjects_IntegTest {
+
+        @Test
+        public void happyCase() {
+
+            wrap(menu).create("Faz");
+
+            // then
+            final List<SimpleObject> all = wrap(menu).listAll();
+            assertThat(all).hasSize(1);
+        }
+
+        @Test
+        public void whenAlreadyExists() {
+
+            // given
+            fixtureScripts.runPersona(SimpleObject_persona.FIZZ);
+            transactionService.flushTransaction();
+
+            // expect
+            Throwable cause = assertThrows(Throwable.class, ()->{
+
+                // when
+                wrap(menu).create("Fizz");
+                transactionService.flushTransaction();
+
+            });
+
+            // also expect
+            MatcherAssert.assertThat(cause, 
+                    ThrowableMatchers.causedBy(JDODataStoreException.class));
+
+        }
+
+    }
+
+
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..1f56c56
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.isis.app</groupId>
+        <artifactId>isis-app-starter-parent</artifactId>
+        <version>2.0.0-M3-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.apache.isis.examples.apps</groupId>
+    <artifactId>simpleapp</artifactId>
+
+    <name>Apache Isis App - SimpleApp Parent</name>
+
+    <packaging>pom</packaging>
+
+    <dependencyManagement>
+        <dependencies>
+
+            <!-- this project's own modules -->
+            <dependency>
+                <groupId>org.apache.isis.examples.apps</groupId>
+                <artifactId>simpleapp-module-simple</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.isis.examples.apps</groupId>
+                <artifactId>simpleapp-module-simple</artifactId>
+                <version>${project.version}</version>
+                <scope>test</scope>
+                <type>test-jar</type>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.isis.examples.apps</groupId>
+                <artifactId>simpleapp-application</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.isis.examples.apps</groupId>
+                <artifactId>simpleapp-webapp</artifactId>
+                <version>${project.version}</version>
+            </dependency>
+
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+
+    <modules>
+        <module>module-simple</module>
+        <module>application</module>
+        <module>webapp</module>
+    </modules>
+
+</project>
diff --git a/webapp/lib/.gitignore b/webapp/lib/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/webapp/pom.xml b/webapp/pom.xml
new file mode 100644
index 0000000..a3758f8
--- /dev/null
+++ b/webapp/pom.xml
@@ -0,0 +1,243 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.isis.examples.apps</groupId>
+        <artifactId>simpleapp</artifactId>
+        <version>2.0.0-M3-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>simpleapp-webapp</artifactId>
+    <name>Apache Isis App - SimpleApp Webapp</name>
+
+    <description>This assemblies and runs both the Wicket viewer and the Restfulobjects viewer in a single webapp configured to run using the datanucleus object store.</description>
+
+    <packaging>jar</packaging>
+
+    <properties>
+        <maven-war-plugin.warName>${project.parent.artifactId}</maven-war-plugin.warName>
+    </properties>
+
+    <build>
+        <resources>
+            <resource>
+                <filtering>false</filtering>
+                <directory>src/main/resources</directory>
+            </resource>
+            <resource>
+                <filtering>false</filtering>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**</include>
+                </includes>
+                <excludes>
+                    <exclude>**/*.java</exclude>
+                </excludes>
+            </resource>
+        </resources>
+    </build>
+
+    <dependencies>
+    
+    	<!-- this app -->
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>simpleapp-application</artifactId>
+        </dependency>
+
+        <!-- isis -->
+        <dependency>
+            <groupId>org.apache.isis.mavendeps</groupId>
+            <artifactId>isis-mavendeps-webapp</artifactId>
+            <type>pom</type>
+        </dependency>
+
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+        </dependency>
+
+        <!-- test -->
+        <dependency>
+            <groupId>org.apache.isis.mavendeps</groupId>
+            <artifactId>isis-mavendeps-testing</artifactId>
+            <type>pom</type>
+            <scope>test</scope>
+        </dependency>
+
+    </dependencies>
+
+    <profiles>
+
+        <profile>
+            <id>actuator</id>
+            <activation>
+                <property>
+                    <name>!skip.actuator</name>
+                </property>
+            </activation>
+            <dependencies>
+                <dependency>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-actuator-autoconfigure</artifactId>
+                </dependency>
+            </dependencies>
+        </profile>
+
+        <!-- running: mvn spring-boot:run -->
+		<profile>
+			<id>package-as-jar</id>
+			<activation>
+				<property>
+					<name>!skip.package-as-jar</name>
+				</property>
+			</activation>
+
+			<build>
+				<plugins>
+					<plugin>
+						<groupId>org.springframework.boot</groupId>
+						<artifactId>spring-boot-maven-plugin</artifactId>
+						<version>${spring-boot.version}</version>
+						<executions>
+							<execution>
+								<goals>
+									<goal>repackage</goal>
+								</goals>
+							</execution>
+						</executions>
+					</plugin>
+				</plugins>
+			</build>
+		</profile>
+    
+        <profile>
+            <id>jdbc-logging</id>
+            <activation>
+                <property>
+                    <name>jdbc-logging</name>
+                </property>
+            </activation>
+            <dependencies>
+                <dependency>
+                    <groupId>org.lazyluke</groupId>
+                    <artifactId>log4jdbc-remix</artifactId>
+                    <exclusions>
+                        <exclusion>
+                            <groupId>org.slf4j</groupId>
+                            <artifactId>slf4j-api</artifactId>
+                        </exclusion>
+                    </exclusions>
+                </dependency>
+            </dependencies>
+        </profile>
+
+        <profile>
+            <id>lockdown</id>
+            <activation>
+                <property>
+                    <name>lockdown</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>list</id>
+                                <phase>generate-test-resources</phase>
+                                <goals>
+                                    <goal>list</goal>
+                                </goals>
+                                <configuration>
+                                    <outputFile>${project.build.directory}/test-classes/domain/webapp/lockdown/LockDownMavenDeps_Test.list.actual.txt</outputFile>
+                                </configuration>
+                            </execution>
+                            <execution>
+                                <id>tree</id>
+                                <phase>generate-test-resources</phase>
+                                <goals>
+                                    <goal>tree</goal>
+                                </goals>
+                                <configuration>
+                                    <outputFile>${project.build.directory}/test-classes/domain/webapp/lockdown/LockDownMavenDeps_Test.tree.actual.txt</outputFile>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+
+        <profile>
+            <id>docker</id>
+            <activation>
+                <property>
+                    <name>docker</name>
+                </property>
+            </activation>
+            <properties>
+                <packaging.type>jar</packaging.type>
+                <package-as-war>false</package-as-war>
+            </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>com.google.cloud.tools</groupId>
+                        <artifactId>jib-maven-plugin</artifactId>
+                        <configuration>
+                            <from>
+                                <image>openjdk:13-alpine</image>
+                            </from>
+                            <container>
+                                <jvmFlags>
+                                    <jvmFlag>-Xmx512m</jvmFlag>
+                                </jvmFlags>
+                                <mainClass>domainapp.application.HelloWorldApp</mainClass>
+                                <ports>
+                                    <port>8080</port>
+                                </ports>
+                            </container>
+                            <to>
+                                <image>docker.io/apacheisis/simpleapp:latest</image>
+                                <auth>
+                                    <username>${env.DOCKER_REGISTRY_USERNAME}</username>
+                                    <password>${env.DOCKER_REGISTRY_PASSWORD}</password>
+                                </auth>
+                            </to>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>build</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/webapp/src/main/java/domainapp/webapp/SimpleApp.java b/webapp/src/main/java/domainapp/webapp/SimpleApp.java
new file mode 100644
index 0000000..e4396e0
--- /dev/null
+++ b/webapp/src/main/java/domainapp/webapp/SimpleApp.java
@@ -0,0 +1,75 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package domainapp.webapp;
+
+import domainapp.application.ApplicationModule;
+import domainapp.application.fixture.scenarios.DomainAppDemo;
+
+import org.apache.isis.extensions.fixtures.IsisExtFixturesModule;
+import org.apache.isis.jdo.IsisBootDataNucleus;
+import org.apache.isis.runtime.spring.IsisBoot;
+import org.apache.isis.security.shiro.IsisBootSecurityShiro;
+import org.apache.isis.viewer.restfulobjects.IsisBootViewerRestfulObjects;
+import org.apache.isis.viewer.wicket.viewer.IsisBootViewerWicket;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import org.apache.isis.config.IsisPresets;
+import org.springframework.context.annotation.PropertySource;
+import org.springframework.context.annotation.PropertySources;
+
+@SpringBootApplication
+@Import({
+    SimpleApp.AppManifest.class,
+})
+public class SimpleApp extends SpringBootServletInitializer {
+
+    @Configuration
+    @PropertySources({
+            @PropertySource(IsisPresets.NoTranslations),
+            @PropertySource(IsisPresets.DataNucleusAutoCreate),
+    })
+    @Import({
+            IsisBoot.class,
+            IsisBootSecurityShiro.class,
+            IsisBootDataNucleus.class,
+            IsisBootViewerRestfulObjects.class,
+            IsisBootViewerWicket.class,
+
+            IsisExtFixturesModule.class,
+
+            ApplicationModule.class,
+            DomainAppDemo.class // register this fixture
+    })
+    public static class AppManifest {
+    }
+
+    /**
+     * @implNote this is to support the <em>Spring Boot Maven Plugin</em>, which auto-detects an
+     * entry point by searching for classes having a {@code main(...)}
+     */
+    public static void main(String[] args) {
+        IsisPresets.prototyping();
+        SpringApplication.run(new Class[] { SimpleApp.class }, args);
+    }
+
+}
diff --git a/webapp/src/main/java/domainapp/webapp/layout/menubars.layout.xml b/webapp/src/main/java/domainapp/webapp/layout/menubars.layout.xml
new file mode 100644
index 0000000..d286f2d
--- /dev/null
+++ b/webapp/src/main/java/domainapp/webapp/layout/menubars.layout.xml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<mb3:menuBars xsi:schemaLocation="http://isis.apache.org/applib/layout/menubars/bootstrap3 http://isis.apache.org/applib/layout/menubars/bootstrap3/menubars.xsd http://isis.apache.org/applib/layout/component http://isis.apache.org/applib/layout/component/component.xsd http://isis.apache.org/applib/layout/links http://isis.apache.org/applib/layout/links/links.xsd" xmlns:cpt="http://isis.apache.org/applib/layout/component" xmlns:lnk="http://isis.apache.org/applib/layout/links" xmlns:mb3="h [...]
+    <mb3:primary>
+        <mb3:menu>
+            <mb3:named>Simple Objects</mb3:named>
+            <mb3:section>
+                <mb3:serviceAction objectType="simple.SimpleObjects" id="create">
+                    <cpt:named>Create</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="simple.SimpleObjects" id="findByName">
+                    <cpt:named>Find By Name</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="simple.SimpleObjects" id="listAll">
+                    <cpt:named>List All</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+        </mb3:menu>
+        <mb3:menu unreferencedActions="true">
+            <mb3:named>Other</mb3:named>
+        </mb3:menu>
+    </mb3:primary>
+    <mb3:secondary>
+        <mb3:menu>
+            <mb3:named>Prototyping</mb3:named>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="runFixtureScript">
+                    <cpt:named>Run Fixture Script</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="runFixtureScriptWithAutoComplete">
+                    <cpt:named>Run Fixture Script</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.FixtureScriptsDefault" id="recreateObjectsAndReturnFirst">
+                    <cpt:named>Recreate Objects And Return First</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.LayoutServiceMenu" id="downloadLayouts">
+                    <cpt:named>Download Object Layouts (ZIP)</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.LayoutServiceMenu" id="downloadMenuBarsLayout">
+                    <cpt:named>Download Menu Bars Layout (XML)</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+				<mb3:serviceAction objectType="isisApplib.MetaModelServicesMenu" id="downloadMetaModelXml">
+                    <cpt:named>Download Meta Model (XML)</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.MetaModelServicesMenu" id="downloadMetaModelCsv">
+                    <cpt:named>Download Meta Model (CSV)</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.SwaggerServiceMenu" id="openSwaggerUi">
+                    <cpt:named>Open Swagger Ui</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.SwaggerServiceMenu" id="openRestApi">
+                    <cpt:named>Open Rest Api</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.SwaggerServiceMenu" id="downloadSwaggerSchemaDefinition">
+                    <cpt:named>Download Swagger Schema Definition</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="downloadTranslations">
+                    <cpt:named>Download Translations</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="resetTranslationCache">
+                    <cpt:named>Clear translation cache</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="switchToReadingTranslations">
+                    <cpt:named>Switch To Reading Translations</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.TranslationServicePoMenu" id="switchToWritingTranslations">
+                    <cpt:named>Switch To Writing Translations</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.HsqlDbManagerMenu" id="hsqlDbManager">
+                    <cpt:named>HSQL DB Manager</cpt:named>
+                </mb3:serviceAction>
+                <mb3:serviceAction objectType="isisApplib.H2ManagerMenu" id="openH2Console">
+                    <cpt:named>H2 Console</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+        </mb3:menu>
+    </mb3:secondary>
+    <mb3:tertiary>
+        <mb3:menu>
+            <mb3:named>Configuration Service Menu</mb3:named>
+            <mb3:section>
+                <mb3:serviceAction objectType="isisApplib.ConfigurationMenu" id="configuration">
+                    <cpt:named>Configuration</cpt:named>
+                </mb3:serviceAction>
+            </mb3:section>
+        </mb3:menu>
+    </mb3:tertiary>
+</mb3:menuBars>
diff --git a/webapp/src/main/resources/application.yml b/webapp/src/main/resources/application.yml
new file mode 100644
index 0000000..cb8143a
--- /dev/null
+++ b/webapp/src/main/resources/application.yml
@@ -0,0 +1,145 @@
+#
+# Recommend use for static configuration that does not change between environments.
+#
+# See also config/application.properties
+#
+isis:
+  reflector:
+    validator:
+      allowDeprecated: false
+      noParamsOnly: true
+      explicitObjectType: true
+      serviceActionsOnly: true
+      mixinsOnly: true
+
+    facet:
+      cssClassFa:
+        patterns:
+          new.*:fa-plus,\
+          add.*:fa-plus-square,\
+          create.*:fa-plus,\
+          update.*:fa-edit,\
+          delete.*:fa-trash,\
+          save.*:fa-floppy-o,\
+          change.*:fa-edit,\
+          edit.*:fa-pencil-square-o,\
+          maintain.*:fa-edit,\
+          remove.*:fa-minus-square,\
+          copy.*:fa-copy,\
+          move.*:fa-exchange,\
+          first.*:fa-star,\
+          find.*:fa-search,\
+          lookup.*:fa-search,\
+          search.*:fa-search,\
+          view.*:fa-search,\
+          clear.*:fa-remove,\
+          previous.*:fa-step-backward,\
+          next.*:fa-step-forward,\
+          list.*:fa-list, \
+          all.*:fa-list, \
+          download.*:fa-download, \
+          upload.*:fa-upload, \
+          export.*:fa-download,\
+          switch.*:fa-exchange,\
+          import.*:fa-upload,\
+          execute.*:fa-bolt, \
+          run.*:fa-bolt, \
+          calculate.*:fa-calculator, \
+          verify.*:fa-check-circle, \
+          refresh.*:fa-refresh, \
+          install.*:fa-wrench,\
+          stop.*:fa-stop,\
+          terminate.*:fa-stop,\
+          cancel.*:fa-stop,\
+          discard.*:fa-trash-o,\
+          pause.*:fa-pause,\
+          suspend.*:fa-pause,\
+          resume.*:fa-play,\
+          renew.*:fa-repeat,\
+          reset.*:fa-repeat,\
+          categorise.*:fa-folder-open-o,\
+          assign.*:fa-hand-o-right,\
+          approve.*:fa-thumbs-o-up,\
+          decline.*:fa-thumbs-o-down
+
+      cssClass:
+        patterns:
+          delete.*:btn-danger,\
+          discard.*:btn-warning,\
+          remove.*:btn-warning
+
+    explicitAnnotations:
+      action: true
+
+  objects:
+    editing: false
+
+  services:
+    audit:
+      objects: all
+    command:
+      actions: ignore_safe
+      properties: all
+    publish:
+      objects: all
+      actions: all
+      properties: all
+
+    injector:
+      setPrefix: false
+
+  value:
+    format:
+      date: dd-MM-yyyy
+
+  viewer:
+    wicket:
+      application:
+        menubarsLayoutXml: domainapp/webapp/layout/menubars.layout.xml
+        brandLogoHeader: /images/apache-isis/logo-48x48.png
+        faviconUrl: /images/favicon.png
+        name: Simple App
+        css: css/application.css
+        js: scripts/application.js
+        about: Simple App
+      welcome:
+        file: welcome.html
+
+      credit[0]:
+        image: /images/apache-isis/logo-48x48.png
+        name: Apache Isis
+        url: http://isis.apache.org
+
+      themes:
+        initial: Flatly
+        showChooser: true
+        enabled: bootstrap-theme, Cerulean, Cosmo, Cyborg, Darkly, Flatly, Journal, Lumen, Paper, Readable, Sandstone, Simplex, Slate, Spacelab, Superhero, United, Yeti
+
+      maxTitleLengthInStandaloneTables: 0
+      maxTitleLengthInParentedTables: 0
+
+      developmentUtilities:
+        enable: true
+
+  persistor:
+    datanucleus:
+      impl:
+        datanucleus:
+          schema:
+            validateTables: true
+            validateConstraints: true
+
+          persistenceByReachabilityAtCommit: false
+          identifier:
+            case: MixedCase
+
+          cache:
+            level2:
+              type: none
+              mode: ENABLE_SELECTIVE
+
+      standaloneCollection:
+        bulkLoad: false
+spring:
+  banner:
+    location: banner.txt
diff --git a/webapp/src/main/resources/banner.txt b/webapp/src/main/resources/banner.txt
new file mode 100644
index 0000000..1348a76
--- /dev/null
+++ b/webapp/src/main/resources/banner.txt
@@ -0,0 +1,6 @@
+     _                     _            ___     _
+    / \   _ __   __ _  ___| |__   ___  |_ _|___(_)___
+   / _ \ | '_ \ / _` |/ __| '_ \ / _ \  | |/ __| / __|
+  / ___ \| |_) | (_| | (__| | | |  __/  | |\__ \ \__ \
+ /_/   \_\ .__/ \__,_|\___|_| |_|\___| |___|___/_|___/
+         |_|
\ No newline at end of file
diff --git a/webapp/src/main/resources/config/application.properties b/webapp/src/main/resources/config/application.properties
new file mode 100644
index 0000000..13ec292
--- /dev/null
+++ b/webapp/src/main/resources/config/application.properties
@@ -0,0 +1,12 @@
+#
+# Recommend use for configuration that changes between environments.
+#
+# To override externally, see Spring Boot docs
+# https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config
+#
+# See also /application.yml
+#
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL = jdbc:h2:mem:test
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName = org.h2.Driver
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName = sa
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword =
\ No newline at end of file
diff --git a/webapp/src/main/resources/shiro.ini b/webapp/src/main/resources/shiro.ini
new file mode 100644
index 0000000..019f356
--- /dev/null
+++ b/webapp/src/main/resources/shiro.ini
@@ -0,0 +1,93 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+[main]
+
+contextFactory = org.apache.isis.security.shiro.IsisLdapContextFactory
+contextFactory.url = ldap://localhost:10389
+contextFactory.authenticationMechanism = CRAM-MD5
+contextFactory.systemAuthenticationMechanism = simple
+contextFactory.systemUsername = uid=admin,ou=system
+contextFactory.systemPassword = secret
+
+ldapRealm = org.apache.isis.security.shiro.IsisLdapRealm
+ldapRealm.contextFactory = $contextFactory
+
+ldapRealm.searchBase = ou=groups,o=mojo
+ldapRealm.groupObjectClass = groupOfUniqueNames
+ldapRealm.uniqueMemberAttribute = uniqueMember
+ldapRealm.uniqueMemberAttributeValueTemplate = uid={0}
+
+# optional mapping from physical groups to logical application roles
+#ldapRealm.rolesByGroup = \
+#    LDN_USERS: user_role,\
+#    NYK_USERS: user_role,\
+#    HKG_USERS: user_role,\
+#    GLOBAL_ADMIN: admin_role,\
+#    DEMOS: self-install_role
+
+ldapRealm.permissionsByRole=\
+   user_role = *:SimpleObjectMenu:*:*,\
+               *:SimpleObject:*:*; \
+   self-install_role = *:FixtureScriptsDefault:*:* ; \
+   admin_role = *
+
+# to use ldap...
+# (see docs for details of how to setup users/groups in Apache Directory Studio).
+#securityManager.realms = $ldapRealm
+
+# to use .ini file
+securityManager.realms = $iniRealm
+
+
+
+# -----------------------------------------------------------------------------
+# Users and their assigned roles
+#
+# Each line conforms to the format defined in the
+# org.apache.shiro.realm.text.TextConfigurationRealm#setUserDefinitions JavaDoc
+# -----------------------------------------------------------------------------
+
+[users]
+# user = password, role1, role2, role3, ...
+
+
+sven = pass, admin_role
+dick = pass, user_role, self-install_role
+bob  = pass, user_role, self-install_role
+joe  = pass, user_role, self-install_role
+guest = guest, user_role
+
+
+
+# -----------------------------------------------------------------------------
+# Roles with assigned permissions
+# 
+# Each line conforms to the format defined in the
+# org.apache.shiro.realm.text.TextConfigurationRealm#setRoleDefinitions JavaDoc
+# -----------------------------------------------------------------------------
+
+[roles]
+# role = perm1, perm2, perm3, ...
+# perm in format: packageName:className:memberName:r,w
+
+user_role =   *:SimpleObjectMenu:*:*,\
+              *:SimpleObject:*:*
+self-install_role = *:FixtureScriptsDefault:*:*
+admin_role = *
diff --git a/webapp/src/main/resources/static/css/application.css b/webapp/src/main/resources/static/css/application.css
new file mode 100644
index 0000000..9f1612a
--- /dev/null
+++ b/webapp/src/main/resources/static/css/application.css
@@ -0,0 +1,19 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
diff --git a/webapp/src/main/resources/static/images/apache-isis/logo-48x48.png b/webapp/src/main/resources/static/images/apache-isis/logo-48x48.png
new file mode 100644
index 0000000..08e012c
Binary files /dev/null and b/webapp/src/main/resources/static/images/apache-isis/logo-48x48.png differ
diff --git a/webapp/src/main/resources/static/images/apache-isis/logo.png b/webapp/src/main/resources/static/images/apache-isis/logo.png
new file mode 100644
index 0000000..5284fe7
Binary files /dev/null and b/webapp/src/main/resources/static/images/apache-isis/logo.png differ
diff --git a/webapp/src/main/resources/static/images/favicon.png b/webapp/src/main/resources/static/images/favicon.png
new file mode 100644
index 0000000..2586589
Binary files /dev/null and b/webapp/src/main/resources/static/images/favicon.png differ
diff --git a/webapp/src/main/resources/static/index.html b/webapp/src/main/resources/static/index.html
new file mode 100644
index 0000000..e25c772
--- /dev/null
+++ b/webapp/src/main/resources/static/index.html
@@ -0,0 +1,117 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<html>
+    <head>
+        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+        <title>Apache Isis&trade; SimpleApp</title>
+        
+        <style type="text/css">
+body {
+    background-color: #1A467B;
+    font-family: Verdana, Helvetica, Arial, serif;
+    font-size: 90%;
+}
+
+li {
+    margin-top: 6px;
+    margin-bottom: 6px;
+}
+table {
+    border-collapse: collapse;
+}
+table, th, td {
+    border: 1px;
+    border-style: solid;
+    border-color: lightgray;
+}
+th, td {
+    padding: 10px;
+}
+#wrapper {
+    background-color: #ffffff;
+    width: 900px;
+    margin: 8px auto;
+    padding: 12px;
+}
+        </style>
+    </head>
+    <body>
+        <div id="wrapper">
+            <img alt="Isis Logo" src="images/apache-isis/logo.png" />
+             
+            <p>
+                This app has been generated using Apache Isis'
+                <a href="http://isis.apache.org/arch/simlpe%61pp/about.html" target="_blank">SimpleApp</a> archetype,
+                to create a purposefully minimal application that nevertheless includes fixture data, integration tests and BDD specs.
+                <br/>
+                <br/>
+                The application's business logic resides in a single (maven) module, <a href="https://github.com/apache/isis/tree/master/example/application/simple%61pp/module-simple"  target="_blank">module-simple</a>, that in turn contains a single domain entity, <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java"  target="_blank">SimpleObject</a>.  The module has its own <a [...]
+                <br/>
+                <br/>
+                The app also defines the <a href="https://github.com/apache/isis/tree/master/example/application/simple%61pp/application"  target="_blank">application</a> (maven) module; this holds <a href="https://github.com/apache/isis/tree/master/example/application/simple%61pp/application/src/main/java/domainapp/application/fixture"  target="_blank">fixtures</a>, <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/application/src/test/java/domainapp/ap [...]
+                <br/>
+                <br/>
+                The app's <a href="https://github.com/apache/isis/tree/master/example/application/simple%61pp/webapp"  target="_blank">webapp</a> (maven) module is used to assemble the application into a WAR file.
+            </p>
+
+            <p>To access the app:</p>
+            <ul>
+                <li>
+                    <p>
+                        <b><a href="wicket/">wicket/</a></b>
+                    </p>
+                    <p>
+                        provides access to a generic UI for end-users,
+                        Apache Isis' <a href="http://isis.apache.org/guides/ugvw/ugvw.html" target="_blank">Wicket Viewer</a>.
+                        As its name suggests, this viewer is built on top of <a href="http://wicket.apache.org" target="_blank">Apache Wicket</a>&trade;.
+                    </p>
+                </li>
+                <li>
+                    <p>
+                        <b>
+                            <a href="swagger-ui/index.template.html">swagger-ui/</a>
+                        </b>
+                    </p>
+                    <p>
+                        provides access to a Swagger UI which uses a subset of the framework's automatically
+                        generated <a href="restful/">RESTful API</a> (provided by the 
+                        <a href="http://isis.apache.org/guides/ugvro/ugvro.html"  target="_blank">Restful Objects viewer</a>).  There are 
+                        three versions of the Swagger spec files (that drive the UI): 
+                        <a href="restful/swagger/public">public</a> (for use by "third-party" apps), 
+                        <a href="restful/swagger/private">private</a> (for use by internal apps), and 
+                        <a href="restful/swagger/prototyping">prototyping</a> (an extended version of the private
+                        API).  The Swagger spec files are themselves dynamically generated and can be used to generate
+                        client-side stubs.
+                    </p>
+                    <p>The RESTful API can return both simple representations and also richer hypermedia representations
+                        that are conformant with the <a href="http://restfulobjects.org"  target="_blank">Restful Objects</a> spec.
+                        The HTTP <code>Accept</code> header is used to select which representation should be generated.
+                    </p>
+                </li>
+            </ul>
+
+            <p>
+            The default user/password is <b><i>sven/pass</i></b> (as configured in the
+            <a href="https://github.com/apache/isis/blob/master/example/application/simple%61pp/webapp/src/main/webapp/WEB-INF/shiro.ini" target="_blank">shiro.ini</a> file).
+            </p>
+            
+        </div>
+    </body>
+</html>
diff --git a/webapp/src/main/resources/static/scripts/application.js b/webapp/src/main/resources/static/scripts/application.js
new file mode 100644
index 0000000..d8cf6fe
--- /dev/null
+++ b/webapp/src/main/resources/static/scripts/application.js
@@ -0,0 +1,3 @@
+$(document).ready(function() {
+	/// here...
+});
\ No newline at end of file
diff --git a/webapp/src/main/webapp/WEB-INF/translations-en.po b/webapp/src/main/webapp/WEB-INF/translations-en.po
new file mode 100644
index 0000000..4e59ee2
--- /dev/null
+++ b/webapp/src/main/webapp/WEB-INF/translations-en.po
@@ -0,0 +1,674 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2016-06-16 15:34:40+\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel(java.lang.String)
+msgid ".csv file name"
+msgstr ""
+
+
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata#$$(java.lang.String)
+msgid ".jdo file name"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
+msgid ".pot file name"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#ACTION
+msgid "Action"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Are you sure?"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "AutoLabel.CSS.required"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Cancel"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#clearHints()
+#: domainapp.dom.simple.SimpleObject#clearHints()
+msgid "Clear Hints"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
+msgid "Clear translation cache"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#COLLECTION
+msgid "Collection"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsAjaxTablePanelFactory.Table"
+msgstr "Table"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsUnresolvedPanel.Hide"
+msgstr "Hide"
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#COMPLETE
+msgid "Complete"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.config.ConfigurationServiceMenu#configuration()
+msgid "Configuration"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Confirm"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#create()
+msgid "Create"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#CURRENT
+msgid "Current"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#delete()
+msgid "Delete"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#downloadJdoMetadata()
+msgid "Download Jdo Metadata"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#downloadLayoutXml()
+#: domainapp.dom.simple.SimpleObject#downloadLayoutXml()
+msgid "Download Layout Xml"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu#downloadLayouts()
+msgid "Download Layouts (XML)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel()
+msgid "Download Meta Model (CSV)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec()
+msgid "Download Swagger Spec"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
+msgid "Download Translations"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.dto.Dto_downloadXml#$$(java.lang.String)
+#: org.apache.isis.applib.services.dto.Dto_downloadXsd#$$(java.lang.String,org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas)
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml#$$(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)
+msgid "File name"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Exclamation mark is not allowed"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec(java.lang.String,org.apache.isis.applib.services.swagger.SwaggerService$Visibility,org.apache.isis.applib.services.swagger.SwaggerService$Format)
+msgid "Filename"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#findByName()
+msgid "Find By Name"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
+msgid "Fixture script"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#friendlyName
+#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
+msgid "Friendly Name"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "General"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageService#homePage()
+msgid "Home Page"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusIdLong()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong#$$()
+msgid "Id"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT
+msgid "Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT_ARE_YOU_SURE
+msgid "Idempotent Are You Sure"
+msgstr "Are you sure?"
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#IGNORE
+msgid "Ignore"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#INCLUDE
+msgid "Include"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#JSON
+msgid "Json"
+msgstr "JSON"
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#key
+msgid "Key"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#listAll()
+msgid "List All"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
+msgid "Lookup"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml
+#: org.apache.isis.applib.services.layout.Object_rebuildMetamodel
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata
+#: org.apache.isis.viewer.wicket.viewer.services.Object_clearHints
+msgid "Metadata"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#MINIMAL
+msgid "Minimal"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+#: domainapp.dom.simple.SimpleObject#name
+#: domainapp.dom.simple.SimpleObject#updateName(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#create(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#findByName(java.lang.String)
+msgid "Name"
+msgstr ""
+
+
+#: org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureFactory#newApplicationFeature()
+msgid "New Application Feature"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT
+msgid "Non Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT_ARE_YOU_SURE
+msgid "Non Idempotent Are You Sure"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#NORMALIZED
+msgid "Normalized"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#number
+msgid "Number"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
+msgid "Object"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#title()
+msgid "Object: {name}"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#objects
+msgid "Objects"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Parameters"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE
+msgid "Private"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE_WITH_PROTOTYPING
+msgid "Private With Prototyping"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#PROPERTY
+msgid "Property"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
+msgid "Prototyping"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PUBLIC
+msgid "Public"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#rebuildMetamodel()
+#: domainapp.dom.simple.SimpleObject#rebuildMetamodel()
+msgid "Rebuild Metamodel"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#recreateObjectsAndReturnFirst()
+msgid "Recreate Objects And Return First"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#object
+msgid "Result"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#className
+msgid "Result class"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#key
+msgid "Result key"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete()
+msgid "Run Fixture Script"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE
+msgid "Safe"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE_AND_REQUEST_CACHEABLE
+msgid "Safe And Request Cacheable"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects
+#: org.apache.isis.applib.fixturescripts.FixtureScript
+msgid "Script"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Script-specific parameters (if any).  The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#title()
+msgid "Simple Objects"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
+msgid "Switch To Reading Translations"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
+msgid "Switch To Writing Translations"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Update Name"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#value
+msgid "Value"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionLong()
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionTimestamp()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong#$$()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp#$$()
+msgid "Version"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#YAML
+msgid "Yaml"
+msgstr "YAML"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "aboutLabel"
+msgstr "About"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "cancelLabel"
+msgstr "Cancel"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "datanucleusIdLong"
+msgstr "Id"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortPlural"
+msgstr "Please enter {number} more characters"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortSingular"
+msgstr "Please enter 1 more character"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "loadMore"
+msgstr "Load more"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "loginHeader"
+msgstr "Login"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "logoutLabel"
+msgstr "Logout"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "name"
+msgstr ""
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "noMatches"
+msgstr "No matches"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel
+msgid "objects"
+msgstr "Objects"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "okLabel"
+msgstr "OK"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "rememberMeLabel"
+msgstr "Remember Me"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "resetButtonLabel"
+msgstr "Reset"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "searching"
+msgstr "Searching..."
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigPlural"
+msgstr "You can only select {limit} items"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigSingular"
+msgstr "You can only select 1 item"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signInButtonLabel"
+msgstr "Sign in"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#title()
+msgid "{num} objects"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "confirmPasswordLabel"
+msgstr "Confirm password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "datatable.no-records-found"
+msgstr "No Records Found"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "editLabel"
+msgstr "Edit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailIsNotAvailable"
+msgstr "The given email is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailPlaceholder"
+msgstr "Enter your email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailPlaceholder"
+msgstr "Enter an email for the new account"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailLabel"
+msgstr "Email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailSentMessage"
+msgstr "An email has been sent to '${email}' for verification."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "forgotPasswordLinkLabel"
+msgstr "Forgot your password?"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeSuccessful"
+msgstr "The password has been changed successfully. You can <a class=\"alert-success\" style=\"text-decoration:underline;\" href=\"${signInUrl}\">login</a> now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeUnsuccessful"
+msgstr "There was a problem while updating the password. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordPlaceholder"
+msgstr "Enter password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetExpiredOrInvalidToken"
+msgstr "You are trying to reset the password for an expired or invalid token"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetHeader"
+msgstr "Forgot password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetSubmitLabel"
+msgstr "Submit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "registerButtonLabel"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "registerHeader"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noSuchUserByEmail"
+msgstr "There is no account with this email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noUserForAnEmailValidToken"
+msgstr "The account seems to be either already deleted or has changed its email address. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signUpButtonLabel"
+msgstr "Don't have an account? Sign up now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "signUpButtonLabel"
+msgstr "Verify email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+msgid "signUpHeader"
+msgstr "Sign Up"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameIsNotAvailable"
+msgstr "The provided username is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernamePlaceholder"
+msgstr "Username"
+
diff --git a/webapp/src/main/webapp/WEB-INF/translations-es.po b/webapp/src/main/webapp/WEB-INF/translations-es.po
new file mode 100644
index 0000000..d519350
--- /dev/null
+++ b/webapp/src/main/webapp/WEB-INF/translations-es.po
@@ -0,0 +1,673 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2016-06-16 15:34:40+\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel(java.lang.String)
+msgid ".csv file name"
+msgstr ""
+
+
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata#$$(java.lang.String)
+msgid ".jdo file name"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
+msgid ".pot file name"
+msgstr "fichero .pot"
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#ACTION
+msgid "Action"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Are you sure?"
+msgstr "¿Estas seguro?"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "AutoLabel.CSS.required"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Cancel"
+msgstr "Cancelar"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#clearHints()
+#: domainapp.dom.simple.SimpleObject#clearHints()
+msgid "Clear Hints"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
+msgid "Clear translation cache"
+msgstr "Limpiar la caché de traducciones"
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#COLLECTION
+msgid "Collection"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsAjaxTablePanelFactory.Table"
+msgstr "Table"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsUnresolvedPanel.Hide"
+msgstr "Hide"
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#COMPLETE
+msgid "Complete"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.config.ConfigurationServiceMenu#configuration()
+msgid "Configuration"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Confirm"
+msgstr "Confirmar"
+
+
+#: domainapp.dom.simple.SimpleObjects#create()
+msgid "Create"
+msgstr "Crear"
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#CURRENT
+msgid "Current"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#delete()
+msgid "Delete"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#downloadJdoMetadata()
+msgid "Download Jdo Metadata"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#downloadLayoutXml()
+#: domainapp.dom.simple.SimpleObject#downloadLayoutXml()
+msgid "Download Layout Xml"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu#downloadLayouts()
+msgid "Download Layouts (XML)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel()
+msgid "Download Meta Model (CSV)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec()
+msgid "Download Swagger Spec"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
+msgid "Download Translations"
+msgstr "Descargar traducciones"
+
+
+#: org.apache.isis.applib.services.dto.Dto_downloadXml#$$(java.lang.String)
+#: org.apache.isis.applib.services.dto.Dto_downloadXsd#$$(java.lang.String,org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas)
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml#$$(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)
+msgid "File name"
+msgstr ""
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Exclamation mark is not allowed"
+msgstr "No se admite el signo de exclamación"
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec(java.lang.String,org.apache.isis.applib.services.swagger.SwaggerService$Visibility,org.apache.isis.applib.services.swagger.SwaggerService$Format)
+msgid "Filename"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#findByName()
+msgid "Find By Name"
+msgstr "Buscar por Nombre"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
+msgid "Fixture script"
+msgstr "Script de Instalación"
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#friendlyName
+#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
+msgid "Friendly Name"
+msgstr "Nombre común"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "General"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageService#homePage()
+msgid "Home Page"
+msgstr "Página de Inicio"
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusIdLong()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong#$$()
+msgid "Id"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT
+msgid "Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT_ARE_YOU_SURE
+msgid "Idempotent Are You Sure"
+msgstr "¿Estas seguro?"
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#IGNORE
+msgid "Ignore"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#INCLUDE
+msgid "Include"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#JSON
+msgid "Json"
+msgstr "JSON"
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#key
+msgid "Key"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#listAll()
+msgid "List All"
+msgstr "Listar Todos"
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
+msgid "Lookup"
+msgstr "Buscar"
+
+
+#: domainapp.dom.simple.SimpleObject
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml
+#: org.apache.isis.applib.services.layout.Object_rebuildMetamodel
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata
+#: org.apache.isis.viewer.wicket.viewer.services.Object_clearHints
+msgid "Metadata"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#MINIMAL
+msgid "Minimal"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+#: domainapp.dom.simple.SimpleObject#name
+#: domainapp.dom.simple.SimpleObject#updateName(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#create(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#findByName(java.lang.String)
+msgid "Name"
+msgstr "Nombre"
+
+
+#: org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureFactory#newApplicationFeature()
+msgid "New Application Feature"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT
+msgid "Non Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT_ARE_YOU_SURE
+msgid "Non Idempotent Are You Sure"
+msgstr "¿Estas seguro?"
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#NORMALIZED
+msgid "Normalized"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#number
+msgid "Number"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
+msgid "Object"
+msgstr "Objeto"
+
+
+#: domainapp.dom.simple.SimpleObject#title()
+msgid "Object: {name}"
+msgstr "Objeto: {name}"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#objects
+msgid "Objects"
+msgstr "Objetos"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Parameters"
+msgstr "Parámetros"
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE
+msgid "Private"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE_WITH_PROTOTYPING
+msgid "Private With Prototyping"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#PROPERTY
+msgid "Property"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
+msgid "Prototyping"
+msgstr "Prototipo"
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PUBLIC
+msgid "Public"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#rebuildMetamodel()
+#: domainapp.dom.simple.SimpleObject#rebuildMetamodel()
+msgid "Rebuild Metamodel"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#recreateObjectsAndReturnFirst()
+msgid "Recreate Objects And Return First"
+msgstr "Recrear Objetos y Devolver el Primero"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#object
+msgid "Result"
+msgstr "Resultado"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#name
+msgid "Result class"
+msgstr "Clase del resultado"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#key
+msgid "Result key"
+msgstr "Clave del Resultado"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete()
+msgid "Run Fixture Script"
+msgstr "Ejecutar Script de Instalación"
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE
+msgid "Safe"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE_AND_REQUEST_CACHEABLE
+msgid "Safe And Request Cacheable"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects
+#: org.apache.isis.applib.fixturescripts.FixtureScript
+msgid "Script"
+msgstr "Script"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Script-specific parameters (if any).  The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
+msgstr "Parámetros específicos del Script (si hay alguno). El formato depende de la implementación del script (por ejemplo, clave=valor, CSV, JSON, XML, etc.)"
+
+
+#: domainapp.dom.simple.SimpleObjects#title()
+msgid "Simple Objects"
+msgstr "Objetos básicos"
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
+msgid "Switch To Reading Translations"
+msgstr "Cambiar a Lectura de Traducciones"
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
+msgid "Switch To Writing Translations"
+msgstr "Cambiar a Escritura de Traducciones"
+
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Update Name"
+msgstr "Nombre de la Actualización"
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#value
+msgid "Value"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionLong()
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionTimestamp()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong#$$()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp#$$()
+msgid "Version"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#YAML
+msgid "Yaml"
+msgstr "YAML"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "aboutLabel"
+msgstr "About"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "cancelLabel"
+msgstr "Cancel"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "datanucleusIdLong"
+msgstr "Id"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortPlural"
+msgstr "Please enter {number} more characters"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortSingular"
+msgstr "Please enter 1 more character"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "loadMore"
+msgstr "Load more"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "loginHeader"
+msgstr "Login"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "logoutLabel"
+msgstr "Logout"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "name"
+msgstr ""
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "noMatches"
+msgstr "No matches"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel
+msgid "objects"
+msgstr "Objects"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "okLabel"
+msgstr "OK"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "rememberMeLabel"
+msgstr "Remember Me"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "resetButtonLabel"
+msgstr "Reset"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "searching"
+msgstr "Searching..."
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigPlural"
+msgstr "You can only select {limit} items"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigSingular"
+msgstr "You can only select 1 item"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signInButtonLabel"
+msgstr "Sign in"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#title()
+msgid "{num} objects"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "confirmPasswordLabel"
+msgstr "Confirm password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "datatable.no-records-found"
+msgstr "No Records Found"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "editLabel"
+msgstr "Edit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailIsNotAvailable"
+msgstr "The given email is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailPlaceholder"
+msgstr "Enter your email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailPlaceholder"
+msgstr "Enter an email for the new account"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailLabel"
+msgstr "Email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailSentMessage"
+msgstr "An email has been sent to '${email}' for verification."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "forgotPasswordLinkLabel"
+msgstr "Forgot your password?"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeSuccessful"
+msgstr "The password has been changed successfully. You can <a class=\"alert-success\" style=\"text-decoration:underline;\" href=\"${signInUrl}\">login</a> now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeUnsuccessful"
+msgstr "There was a problem while updating the password. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordPlaceholder"
+msgstr "Enter password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetExpiredOrInvalidToken"
+msgstr "You are trying to reset the password for an expired or invalid token"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetHeader"
+msgstr "Forgot password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetSubmitLabel"
+msgstr "Submit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "registerButtonLabel"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "registerHeader"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noSuchUserByEmail"
+msgstr "There is no account with this email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noUserForAnEmailValidToken"
+msgstr "The account seems to be either already deleted or has changed its email address. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signUpButtonLabel"
+msgstr "Don't have an account? Sign up now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "signUpButtonLabel"
+msgstr "Verify email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+msgid "signUpHeader"
+msgstr "Sign Up"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameIsNotAvailable"
+msgstr "The provided username is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernamePlaceholder"
+msgstr "Username"
+
diff --git a/webapp/src/main/webapp/WEB-INF/translations-nl.po b/webapp/src/main/webapp/WEB-INF/translations-nl.po
new file mode 100644
index 0000000..af4babf
--- /dev/null
+++ b/webapp/src/main/webapp/WEB-INF/translations-nl.po
@@ -0,0 +1,674 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2016-06-16 15:34:40+\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel(java.lang.String)
+msgid ".csv file name"
+msgstr ""
+
+
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata#$$(java.lang.String)
+msgid ".jdo file name"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
+msgid ".pot file name"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#ACTION
+msgid "Action"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Are you sure?"
+msgstr "Weet je het zeker?"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "AutoLabel.CSS.required"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Cancel"
+msgstr "Annuleer"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#clearHints()
+#: domainapp.dom.simple.SimpleObject#clearHints()
+msgid "Clear Hints"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
+msgid "Clear translation cache"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#COLLECTION
+msgid "Collection"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsAjaxTablePanelFactory.Table"
+msgstr "Table"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsUnresolvedPanel.Hide"
+msgstr "Hide"
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#COMPLETE
+msgid "Complete"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.config.ConfigurationServiceMenu#configuration()
+msgid "Configuration"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Confirm"
+msgstr "Bevestigen"
+
+
+#: domainapp.dom.simple.SimpleObjects#create()
+msgid "Create"
+msgstr "Creëren"
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#CURRENT
+msgid "Current"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#delete()
+msgid "Delete"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#downloadJdoMetadata()
+msgid "Download Jdo Metadata"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#downloadLayoutXml()
+#: domainapp.dom.simple.SimpleObject#downloadLayoutXml()
+msgid "Download Layout Xml"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu#downloadLayouts()
+msgid "Download Layouts (XML)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel()
+msgid "Download Meta Model (CSV)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec()
+msgid "Download Swagger Spec"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
+msgid "Download Translations"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.dto.Dto_downloadXml#$$(java.lang.String)
+#: org.apache.isis.applib.services.dto.Dto_downloadXsd#$$(java.lang.String,org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas)
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml#$$(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)
+msgid "File name"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Exclamation mark is not allowed"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec(java.lang.String,org.apache.isis.applib.services.swagger.SwaggerService$Visibility,org.apache.isis.applib.services.swagger.SwaggerService$Format)
+msgid "Filename"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#findByName()
+msgid "Find By Name"
+msgstr "Zoek op Naam"
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
+msgid "Fixture script"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#friendlyName
+#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
+msgid "Friendly Name"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "General"
+msgstr "Algemeen"
+
+
+#: domainapp.app.services.homepage.HomePageService#homePage()
+msgid "Home Page"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusIdLong()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong#$$()
+msgid "Id"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT
+msgid "Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT_ARE_YOU_SURE
+msgid "Idempotent Are You Sure"
+msgstr "Weet je het zeker?"
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#IGNORE
+msgid "Ignore"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#INCLUDE
+msgid "Include"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#JSON
+msgid "Json"
+msgstr "JSON"
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#key
+msgid "Key"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#listAll()
+msgid "List All"
+msgstr "Lijst Alle"
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
+msgid "Lookup"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml
+#: org.apache.isis.applib.services.layout.Object_rebuildMetamodel
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata
+#: org.apache.isis.viewer.wicket.viewer.services.Object_clearHints
+msgid "Metadata"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#MINIMAL
+msgid "Minimal"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+#: domainapp.dom.simple.SimpleObject#name
+#: domainapp.dom.simple.SimpleObject#updateName(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#create(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#findByName(java.lang.String)
+msgid "Name"
+msgstr "Naam"
+
+
+#: org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureFactory#newApplicationFeature()
+msgid "New Application Feature"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT
+msgid "Non Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT_ARE_YOU_SURE
+msgid "Non Idempotent Are You Sure"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#NORMALIZED
+msgid "Normalized"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#number
+msgid "Number"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
+msgid "Object"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#title()
+msgid "Object: {name}"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#objects
+msgid "Objects"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Parameters"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE
+msgid "Private"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE_WITH_PROTOTYPING
+msgid "Private With Prototyping"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#PROPERTY
+msgid "Property"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
+msgid "Prototyping"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PUBLIC
+msgid "Public"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#rebuildMetamodel()
+#: domainapp.dom.simple.SimpleObject#rebuildMetamodel()
+msgid "Rebuild Metamodel"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#recreateObjectsAndReturnFirst()
+msgid "Recreate Objects And Return First"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#object
+msgid "Result"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#className
+msgid "Result class"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#key
+msgid "Result key"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete()
+msgid "Run Fixture Script"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE
+msgid "Safe"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE_AND_REQUEST_CACHEABLE
+msgid "Safe And Request Cacheable"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects
+#: org.apache.isis.applib.fixturescripts.FixtureScript
+msgid "Script"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Script-specific parameters (if any).  The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#title()
+msgid "Simple Objects"
+msgstr "Eenvoudige Objecten"
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
+msgid "Switch To Reading Translations"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
+msgid "Switch To Writing Translations"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Update Name"
+msgstr "Updaten Naam"
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#value
+msgid "Value"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionLong()
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionTimestamp()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong#$$()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp#$$()
+msgid "Version"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#YAML
+msgid "Yaml"
+msgstr "YAML"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "aboutLabel"
+msgstr "About"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "cancelLabel"
+msgstr "Cancel"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "datanucleusIdLong"
+msgstr "Id"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortPlural"
+msgstr "Please enter {number} more characters"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortSingular"
+msgstr "Please enter 1 more character"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "loadMore"
+msgstr "Load more"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "loginHeader"
+msgstr "Login"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "logoutLabel"
+msgstr "Logout"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "name"
+msgstr ""
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "noMatches"
+msgstr "No matches"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel
+msgid "objects"
+msgstr "Objects"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "okLabel"
+msgstr "OK"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "rememberMeLabel"
+msgstr "Remember Me"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "resetButtonLabel"
+msgstr "Reset"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "searching"
+msgstr "Searching..."
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigPlural"
+msgstr "You can only select {limit} items"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigSingular"
+msgstr "You can only select 1 item"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signInButtonLabel"
+msgstr "Sign in"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#title()
+msgid "{num} objects"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "confirmPasswordLabel"
+msgstr "Confirm password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "datatable.no-records-found"
+msgstr "No Records Found"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "editLabel"
+msgstr "Edit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailIsNotAvailable"
+msgstr "The given email is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailPlaceholder"
+msgstr "Enter your email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailPlaceholder"
+msgstr "Enter an email for the new account"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailLabel"
+msgstr "Email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailSentMessage"
+msgstr "An email has been sent to '${email}' for verification."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "forgotPasswordLinkLabel"
+msgstr "Forgot your password?"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeSuccessful"
+msgstr "The password has been changed successfully. You can <a class=\"alert-success\" style=\"text-decoration:underline;\" href=\"${signInUrl}\">login</a> now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeUnsuccessful"
+msgstr "There was a problem while updating the password. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordPlaceholder"
+msgstr "Enter password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetExpiredOrInvalidToken"
+msgstr "You are trying to reset the password for an expired or invalid token"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetHeader"
+msgstr "Forgot password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetSubmitLabel"
+msgstr "Submit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "registerButtonLabel"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "registerHeader"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noSuchUserByEmail"
+msgstr "There is no account with this email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noUserForAnEmailValidToken"
+msgstr "The account seems to be either already deleted or has changed its email address. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signUpButtonLabel"
+msgstr "Don't have an account? Sign up now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "signUpButtonLabel"
+msgstr "Verify email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+msgid "signUpHeader"
+msgstr "Sign Up"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameIsNotAvailable"
+msgstr "The provided username is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernamePlaceholder"
+msgstr "Username"
+
diff --git a/webapp/src/main/webapp/WEB-INF/translations.po b/webapp/src/main/webapp/WEB-INF/translations.po
new file mode 100644
index 0000000..adae60c
--- /dev/null
+++ b/webapp/src/main/webapp/WEB-INF/translations.po
@@ -0,0 +1,673 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"POT-Creation-Date: 2016-06-16 15:34:40+\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel(java.lang.String)
+msgid ".csv file name"
+msgstr ""
+
+
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata#$$(java.lang.String)
+msgid ".jdo file name"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations(java.lang.String)
+msgid ".pot file name"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#ACTION
+msgid "Action"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Are you sure?"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "AutoLabel.CSS.required"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Cancel"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#clearHints()
+#: domainapp.dom.simple.SimpleObject#clearHints()
+msgid "Clear Hints"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#resetTranslationCache()
+msgid "Clear translation cache"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#COLLECTION
+msgid "Collection"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsAjaxTablePanelFactory.Table"
+msgstr "Table"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "CollectionContentsAsUnresolvedPanel.Hide"
+msgstr "Hide"
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#COMPLETE
+msgid "Complete"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.config.ConfigurationServiceMenu#configuration()
+msgid "Configuration"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.system.session.IsisSessionFactoryBuilder
+msgid "Confirm"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#create()
+msgid "Create"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#CURRENT
+msgid "Current"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#delete()
+msgid "Delete"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#downloadJdoMetadata()
+msgid "Download Jdo Metadata"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#downloadLayoutXml()
+#: domainapp.dom.simple.SimpleObject#downloadLayoutXml()
+msgid "Download Layout Xml"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu#downloadLayouts()
+msgid "Download Layouts (XML)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu#downloadMetaModel()
+msgid "Download Meta Model (CSV)"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec()
+msgid "Download Swagger Spec"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#downloadTranslations()
+msgid "Download Translations"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.dto.Dto_downloadXml#$$(java.lang.String)
+#: org.apache.isis.applib.services.dto.Dto_downloadXsd#$$(java.lang.String,org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas)
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml#$$(java.lang.String,org.apache.isis.applib.services.layout.LayoutService$Style)
+msgid "File name"
+msgstr ""
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Exclamation mark is not allowed"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu#downloadSwaggerSpec(java.lang.String,org.apache.isis.applib.services.swagger.SwaggerService$Visibility,org.apache.isis.applib.services.swagger.SwaggerService$Format)
+msgid "Filename"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#findByName()
+msgid "Find By Name"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#fixtureScriptClassName
+msgid "Fixture script"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#friendlyName
+#: org.apache.isis.applib.fixturescripts.FixtureScript#friendlyName
+msgid "Friendly Name"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "General"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageService#homePage()
+msgid "Home Page"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusIdLong()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong#$$()
+msgid "Id"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT
+msgid "Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#IDEMPOTENT_ARE_YOU_SURE
+msgid "Idempotent Are You Sure"
+msgstr "Are you sure?"
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#IGNORE
+msgid "Ignore"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.jaxb.JaxbService$IsisSchemas#INCLUDE
+msgid "Include"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#JSON
+msgid "Json"
+msgstr "JSON"
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#key
+msgid "Key"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#listAll()
+msgid "List All"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderActionContributions#lookup()
+msgid "Lookup"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+#: org.apache.isis.applib.services.layout.Object_downloadLayoutXml
+#: org.apache.isis.applib.services.layout.Object_rebuildMetamodel
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata
+#: org.apache.isis.viewer.wicket.viewer.services.Object_clearHints
+msgid "Metadata"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#MINIMAL
+msgid "Minimal"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject
+#: domainapp.dom.simple.SimpleObject#name
+#: domainapp.dom.simple.SimpleObject#updateName(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#create(java.lang.String)
+#: domainapp.dom.simple.SimpleObjects#findByName(java.lang.String)
+msgid "Name"
+msgstr ""
+
+
+#: org.apache.isis.core.metamodel.services.appfeat.ApplicationFeatureFactory#newApplicationFeature()
+msgid "New Application Feature"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT
+msgid "Non Idempotent"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#NON_IDEMPOTENT_ARE_YOU_SURE
+msgid "Non Idempotent Are You Sure"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.layout.LayoutService$Style#NORMALIZED
+msgid "Normalized"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects#number
+msgid "Number"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.bookmark.BookmarkHolderAssociationContributions#object()
+msgid "Object"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#title()
+msgid "Object: {name}"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#objects
+msgid "Objects"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Parameters"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE
+msgid "Private"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PRIVATE_WITH_PROTOTYPING
+msgid "Private With Prototyping"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.appfeat.ApplicationMemberType#PROPERTY
+msgid "Property"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault
+#: org.apache.isis.applib.services.layout.LayoutServiceMenu
+#: org.apache.isis.applib.services.metamodel.MetaModelServicesMenu
+#: org.apache.isis.applib.services.swagger.SwaggerServiceMenu
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu
+msgid "Prototyping"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Visibility#PUBLIC
+msgid "Public"
+msgstr ""
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#rebuildMetamodel()
+#: domainapp.dom.simple.SimpleObject#rebuildMetamodel()
+msgid "Rebuild Metamodel"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#recreateObjectsAndReturnFirst()
+msgid "Recreate Objects And Return First"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#object
+msgid "Result"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#className
+msgid "Result class"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureResult#key
+msgid "Result key"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript()
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete()
+msgid "Run Fixture Script"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE
+msgid "Safe"
+msgstr ""
+
+
+#: org.apache.isis.applib.annotation.SemanticsOf#SAFE_AND_REQUEST_CACHEABLE
+msgid "Safe And Request Cacheable"
+msgstr ""
+
+
+#: domainapp.fixture.scenarios.RecreateSimpleObjects
+#: org.apache.isis.applib.fixturescripts.FixtureScript
+msgid "Script"
+msgstr ""
+
+
+#: org.apache.isis.applib.fixturescripts.FixtureScripts#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScript(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+#: org.apache.isis.applib.services.fixturespec.FixtureScriptsDefault#runFixtureScriptWithAutoComplete(org.apache.isis.applib.fixturescripts.FixtureScript,java.lang.String)
+msgid "Script-specific parameters (if any).  The format depends on the script implementation (eg key=value, CSV, JSON, XML etc)"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObjects#title()
+msgid "Simple Objects"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToReadingTranslations()
+msgid "Switch To Reading Translations"
+msgstr ""
+
+
+#: org.apache.isis.core.runtime.services.i18n.po.TranslationServicePoMenu#switchToWritingTranslations()
+msgid "Switch To Writing Translations"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#updateName()
+msgid "Update Name"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.config.ConfigurationProperty#value
+msgid "Value"
+msgstr ""
+
+
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionLong()
+#: domainapp.dom.simple.SimpleObject#datanucleusVersionTimestamp()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong#$$()
+#: org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp#$$()
+msgid "Version"
+msgstr ""
+
+
+#: org.apache.isis.applib.services.swagger.SwaggerService$Format#YAML
+msgid "Yaml"
+msgstr "YAML"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "aboutLabel"
+msgstr "About"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "cancelLabel"
+msgstr "Cancel"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "datanucleusIdLong"
+msgstr "Id"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortPlural"
+msgstr "Please enter {number} more characters"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "inputTooShortSingular"
+msgstr "Please enter 1 more character"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "loadMore"
+msgstr "Load more"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "loginHeader"
+msgstr "Login"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "logoutLabel"
+msgstr "Logout"
+
+
+#: domainapp.dom.simple.SimpleObject
+msgid "name"
+msgstr ""
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "noMatches"
+msgstr "No matches"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel
+msgid "objects"
+msgstr "Objects"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "okLabel"
+msgstr "OK"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "rememberMeLabel"
+msgstr "Remember Me"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "resetButtonLabel"
+msgstr "Reset"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "searching"
+msgstr "Searching..."
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigPlural"
+msgstr "You can only select {limit} items"
+
+
+#: org.wicketstuff.select2.Select2Choice
+msgid "selectionTooBigSingular"
+msgstr "You can only select 1 item"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signInButtonLabel"
+msgstr "Sign in"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: domainapp.app.services.homepage.HomePageViewModel#title()
+msgid "{num} objects"
+msgstr ""
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "confirmPasswordLabel"
+msgstr "Confirm password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "datatable.no-records-found"
+msgstr "No Records Found"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.entity.EntityPage
+msgid "editLabel"
+msgstr "Edit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailIsNotAvailable"
+msgstr "The given email is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailPlaceholder"
+msgstr "Enter your email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "emailPlaceholder"
+msgstr "Enter an email for the new account"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailLabel"
+msgstr "Email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "emailSentMessage"
+msgstr "An email has been sent to '${email}' for verification."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "forgotPasswordLinkLabel"
+msgstr "Forgot your password?"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeSuccessful"
+msgstr "The password has been changed successfully. You can <a class=\"alert-success\" style=\"text-decoration:underline;\" href=\"${signInUrl}\">login</a> now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordChangeUnsuccessful"
+msgstr "There was a problem while updating the password. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordLabel"
+msgstr "Password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordPlaceholder"
+msgstr "Enter password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetExpiredOrInvalidToken"
+msgstr "You are trying to reset the password for an expired or invalid token"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetHeader"
+msgstr "Forgot password"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "passwordResetSubmitLabel"
+msgstr "Submit"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "registerButtonLabel"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+msgid "registerHeader"
+msgstr "Register"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noSuchUserByEmail"
+msgstr "There is no account with this email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "noUserForAnEmailValidToken"
+msgstr "The account seems to be either already deleted or has changed its email address. Please try again."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+msgid "signUpButtonLabel"
+msgstr "Don't have an account? Sign up now."
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "signUpButtonLabel"
+msgstr "Verify email"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+msgid "signUpHeader"
+msgstr "Sign Up"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameIsNotAvailable"
+msgstr "The provided username is already in use"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernameLabel"
+msgstr "Username"
+
+
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.signup.RegistrationFormPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.register.RegisterPage
+#: org.apache.isis.viewer.wicket.ui.pages.login.WicketSignInPage
+#: org.apache.isis.viewer.wicket.ui.pages.accmngt.password_reset.PasswordResetPage
+msgid "usernamePlaceholder"
+msgstr "Username"
+
diff --git a/webapp/src/main/webapp/WEB-INF/web.xml b/webapp/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000..fc6da0b
--- /dev/null
+++ b/webapp/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+  
+         http://www.apache.org/licenses/LICENSE-2.0
+         
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
+	id="WebApp_ID" version="3.1"> 
+
+    <display-name>Simple App</display-name>
+
+</web-app>
diff --git a/webapp/src/test/java/domain/webapp/lockdown/.gitignore b/webapp/src/test/java/domain/webapp/lockdown/.gitignore
new file mode 100644
index 0000000..e66bc56
--- /dev/null
+++ b/webapp/src/test/java/domain/webapp/lockdown/.gitignore
@@ -0,0 +1 @@
+*.received.txt
\ No newline at end of file
diff --git a/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.java b/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.java
new file mode 100644
index 0000000..600ce9e
--- /dev/null
+++ b/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.java
@@ -0,0 +1,50 @@
+package domain.webapp.lockdown;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Arrays;
+
+import org.approvaltests.Approvals;
+import org.approvaltests.reporters.DiffReporter;
+import org.approvaltests.reporters.UseReporter;
+import org.assertj.core.api.Assumptions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import com.google.common.base.Charsets;
+import com.google.common.io.Resources;
+
+import static org.hamcrest.CoreMatchers.*;
+
+public class LockDownMavenDeps_Test {
+
+    @BeforeEach
+    public void setUp() throws Exception {
+        Assumptions.assumeThat(System.getProperty("lockdown")).isNotNull();
+    }
+
+    @UseReporter(DiffReporter.class)
+    @Test
+    public void list() throws Exception {
+        Approvals.verify(sort(read("list")));
+    }
+
+    @UseReporter(DiffReporter.class)
+    @Test
+    public void tree() throws Exception {
+        Approvals.verify(read("tree"));
+    }
+
+    private String read(final String goal) throws IOException {
+        final URL resource = Resources.getResource(getClass(),
+                String.format("%s.%s.actual.txt", getClass().getSimpleName(), goal));
+        return Resources.toString(resource, Charsets.UTF_8);
+    }
+
+    private static String sort(final String unsorted) {
+        final String[] lines = unsorted.split("[\r\n]+");
+        Arrays.sort(lines);
+        return String.join("\n", lines);
+    }
+
+}
diff --git a/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.list.approved.txt b/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.list.approved.txt
new file mode 100644
index 0000000..fc40d79
--- /dev/null
+++ b/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.list.approved.txt
@@ -0,0 +1,225 @@
+
+   args4j:args4j:jar:2.0.26:compile
+   cglib:cglib-nodep:jar:3.2.12:compile
+   cglib:cglib:jar:3.2.8:runtime
+   com.approvaltests:approvaltests-util:jar:4.0.2:test
+   com.approvaltests:approvaltests:jar:4.0.2:test
+   com.fasterxml.jackson.core:jackson-annotations:jar:2.10.0:compile
+   com.fasterxml.jackson.core:jackson-core:jar:2.10.0:compile
+   com.fasterxml.jackson.core:jackson-databind:jar:2.10.0:compile
+   com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.10.0:compile
+   com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.10.0:compile
+   com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.10.0:compile
+   com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.10.0:compile
+   com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.10.0:compile
+   com.fasterxml:classmate:jar:1.5.1:compile
+   com.github.openjson:openjson:jar:1.0.10:compile
+   com.google.code.findbugs:annotations:jar:2.0.1:compile
+   com.google.code.findbugs:jsr305:jar:3.0.2:compile
+   com.google.code.gson:gson:jar:2.8.6:compile
+   com.google.errorprone:error_prone_annotations:jar:2.3.2:compile
+   com.google.guava:failureaccess:jar:1.0.1:compile
+   com.google.guava:guava:jar:28.1-jre:compile
+   com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
+   com.google.j2objc:j2objc-annotations:jar:1.3:compile
+   com.google.javascript:closure-compiler-externs:jar:v20190325:compile
+   com.google.javascript:closure-compiler-unshaded:jar:v20190325:compile
+   com.google.jsinterop:jsinterop-annotations:jar:1.0.0:compile
+   com.h2database:h2:jar:1.4.200:compile
+   com.jayway.jsonpath:json-path:jar:2.4.0:compile
+   com.sun.mail:javax.mail:jar:1.6.0:compile
+   com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:compile
+   commons-beanutils:commons-beanutils:jar:1.9.3:compile
+   commons-codec:commons-codec:jar:1.13:compile
+   commons-collections:commons-collections:jar:3.2.2:compile
+   commons-fileupload:commons-fileupload:jar:1.4:compile
+   commons-io:commons-io:jar:2.6:compile
+   commons-logging:commons-logging:jar:1.2:compile
+   de.agilecoders.wicket.webjars:wicket-webjars:jar:2.0.15:compile
+   de.agilecoders.wicket:jquery-selectors:jar:2.0.7:compile
+   de.agilecoders.wicket:wicket-bootstrap-core:jar:2.0.11:compile
+   de.agilecoders.wicket:wicket-bootstrap-extensions:jar:2.0.11:compile
+   de.agilecoders.wicket:wicket-bootstrap-themes:jar:2.0.11:compile
+   io.cucumber:cucumber-core:jar:4.8.0:compile
+   io.cucumber:cucumber-expressions:jar:7.0.2:compile
+   io.cucumber:cucumber-java:jar:4.8.0:compile
+   io.cucumber:cucumber-junit:jar:4.8.0:compile
+   io.cucumber:cucumber-spring:jar:4.8.0:compile
+   io.cucumber:datatable-dependencies:jar:1.1.14:compile
+   io.cucumber:datatable:jar:1.1.14:compile
+   io.cucumber:gherkin:jar:5.1.0:compile
+   io.cucumber:tag-expressions:jar:1.1.1:compile
+   io.swagger:swagger-annotations:jar:1.5.21:compile
+   io.swagger:swagger-core:jar:1.5.21:compile
+   io.swagger:swagger-models:jar:1.5.21:compile
+   jakarta.activation:jakarta.activation-api:jar:1.2.1:compile
+   jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
+   jakarta.validation:jakarta.validation-api:jar:2.0.1:compile
+   jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.2:compile
+   javax.activation:activation:jar:1.1:compile
+   javax.inject:javax.inject:jar:1:compile
+   javax.json.bind:javax.json.bind-api:jar:1.0:compile
+   javax.transaction:transaction-api:jar:1.1:compile
+   javax:javaee-api:jar:8.0:compile
+   joda-time:joda-time:jar:2.10.5:compile
+   junit:junit:jar:4.12:compile
+   net.bytebuddy:byte-buddy:jar:1.10.2:compile
+   net.ftlines.wicket-source:wicket-source:jar:7.0.0:compile
+   net.jcip:jcip-annotations:jar:1.0:compile
+   net.minidev:accessors-smart:jar:1.2:compile
+   net.minidev:json-smart:jar:2.3:compile
+   org.apache-extras.beanshell:bsh:jar:2.0b6:compile
+   org.apache.commons:commons-collections4:jar:4.3:compile
+   org.apache.commons:commons-email:jar:1.4:compile
+   org.apache.commons:commons-lang3:jar:3.9:compile
+   org.apache.httpcomponents:httpclient:jar:4.5.10:compile
+   org.apache.httpcomponents:httpcore:jar:4.4.12:compile
+   org.apache.isis.core:isis-applib:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-codegen-bytebuddy:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-commons:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-config:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-integtestsupport:jar:2.0.0-M3-SNAPSHOT:test
+   org.apache.isis.core:isis-metamodel:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-persistence-jdo-common:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-persistence-jdo-datanucleus5:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-runtime-extensions:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-runtime-services:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-runtime-web:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-runtime:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-schema:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-security-bypass:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-security-keycloak:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-security-shiro:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-security:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-unittestsupport:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-viewer-restfulobjects-applib:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-viewer-restfulobjects-jaxrsresteasy4:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-viewer-restfulobjects-rendering:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-viewer-restfulobjects-server:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-viewer-wicket-impl:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-viewer-wicket-model:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.core:isis-viewer-wicket-ui:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.examples.apps:simpleapp-application:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.examples.apps:simpleapp-module-simple:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.extensions:isis-extensions-fixtures:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.extensions:isis-extensions-specsupport:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.extensions:isis-extensions-spring:jar:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.mavendeps:isis-mavendeps-jdk11:pom:2.0.0-M3-SNAPSHOT:compile
+   org.apache.isis.mavendeps:isis-mavendeps-testing:pom:2.0.0-M3-SNAPSHOT:test
+   org.apache.isis.mavendeps:isis-mavendeps-webapp:pom:2.0.0-M3-SNAPSHOT:compile
+   org.apache.logging.log4j:log4j-api:jar:2.12.1:compile
+   org.apache.logging.log4j:log4j-core:jar:2.12.1:compile
+   org.apache.logging.log4j:log4j-jul:jar:2.12.1:compile
+   org.apache.logging.log4j:log4j-slf4j-impl:jar:2.12.1:compile
+   org.apache.shiro:shiro-cache:jar:1.4.1:compile
+   org.apache.shiro:shiro-config-core:jar:1.4.1:compile
+   org.apache.shiro:shiro-config-ogdl:jar:1.4.1:compile
+   org.apache.shiro:shiro-core:jar:1.4.1:compile
+   org.apache.shiro:shiro-crypto-cipher:jar:1.4.1:compile
+   org.apache.shiro:shiro-crypto-core:jar:1.4.1:compile
+   org.apache.shiro:shiro-crypto-hash:jar:1.4.1:compile
+   org.apache.shiro:shiro-event:jar:1.4.1:compile
+   org.apache.shiro:shiro-lang:jar:1.4.1:compile
+   org.apache.shiro:shiro-web:jar:1.4.1:compile
+   org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.27:compile
+   org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.27:compile
+   org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.27:compile
+   org.apache.wicket:wicket-auth-roles:jar:8.6.1:compile
+   org.apache.wicket:wicket-core:jar:8.6.1:compile
+   org.apache.wicket:wicket-devutils:jar:8.6.1:compile
+   org.apache.wicket:wicket-extensions:jar:8.6.1:compile
+   org.apache.wicket:wicket-ioc:jar:8.6.1:compile
+   org.apache.wicket:wicket-request:jar:8.6.1:compile
+   org.apache.wicket:wicket-spring:jar:8.6.1:compile
+   org.apache.wicket:wicket-util:jar:8.6.1:compile
+   org.apache.wicket:wicket:pom:8.6.1:compile
+   org.apiguardian:apiguardian-api:jar:1.1.0:compile
+   org.assertj:assertj-core:jar:3.13.2:compile
+   org.checkerframework:checker-qual:jar:2.8.1:compile
+   org.codehaus.jackson:jackson-core-asl:jar:1.9.13:compile
+   org.codehaus.jackson:jackson-jaxrs:jar:1.9.13:compile
+   org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13:compile
+   org.codehaus.jackson:jackson-xc:jar:1.9.13:compile
+   org.codehaus.mojo:animal-sniffer-annotations:jar:1.18:compile
+   org.danekja:jdk-serializable-functional:jar:1.8.5:compile
+   org.datanucleus:datanucleus-api-jdo:jar:5.2.2:compile
+   org.datanucleus:datanucleus-core:jar:5.2.2:compile
+   org.datanucleus:datanucleus-jdo-query:jar:5.0.9:compile
+   org.datanucleus:datanucleus-jodatime:jar:5.2.0-release:compile
+   org.datanucleus:datanucleus-rdbms:jar:5.2.1:compile
+   org.datanucleus:javax.jdo:jar:3.2.0-m12:compile
+   org.hamcrest:hamcrest-core:jar:2.1:compile
+   org.hamcrest:hamcrest-library:jar:2.1:compile
+   org.hamcrest:hamcrest:jar:2.1:compile
+   org.hibernate.validator:hibernate-validator:jar:6.0.18.Final:compile
+   org.hsqldb:hsqldb:jar:2.5.0:test
+   org.jboss.logging:jboss-logging:jar:3.4.1.Final:compile
+   org.jboss.resteasy:resteasy-jackson-provider:jar:4.0.0.Beta5:compile
+   org.jboss.resteasy:resteasy-jaxb-provider:jar:4.0.0.Beta5:compile
+   org.jboss.resteasy:resteasy-jaxrs-services:jar:4.0.0.Beta5:compile
+   org.jboss.resteasy:resteasy-jaxrs:jar:4.0.0.Beta5:compile
+   org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:jar:1.0.0.Final:compile
+   org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec:jar:1.0.1.Final:compile
+   org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:jar:1.0.0.Final:compile
+   org.jmock:jmock-imposters:jar:2.11.0:runtime
+   org.jmock:jmock-junit4:jar:2.11.0:compile
+   org.jmock:jmock-legacy:jar:2.11.0:runtime
+   org.jmock:jmock-testjar:jar:2.11.0:compile
+   org.jmock:jmock:jar:2.11.0:compile
+   org.junit.jupiter:junit-jupiter-api:jar:5.5.2:compile
+   org.junit.jupiter:junit-jupiter-engine:jar:5.5.2:compile
+   org.junit.jupiter:junit-jupiter-params:jar:5.5.2:compile
+   org.junit.jupiter:junit-jupiter:jar:5.5.2:compile
+   org.junit.platform:junit-platform-commons:jar:1.5.2:compile
+   org.junit.platform:junit-platform-engine:jar:1.5.2:compile
+   org.junit.vintage:junit-vintage-engine:jar:5.5.2:compile
+   org.mockito:mockito-core:jar:3.1.0:compile
+   org.mockito:mockito-junit-jupiter:jar:3.1.0:compile
+   org.objenesis:objenesis:jar:2.2:compile
+   org.opentest4j:opentest4j:jar:1.2.0:compile
+   org.ow2.asm:asm-analysis:jar:7.1:compile
+   org.ow2.asm:asm-tree:jar:7.1:compile
+   org.ow2.asm:asm-util:jar:7.1:compile
+   org.picocontainer:picocontainer:jar:2.15:compile
+   org.projectlombok:lombok:jar:1.18.10:provided
+   org.reactivestreams:reactive-streams:jar:1.0.3:compile
+   org.skyscreamer:jsonassert:jar:1.5.0:compile
+   org.slf4j:jul-to-slf4j:jar:1.7.29:compile
+   org.slf4j:slf4j-api:jar:1.7.29:compile
+   org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.2.1.RELEASE:compile
+   org.springframework.boot:spring-boot-actuator:jar:2.2.1.RELEASE:compile
+   org.springframework.boot:spring-boot-autoconfigure:jar:2.2.1.RELEASE:compile
+   org.springframework.boot:spring-boot-starter-json:jar:2.2.1.RELEASE:compile
+   org.springframework.boot:spring-boot-starter-log4j2:jar:2.2.1.RELEASE:compile
+   org.springframework.boot:spring-boot-starter-test:jar:2.2.1.RELEASE:compile
+   org.springframework.boot:spring-boot-starter-tomcat:jar:2.2.1.RELEASE:compile
+   org.springframework.boot:spring-boot-starter-validation:jar:2.2.1.RELEASE:compile
+   org.springframework.boot:spring-boot-starter-web:jar:2.2.1.RELEASE:compile
+   org.springframework.boot:spring-boot-starter:jar:2.2.1.RELEASE:compile
+   org.springframework.boot:spring-boot-test-autoconfigure:jar:2.2.1.RELEASE:compile
+   org.springframework.boot:spring-boot-test:jar:2.2.1.RELEASE:compile
+   org.springframework.boot:spring-boot:jar:2.2.1.RELEASE:compile
+   org.springframework:spring-aop:jar:5.2.1.RELEASE:compile
+   org.springframework:spring-beans:jar:5.2.1.RELEASE:compile
+   org.springframework:spring-context:jar:5.2.1.RELEASE:compile
+   org.springframework:spring-core:jar:5.2.1.RELEASE:compile
+   org.springframework:spring-expression:jar:5.2.1.RELEASE:compile
+   org.springframework:spring-jcl:jar:5.2.1.RELEASE:compile
+   org.springframework:spring-test:jar:5.2.1.RELEASE:compile
+   org.springframework:spring-tx:jar:5.2.1.RELEASE:compile
+   org.springframework:spring-web:jar:5.2.1.RELEASE:compile
+   org.springframework:spring-webmvc:jar:5.2.1.RELEASE:compile
+   org.webjars.bower:momentjs:jar:2.24.0:compile
+   org.webjars.bower:summernote:jar:0.8.11:compile
+   org.webjars:Eonasdan-bootstrap-datetimepicker:jar:4.17.37-1:compile
+   org.webjars:animate.css:jar:3.5.2:compile
+   org.webjars:bootstrap:jar:3.4.0:compile
+   org.webjars:font-awesome:jar:4.7.0:compile
+   org.webjars:jquery-ui:jar:1.12.1:compile
+   org.webjars:jquery:jar:1.11.1:compile
+   org.webjars:modernizr:jar:2.8.3-1:compile
+   org.webjars:select2:jar:4.0.10:compile
+   org.wicketstuff:wicketstuff-select2:jar:8.6.0:compile
+   org.xmlunit:xmlunit-core:jar:2.6.3:compile
+   org.yaml:snakeyaml:jar:1.25:runtime
+The following files have been resolved:
diff --git a/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.tree.approved.txt b/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.tree.approved.txt
new file mode 100644
index 0000000..1ade18f
--- /dev/null
+++ b/webapp/src/test/java/domain/webapp/lockdown/LockDownMavenDeps_Test.tree.approved.txt
@@ -0,0 +1,224 @@
+org.apache.isis.examples.apps:simpleapp-webapp:jar:2.0.0-M3-SNAPSHOT
++- org.apache.isis.examples.apps:simpleapp-application:jar:2.0.0-M3-SNAPSHOT:compile
+|  +- org.apache.isis.examples.apps:simpleapp-module-simple:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  +- org.apache.isis.extensions:isis-extensions-fixtures:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  |  \- org.apache.isis.extensions:isis-extensions-spring:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  \- org.apache.isis.extensions:isis-extensions-specsupport:jar:2.0.0-M3-SNAPSHOT:compile
+|  |     +- io.cucumber:cucumber-java:jar:4.8.0:compile
+|  |     |  \- io.cucumber:cucumber-core:jar:4.8.0:compile
+|  |     |     +- io.cucumber:gherkin:jar:5.1.0:compile
+|  |     |     +- io.cucumber:tag-expressions:jar:1.1.1:compile
+|  |     |     +- io.cucumber:cucumber-expressions:jar:7.0.2:compile
+|  |     |     \- io.cucumber:datatable:jar:1.1.14:compile
+|  |     |        \- io.cucumber:datatable-dependencies:jar:1.1.14:compile
+|  |     +- io.cucumber:cucumber-spring:jar:4.8.0:compile
+|  |     \- io.cucumber:cucumber-junit:jar:4.8.0:compile
+|  \- org.apache.isis.mavendeps:isis-mavendeps-jdk11:pom:2.0.0-M3-SNAPSHOT:compile
++- org.apache.isis.mavendeps:isis-mavendeps-webapp:pom:2.0.0-M3-SNAPSHOT:compile
+|  +- org.springframework.boot:spring-boot-starter-web:jar:2.2.1.RELEASE:compile
+|  |  +- org.springframework.boot:spring-boot-starter:jar:2.2.1.RELEASE:compile
+|  |  |  +- jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
+|  |  |  \- org.yaml:snakeyaml:jar:1.25:runtime
+|  |  +- org.springframework.boot:spring-boot-starter-json:jar:2.2.1.RELEASE:compile
+|  |  |  +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.10.0:compile
+|  |  |  \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.10.0:compile
+|  |  +- org.springframework.boot:spring-boot-starter-tomcat:jar:2.2.1.RELEASE:compile
+|  |  |  +- org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.27:compile
+|  |  |  +- org.apache.tomcat.embed:tomcat-embed-el:jar:9.0.27:compile
+|  |  |  \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:9.0.27:compile
+|  |  +- org.springframework.boot:spring-boot-starter-validation:jar:2.2.1.RELEASE:compile
+|  |  |  +- jakarta.validation:jakarta.validation-api:jar:2.0.1:compile
+|  |  |  \- org.hibernate.validator:hibernate-validator:jar:6.0.18.Final:compile
+|  |  |     +- org.jboss.logging:jboss-logging:jar:3.4.1.Final:compile
+|  |  |     \- com.fasterxml:classmate:jar:1.5.1:compile
+|  |  +- org.springframework:spring-web:jar:5.2.1.RELEASE:compile
+|  |  \- org.springframework:spring-webmvc:jar:5.2.1.RELEASE:compile
+|  +- org.apache.isis.core:isis-applib:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  \- org.apache.isis.core:isis-commons:jar:2.0.0-M3-SNAPSHOT:compile
+|  |     +- javax:javaee-api:jar:8.0:compile
+|  |     |  \- com.sun.mail:javax.mail:jar:1.6.0:compile
+|  |     |     \- javax.activation:activation:jar:1.1:compile
+|  |     +- com.google.code.findbugs:annotations:jar:2.0.1:compile
+|  |     +- org.springframework:spring-tx:jar:5.2.1.RELEASE:compile
+|  |     \- org.springframework.boot:spring-boot-starter-log4j2:jar:2.2.1.RELEASE:compile
+|  |        +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.12.1:compile
+|  |        |  \- org.apache.logging.log4j:log4j-api:jar:2.12.1:compile
+|  |        +- org.apache.logging.log4j:log4j-core:jar:2.12.1:compile
+|  |        +- org.apache.logging.log4j:log4j-jul:jar:2.12.1:compile
+|  |        \- org.slf4j:jul-to-slf4j:jar:1.7.29:compile
+|  +- org.apache.isis.core:isis-schema:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  \- joda-time:joda-time:jar:2.10.5:compile
+|  +- org.apache.isis.core:isis-codegen-bytebuddy:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  +- net.bytebuddy:byte-buddy:jar:1.10.2:compile
+|  |  \- org.objenesis:objenesis:jar:2.2:compile
+|  +- org.apache.isis.core:isis-viewer-wicket-impl:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  +- org.apache.isis.core:isis-viewer-wicket-ui:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  |  +- org.apache.isis.core:isis-viewer-wicket-model:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  |  +- org.apache.wicket:wicket-core:jar:8.6.1:compile
+|  |  |  |  +- com.github.openjson:openjson:jar:1.0.10:compile
+|  |  |  |  +- org.apache.wicket:wicket-request:jar:8.6.1:compile
+|  |  |  |  +- org.apache.wicket:wicket-util:jar:8.6.1:compile
+|  |  |  |  |  +- commons-fileupload:commons-fileupload:jar:1.4:compile
+|  |  |  |  |  \- org.apache.commons:commons-collections4:jar:4.3:compile
+|  |  |  |  \- org.danekja:jdk-serializable-functional:jar:1.8.5:compile
+|  |  |  +- org.apache.wicket:wicket-devutils:jar:8.6.1:compile
+|  |  |  +- org.apache.wicket:wicket-extensions:jar:8.6.1:compile
+|  |  |  +- org.wicketstuff:wicketstuff-select2:jar:8.6.0:compile
+|  |  |  +- org.webjars:select2:jar:4.0.10:compile
+|  |  |  |  \- org.webjars:jquery:jar:1.11.1:compile
+|  |  |  +- org.webjars:jquery-ui:jar:1.12.1:compile
+|  |  |  +- de.agilecoders.wicket.webjars:wicket-webjars:jar:2.0.15:compile
+|  |  |  +- de.agilecoders.wicket:wicket-bootstrap-extensions:jar:2.0.11:compile
+|  |  |  |  +- org.webjars:Eonasdan-bootstrap-datetimepicker:jar:4.17.37-1:compile
+|  |  |  |  +- org.webjars.bower:momentjs:jar:2.24.0:compile
+|  |  |  |  +- org.webjars:font-awesome:jar:4.7.0:compile
+|  |  |  |  +- com.google.javascript:closure-compiler-unshaded:jar:v20190325:compile
+|  |  |  |  |  +- com.google.javascript:closure-compiler-externs:jar:v20190325:compile
+|  |  |  |  |  +- args4j:args4j:jar:2.0.26:compile
+|  |  |  |  |  +- com.google.code.gson:gson:jar:2.8.6:compile
+|  |  |  |  |  \- com.google.jsinterop:jsinterop-annotations:jar:1.0.0:compile
+|  |  |  |  \- org.webjars:animate.css:jar:3.5.2:compile
+|  |  |  +- org.webjars.bower:summernote:jar:0.8.11:compile
+|  |  |  \- de.agilecoders.wicket:wicket-bootstrap-themes:jar:2.0.11:compile
+|  |  +- org.apache.wicket:wicket-spring:jar:8.6.1:compile
+|  |  |  \- org.apache.wicket:wicket-ioc:jar:8.6.1:compile
+|  |  |     +- cglib:cglib-nodep:jar:3.2.12:compile
+|  |  |     +- javax.inject:javax.inject:jar:1:compile
+|  |  |     \- org.ow2.asm:asm-util:jar:7.1:compile
+|  |  |        +- org.ow2.asm:asm-tree:jar:7.1:compile
+|  |  |        \- org.ow2.asm:asm-analysis:jar:7.1:compile
+|  |  +- org.apache.wicket:wicket-auth-roles:jar:8.6.1:compile
+|  |  +- de.agilecoders.wicket:wicket-bootstrap-core:jar:2.0.11:compile
+|  |  |  +- de.agilecoders.wicket:jquery-selectors:jar:2.0.7:compile
+|  |  |  +- org.webjars:bootstrap:jar:3.4.0:compile
+|  |  |  +- org.webjars:modernizr:jar:2.8.3-1:compile
+|  |  |  \- org.apache.commons:commons-lang3:jar:3.9:compile
+|  |  +- net.ftlines.wicket-source:wicket-source:jar:7.0.0:compile
+|  |  |  \- org.apache.wicket:wicket:pom:8.6.1:compile
+|  |  \- commons-io:commons-io:jar:2.6:compile
+|  +- org.apache.isis.core:isis-viewer-restfulobjects-server:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  +- org.apache.isis.core:isis-runtime-web:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  +- org.apache.isis.core:isis-viewer-restfulobjects-rendering:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  |  +- org.apache.isis.core:isis-metamodel:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  |  |  \- io.swagger:swagger-core:jar:1.5.21:compile
+|  |  |  |     +- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:jar:2.10.0:compile
+|  |  |  |     \- io.swagger:swagger-models:jar:1.5.21:compile
+|  |  |  |        \- io.swagger:swagger-annotations:jar:1.5.21:compile
+|  |  |  \- org.apache.isis.core:isis-viewer-restfulobjects-applib:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.10.0:compile
+|  |     +- jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.2:compile
+|  |     \- jakarta.activation:jakarta.activation-api:jar:1.2.1:compile
+|  +- org.apache.isis.core:isis-viewer-restfulobjects-jaxrsresteasy4:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  +- org.jboss.resteasy:resteasy-jackson-provider:jar:4.0.0.Beta5:compile
+|  |  |  +- org.codehaus.jackson:jackson-core-asl:jar:1.9.13:compile
+|  |  |  +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13:compile
+|  |  |  +- org.codehaus.jackson:jackson-jaxrs:jar:1.9.13:compile
+|  |  |  \- org.codehaus.jackson:jackson-xc:jar:1.9.13:compile
+|  |  +- org.jboss.resteasy:resteasy-jaxb-provider:jar:4.0.0.Beta5:compile
+|  |  |  \- org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec:jar:1.0.0.Final:compile
+|  |  +- org.jboss.resteasy:resteasy-jaxrs:jar:4.0.0.Beta5:compile
+|  |  |  +- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_2.1_spec:jar:1.0.1.Final:compile
+|  |  |  +- org.jboss.resteasy:resteasy-jaxrs-services:jar:4.0.0.Beta5:compile
+|  |  |  +- org.reactivestreams:reactive-streams:jar:1.0.3:compile
+|  |  |  +- org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:jar:1.0.0.Final:compile
+|  |  |  +- org.apache.httpcomponents:httpclient:jar:4.5.10:compile
+|  |  |  |  +- org.apache.httpcomponents:httpcore:jar:4.4.12:compile
+|  |  |  |  \- commons-codec:commons-codec:jar:1.13:compile
+|  |  |  +- net.jcip:jcip-annotations:jar:1.0:compile
+|  |  |  \- javax.json.bind:javax.json.bind-api:jar:1.0:compile
+|  |  +- commons-logging:commons-logging:jar:1.2:compile
+|  |  +- com.fasterxml.jackson.core:jackson-core:jar:2.10.0:compile
+|  |  \- com.fasterxml.jackson.core:jackson-annotations:jar:2.10.0:compile
+|  +- org.apache.isis.core:isis-security:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  \- org.apache.isis.core:isis-config:jar:2.0.0-M3-SNAPSHOT:compile
+|  +- org.apache.isis.core:isis-security-bypass:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  \- org.apache.isis.core:isis-runtime-services:jar:2.0.0-M3-SNAPSHOT:compile
+|  +- org.apache.isis.core:isis-security-shiro:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  +- org.apache.shiro:shiro-core:jar:1.4.1:compile
+|  |  |  +- org.apache.shiro:shiro-lang:jar:1.4.1:compile
+|  |  |  +- org.apache.shiro:shiro-cache:jar:1.4.1:compile
+|  |  |  +- org.apache.shiro:shiro-crypto-hash:jar:1.4.1:compile
+|  |  |  |  \- org.apache.shiro:shiro-crypto-core:jar:1.4.1:compile
+|  |  |  +- org.apache.shiro:shiro-crypto-cipher:jar:1.4.1:compile
+|  |  |  +- org.apache.shiro:shiro-config-core:jar:1.4.1:compile
+|  |  |  +- org.apache.shiro:shiro-config-ogdl:jar:1.4.1:compile
+|  |  |  |  \- commons-beanutils:commons-beanutils:jar:1.9.3:compile
+|  |  |  |     \- commons-collections:commons-collections:jar:3.2.2:compile
+|  |  |  \- org.apache.shiro:shiro-event:jar:1.4.1:compile
+|  |  \- org.apache.shiro:shiro-web:jar:1.4.1:compile
+|  +- org.apache.isis.core:isis-security-keycloak:jar:2.0.0-M3-SNAPSHOT:compile
+|  +- org.apache.isis.core:isis-persistence-jdo-datanucleus5:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  +- org.datanucleus:javax.jdo:jar:3.2.0-m12:compile
+|  |  |  \- javax.transaction:transaction-api:jar:1.1:compile
+|  |  +- org.datanucleus:datanucleus-core:jar:5.2.2:compile
+|  |  +- org.datanucleus:datanucleus-api-jdo:jar:5.2.2:compile
+|  |  +- org.datanucleus:datanucleus-jdo-query:jar:5.0.9:compile
+|  |  +- org.datanucleus:datanucleus-rdbms:jar:5.2.1:compile
+|  |  +- org.datanucleus:datanucleus-jodatime:jar:5.2.0-release:compile
+|  |  +- org.apache.isis.core:isis-runtime:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  |  \- org.apache.commons:commons-email:jar:1.4:compile
+|  |  +- org.apache.isis.core:isis-runtime-extensions:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  \- org.apache.isis.core:isis-persistence-jdo-common:jar:2.0.0-M3-SNAPSHOT:compile
+|  \- com.google.guava:guava:jar:28.1-jre:compile
+|     +- com.google.guava:failureaccess:jar:1.0.1:compile
+|     +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile
+|     +- com.google.code.findbugs:jsr305:jar:3.0.2:compile
+|     +- org.checkerframework:checker-qual:jar:2.8.1:compile
+|     +- com.google.errorprone:error_prone_annotations:jar:2.3.2:compile
+|     +- com.google.j2objc:j2objc-annotations:jar:1.3:compile
+|     \- org.codehaus.mojo:animal-sniffer-annotations:jar:1.18:compile
++- com.h2database:h2:jar:1.4.200:compile
++- org.apache.isis.mavendeps:isis-mavendeps-testing:pom:2.0.0-M3-SNAPSHOT:test
+|  +- org.apache.isis.core:isis-unittestsupport:jar:2.0.0-M3-SNAPSHOT:compile
+|  |  +- org.junit.jupiter:junit-jupiter-api:jar:5.5.2:compile
+|  |  |  +- org.apiguardian:apiguardian-api:jar:1.1.0:compile
+|  |  |  +- org.opentest4j:opentest4j:jar:1.2.0:compile
+|  |  |  \- org.junit.platform:junit-platform-commons:jar:1.5.2:compile
+|  |  +- org.junit.jupiter:junit-jupiter-engine:jar:5.5.2:compile
+|  |  |  \- org.junit.platform:junit-platform-engine:jar:1.5.2:compile
+|  |  +- org.junit.vintage:junit-vintage-engine:jar:5.5.2:compile
+|  |  |  \- junit:junit:jar:4.12:compile
+|  |  +- org.mockito:mockito-core:jar:3.1.0:compile
+|  |  +- org.slf4j:slf4j-api:jar:1.7.29:compile
+|  |  +- org.springframework.boot:spring-boot-starter-test:jar:2.2.1.RELEASE:compile
+|  |  |  +- org.springframework.boot:spring-boot-test:jar:2.2.1.RELEASE:compile
+|  |  |  +- org.springframework.boot:spring-boot-test-autoconfigure:jar:2.2.1.RELEASE:compile
+|  |  |  +- com.jayway.jsonpath:json-path:jar:2.4.0:compile
+|  |  |  |  \- net.minidev:json-smart:jar:2.3:compile
+|  |  |  |     \- net.minidev:accessors-smart:jar:1.2:compile
+|  |  |  +- org.junit.jupiter:junit-jupiter:jar:5.5.2:compile
+|  |  |  |  \- org.junit.jupiter:junit-jupiter-params:jar:5.5.2:compile
+|  |  |  +- org.mockito:mockito-junit-jupiter:jar:3.1.0:compile
+|  |  |  +- org.hamcrest:hamcrest:jar:2.1:compile
+|  |  |  +- org.skyscreamer:jsonassert:jar:1.5.0:compile
+|  |  |  |  \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:compile
+|  |  |  \- org.xmlunit:xmlunit-core:jar:2.6.3:compile
+|  |  +- org.springframework:spring-test:jar:5.2.1.RELEASE:compile
+|  |  +- org.jmock:jmock:jar:2.11.0:compile
+|  |  |  +- org.jmock:jmock-testjar:jar:2.11.0:compile
+|  |  |  \- org.apache-extras.beanshell:bsh:jar:2.0b6:compile
+|  |  \- org.jmock:jmock-junit4:jar:2.11.0:compile
+|  |     +- org.jmock:jmock-legacy:jar:2.11.0:runtime
+|  |     |  \- cglib:cglib:jar:3.2.8:runtime
+|  |     \- org.jmock:jmock-imposters:jar:2.11.0:runtime
+|  +- org.apache.isis.core:isis-integtestsupport:jar:2.0.0-M3-SNAPSHOT:test
+|  +- org.hamcrest:hamcrest-library:jar:2.1:compile
+|  |  \- org.hamcrest:hamcrest-core:jar:2.1:compile
+|  +- org.assertj:assertj-core:jar:3.13.2:compile
+|  +- com.approvaltests:approvaltests:jar:4.0.2:test
+|  |  \- com.approvaltests:approvaltests-util:jar:4.0.2:test
+|  +- org.picocontainer:picocontainer:jar:2.15:compile
+|  \- org.hsqldb:hsqldb:jar:2.5.0:test
++- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.2.1.RELEASE:compile
+|  +- org.springframework.boot:spring-boot-actuator:jar:2.2.1.RELEASE:compile
+|  |  \- org.springframework.boot:spring-boot:jar:2.2.1.RELEASE:compile
+|  +- org.springframework.boot:spring-boot-autoconfigure:jar:2.2.1.RELEASE:compile
+|  +- com.fasterxml.jackson.core:jackson-databind:jar:2.10.0:compile
+|  +- org.springframework:spring-core:jar:5.2.1.RELEASE:compile
+|  |  \- org.springframework:spring-jcl:jar:5.2.1.RELEASE:compile
+|  +- org.springframework:spring-context:jar:5.2.1.RELEASE:compile
+|  |  +- org.springframework:spring-aop:jar:5.2.1.RELEASE:compile
+|  |  +- org.springframework:spring-beans:jar:5.2.1.RELEASE:compile
+|  |  \- org.springframework:spring-expression:jar:5.2.1.RELEASE:compile
+|  \- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.10.0:compile
+\- org.projectlombok:lombok:jar:1.18.10:provided