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/01/12 14:26:02 UTC

[isis] branch release-2.0.0-M2-RC1 updated (75262f8 -> 32a4d24)

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

danhaywood pushed a change to branch release-2.0.0-M2-RC1
in repository https://gitbox.apache.org/repos/asf/isis.git.


    from 75262f8  ISIS-1811: adds missing license headers
     new 981e96e  ISIS-1811: copies over fixes to scripts from master branch
     new f28a485  ISIS-1811: recreating simpleapp archetype
     new 7d4ee2d  ISIS-1811: recreating helloworld archetype
     new 32a4d24  ISIS-1811: bumps revision property across all ...

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


Summary of changes:
 core/pom.xml                                       |    2 +-
 example/application/helloworld/pom.xml             |    2 +-
 example/application/simpleapp/pom.xml              |    2 +-
 example/archetype/helloworld/pom.xml               |   10 +-
 .../appended-resources/supplemental-models.xml     |   26 +
 .../META-INF/maven/archetype-metadata.xml          |   11 +-
 .../src/main/resources/archetype-resources/pom.xml |   62 +-
 .../org.apache.isis.core.commons.config.AppConfig  |    0
 .../application/HelloWorldAppManifest.java         |   11 +-
 .../application/isis-non-changing.properties       |    4 +-
 .../java/domainapp/application/menubars.layout.xml |   11 +-
 .../java/domainapp/dom/impl/HelloWorldObjects.java |   20 +-
 .../src/main/webapp/WEB-INF/isis.properties        |   12 +-
 .../src/main/webapp/WEB-INF/logging.properties     |    6 +-
 .../src/main/webapp/WEB-INF/web.xml                |  296 +--
 .../src/main/webapp/about/index.html               |    2 +-
 .../resources/projects/basic/archetype.properties  |    2 +-
 .../archetype/{helloworld => simpleapp}/pom.xml    |   22 +-
 .../appended-resources/supplemental-models.xml     |   26 +
 .../META-INF/maven/archetype-metadata.xml          |  181 ++
 .../resources/archetype-resources}/.gitlab-ci.yml  |    0
 .../resources/archetype-resources/.m2/settings.xml |   23 +
 .../resources/archetype-resources}/README.adoc     |    0
 .../archetype-resources/_checks/checkstyle.xml     |  290 +++
 .../resources/archetype-resources/_checks/pmd.xml  |   49 +
 .../application/logging-integtest.properties       |  124 +
 .../archetype-resources/application/pom.xml        |  131 +
 .../application/DomainAppApplicationModule.java}   |   26 +-
 ...mainAppFixtureScriptsSpecificationProvider.java |   48 +
 .../fixture/scenarios/DomainAppDemo.java}          |   33 +-
 .../manifest/DomainAppAppManifest.java}            |   12 +-
 .../DomainAppAppManifestBypassSecurity.java}       |   21 +-
 .../DomainAppAppManifestWithFixtures.java}         |   23 +-
 ...nAppAppManifestWithFixturesBypassSecurity.java} |   20 +-
 .../manifest/isis-non-changing.properties          |  741 ++++++
 .../application/manifest}/menubars.layout.xml      |   21 +-
 .../services/health/HealthCheckServiceImpl.java    |   32 +
 .../services/homepage/HomePageService.java}        |   35 +-
 .../services/homepage/HomePageViewModel.java}      |   34 +-
 .../services/homepage/HomePageViewModel.layout.xml |   53 +
 .../services/homepage/HomePageViewModel.png        |  Bin
 .../bdd/specglue/BootstrappingGlue.java            |   42 +
 .../bdd/specglue/BootstrappingGlueAbstract.java    |   40 +
 .../bdd/specglue/CatalogOfFixturesGlue.java        |   32 +
 .../application/bdd/specs/RunIntegBddSpecs.java    |   46 +
 .../SimpleObjectSpec_listAllAndCreate.feature      |    0
 .../integtests/DomainAppIntegTestAbstract.java}    |   21 +-
 .../integtests/mml/MetaModelService_IntegTest.java |  150 ++
 ...omainAppFixtureScriptsSpecificationProvider.xml |   48 +
 ...application.fixture.scenarios.DomainAppDemo.xml |  270 ++
 ...tion.services.health.HealthCheckServiceImpl.xml |   48 +
 ...plication.services.homepage.HomePageService.xml |   47 +
 ...ication.services.homepage.HomePageViewModel.xml |  352 +++
 ...ainapp.modules.simple.dom.impl.SimpleObject.xml |  878 +++++++
 ...inapp.modules.simple.dom.impl.SimpleObjects.xml |  270 ++
 ....apache.isis.applib.value.LocalResourcePath.xml |    5 +
 .../integtests/smoke/Smoke_IntegTest.java          |  100 +
 ...MetaModelService_IntegTest.exports.approved.xml | 2746 ++++++++++++++++++++
 .../src/test/resources/cucumber.properties         |    4 +
 .../application/translations.pot}                  |    0
 .../resources/archetype-resources}/enhance-all.sh  |    0
 .../module-simple/build.gradle                     |    0
 .../archetype-resources}/module-simple/gradlew     |    0
 .../archetype-resources}/module-simple/gradlew.bat |    0
 .../module-simple/layouts.gradle                   |    0
 .../module-simple/liveReload.gradle                |    0
 .../module-simple}/logging-dn-enhance.properties   |    0
 .../module-simple/logging-integtest.properties     |  123 +
 .../archetype-resources/module-simple/pom.xml      |  202 ++
 .../src/main/java/META-INF/persistence.xml         |   29 +
 .../domainapp/modules/simple/SimpleModule.java     |   51 +
 .../modules/simple/SimpleModuleManifest.java}      |   20 +-
 .../modules/simple/dom/impl/SimpleObject.java      |  111 +
 .../simple/dom/impl/SimpleObject.layout.xml        |   71 +
 .../modules/simple/dom/impl/SimpleObject.png       |  Bin
 .../modules/simple/dom/impl/SimpleObjects.java     |  100 +
 .../domainapp/modules/simple/dom/types/Name.java   |   39 +
 .../domainapp/modules/simple/dom/types/Notes.java  |   28 +
 .../simple/fixture/SimpleObjectBuilder.java}       |   38 +-
 .../simple/fixture/SimpleObject_persona.java       |   66 +
 .../modules/simple/dom/impl/SimpleObject_Test.java |   53 +
 .../simple/dom/impl/SimpleObjects_Test.java        |  119 +
 .../integtests/SimpleModuleIntegTestAbstract.java} |   22 +-
 .../integtests/tests/SimpleObject_IntegTest.java   |  153 ++
 .../integtests/tests/SimpleObjects_IntegTest.java  |  133 +
 .../modules/simple/specglue/SimpleObjectsGlue.java |   52 +
 .../module-simple/translations.pot}                |    0
 .../main/resources/archetype-resources}/pom.xml    |   40 +-
 .../resources/archetype-resources/webapp}/pom.xml  |  236 +-
 .../webapp/src/main/jettyconsole/isis-banner.pdn   |  Bin
 .../webapp/src/main/jettyconsole/isis-banner.png   |  Bin
 .../src/main/webapp/WEB-INF/isis.properties        |   91 +-
 .../src/main/webapp/WEB-INF/logging.properties     |   18 +-
 .../webapp/src/main/webapp/WEB-INF/shiro.ini       |    0
 .../src/main/webapp/WEB-INF/translations-en.po     |    0
 .../src/main/webapp/WEB-INF/translations-es.po     |    0
 .../src/main/webapp/WEB-INF/translations-nl.po     |    0
 .../webapp/src/main/webapp/WEB-INF/translations.po |    0
 .../webapp/src/main/webapp/WEB-INF/web.xml         |   52 +
 .../src/main/webapp/about/images/isis-logo.png     |  Bin
 .../webapp}/src/main/webapp/about/index.html       |   18 +-
 .../webapp}/src/main/webapp/css/application.css    |    0
 .../main/webapp/images/apache-isis/logo-48x48.png  |  Bin
 .../webapp}/src/main/webapp/scripts/application.js |    0
 .../resources/projects/basic/archetype.properties  |    2 +-
 .../src/test/resources/projects/basic/goal.txt     |    0
 scripts/recreate-archetype.sh                      |    4 +-
 scripts/updateGeneratedArchetypeSources.groovy     |  140 +-
 108 files changed, 8732 insertions(+), 802 deletions(-)
 create mode 100644 example/archetype/helloworld/src/main/appended-resources/supplemental-models.xml
 copy example/{application/helloworld => archetype/helloworld/src/main/resources/archetype-resources}/src/main/java/META-INF/services/org.apache.isis.core.commons.config.AppConfig (100%)
 copy example/archetype/{helloworld => simpleapp}/pom.xml (85%)
 create mode 100644 example/archetype/simpleapp/src/main/appended-resources/supplemental-models.xml
 create mode 100644 example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/.gitlab-ci.yml (100%)
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/.m2/settings.xml
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/README.adoc (100%)
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/_checks/checkstyle.xml
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/_checks/pmd.xml
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/logging-integtest.properties
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/pom.xml
 copy example/archetype/{helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java => simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/DomainAppApplicationModule.java} (64%)
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java
 copy example/archetype/{helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java => simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java} (51%)
 copy example/archetype/{helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java => simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java} (77%)
 copy example/archetype/{helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java => simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestBypassSecurity.java} (62%)
 copy example/archetype/{helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java => simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixtures.java} (63%)
 copy example/archetype/{helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java => simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixturesBypassSecurity.java} (62%)
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/isis-non-changing.properties
 copy example/archetype/{helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application => simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest}/menubars.layout.xml (89%)
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/health/HealthCheckServiceImpl.java
 copy example/archetype/{helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java => simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/homepage/HomePageService.java} (53%)
 copy example/archetype/{helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java => simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.java} (53%)
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.layout.xml
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.png (100%)
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlueAbstract.java
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/CatalogOfFixturesGlue.java
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specs/RunIntegBddSpecs.java
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/application/src/test/java/domainapp/application/bdd/specs/SimpleObjectSpec_listAllAndCreate.feature (100%)
 copy example/archetype/{helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java => simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/DomainAppIntegTestAbstract.java} (62%)
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/MetaModelService_IntegTest.java
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.DomainAppFixtureScriptsSpecificationProvider.xml
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.scenarios.DomainAppDemo.xml
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.health.HealthCheckServiceImpl.xml
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageService.xml
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageViewModel.xml
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObject.xml
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObjects.xml
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/org.apache.isis.applib.value.LocalResourcePath.xml
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/smoke/Smoke_IntegTest.java
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/tests/mml/MetaModelService_IntegTest.exports.approved.xml
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/resources/cucumber.properties
 copy example/archetype/{helloworld/src/test/resources/projects/basic/goal.txt => simpleapp/src/main/resources/archetype-resources/application/translations.pot} (100%)
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/enhance-all.sh (100%)
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/module-simple/build.gradle (100%)
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/module-simple/gradlew (100%)
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/module-simple/gradlew.bat (100%)
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/module-simple/layouts.gradle (100%)
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/module-simple/liveReload.gradle (100%)
 copy example/archetype/{helloworld/src/main/resources/archetype-resources => simpleapp/src/main/resources/archetype-resources/module-simple}/logging-dn-enhance.properties (100%)
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/logging-integtest.properties
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/pom.xml
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/META-INF/persistence.xml
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
 copy example/archetype/{helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java => simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java} (63%)
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.layout.xml
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.png (100%)
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/types/Notes.java
 copy example/archetype/{helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java => simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java} (55%)
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObject_Test.java
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjects_Test.java
 copy example/archetype/{helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java => simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java} (62%)
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/specglue/SimpleObjectsGlue.java
 copy example/archetype/{helloworld/src/test/resources/projects/basic/goal.txt => simpleapp/src/main/resources/archetype-resources/module-simple/translations.pot} (100%)
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/pom.xml (84%)
 copy example/{application/helloworld => archetype/simpleapp/src/main/resources/archetype-resources/webapp}/pom.xml (52%)
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/webapp/src/main/jettyconsole/isis-banner.pdn (100%)
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/webapp/src/main/jettyconsole/isis-banner.png (100%)
 copy example/archetype/{helloworld/src/main/resources/archetype-resources => simpleapp/src/main/resources/archetype-resources/webapp}/src/main/webapp/WEB-INF/isis.properties (61%)
 copy example/archetype/{helloworld/src/main/resources/archetype-resources => simpleapp/src/main/resources/archetype-resources/webapp}/src/main/webapp/WEB-INF/logging.properties (94%)
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/webapp/src/main/webapp/WEB-INF/shiro.ini (100%)
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/webapp/src/main/webapp/WEB-INF/translations-en.po (100%)
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/webapp/src/main/webapp/WEB-INF/translations-es.po (100%)
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/webapp/src/main/webapp/WEB-INF/translations-nl.po (100%)
 copy example/{application/simpleapp => archetype/simpleapp/src/main/resources/archetype-resources}/webapp/src/main/webapp/WEB-INF/translations.po (100%)
 create mode 100644 example/archetype/simpleapp/src/main/resources/archetype-resources/webapp/src/main/webapp/WEB-INF/web.xml
 copy example/archetype/{helloworld/src/main/resources/archetype-resources => simpleapp/src/main/resources/archetype-resources/webapp}/src/main/webapp/about/images/isis-logo.png (100%)
 copy example/archetype/{helloworld/src/main/resources/archetype-resources => simpleapp/src/main/resources/archetype-resources/webapp}/src/main/webapp/about/index.html (56%)
 copy example/archetype/{helloworld/src/main/resources/archetype-resources => simpleapp/src/main/resources/archetype-resources/webapp}/src/main/webapp/css/application.css (100%)
 copy example/archetype/{helloworld/src/main/resources/archetype-resources => simpleapp/src/main/resources/archetype-resources/webapp}/src/main/webapp/images/apache-isis/logo-48x48.png (100%)
 copy example/archetype/{helloworld/src/main/resources/archetype-resources => simpleapp/src/main/resources/archetype-resources/webapp}/src/main/webapp/scripts/application.js (100%)
 copy example/archetype/{helloworld => simpleapp}/src/test/resources/projects/basic/archetype.properties (71%)
 copy example/archetype/{helloworld => simpleapp}/src/test/resources/projects/basic/goal.txt (100%)


[isis] 01/04: ISIS-1811: copies over fixes to scripts from master branch

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

danhaywood pushed a commit to branch release-2.0.0-M2-RC1
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 981e96e11b62de2c6664a1b60c1d517dbc7b8747
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Jan 12 14:03:18 2019 +0000

    ISIS-1811: copies over fixes to scripts from master branch
---
 scripts/recreate-archetype.sh                  |   4 +-
 scripts/updateGeneratedArchetypeSources.groovy | 140 ++++++-------------------
 2 files changed, 32 insertions(+), 112 deletions(-)

diff --git a/scripts/recreate-archetype.sh b/scripts/recreate-archetype.sh
index ee5e1c0..acca8cb 100755
--- a/scripts/recreate-archetype.sh
+++ b/scripts/recreate-archetype.sh
@@ -57,8 +57,8 @@ for a in .project .classpath .settings bin .idea neo4j_DB target-ide; do /bin/fi
 /bin/find . -name "*.log" -exec rm {} \;
 /bin/find . -name "pom.xml.*" -exec rm {} \;
 
-echo "mvn -Drevision=$ISISREL archetype:create-from-project ..."
-mvn -Drevision=$ISISREL org.apache.maven.plugins:maven-archetype-plugin:3.0.1:create-from-project
+echo "mvn archetype:create-from-project ..."
+mvn org.apache.maven.plugins:maven-archetype-plugin:3.0.1:create-from-project
 
 # https://issues.apache.org/jira/browse/ARCHETYPE-548
 echo "copy over Dockerfile since seems to be excluded (bug: ARCHETYPE-548) ... "
diff --git a/scripts/updateGeneratedArchetypeSources.groovy b/scripts/updateGeneratedArchetypeSources.groovy
index 326ba45..044137a 100644
--- a/scripts/updateGeneratedArchetypeSources.groovy
+++ b/scripts/updateGeneratedArchetypeSources.groovy
@@ -78,8 +78,6 @@ if (!options) {
 application_name=options.n
 isis_version=options.v
 
-println "isis_version = ${isis_version}"
-
 /////////////////////////////////////////////////////
 //
 // update archetype's own pom.xml's groupId
@@ -104,130 +102,26 @@ pomXml.appendNode {
 }
 pomXml.groupId='org.apache.isis.archetype'
 
-pomXml.appendNode(new XmlSlurper( false, false ).parseText( '''
-  <parent>
-    <groupId>org.apache</groupId>
-    <artifactId>apache</artifactId>
-    <version>18</version>
-    <relativePath />
-  </parent>
-''' )
-)
-
-pomXml.appendNode(new XmlSlurper( false, false ).parseText( '''
-<properties>
+def fragmentToAdd = new XmlSlurper( false, true ).parseText( '''<properties>
     <archetype.test.skip>true</archetype.test.skip>
-</properties>
-''' )
-)
-
-pomXml.appendNode(new XmlSlurper( false, false ).parseText( '''
-  <profiles>
-    <profile>
-      <!--
-      as per https://stackoverflow.com/a/28860520/56880
-      allows -Dgpg.passphrase= to be used rather than gpg.useagent
-      inherited from parent.
-      Note that this requires gpg v2.1+
-      -->
-      <id>gpg</id>
-      <activation>
-        <property>
-          <name>gpg.passphrase</name>
-        </property>
-      </activation>
-      <properties>
-        <gpg.useagent>false</gpg.useagent>
-      </properties>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-gpg-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>sign-release-artifacts</id>
-                <goals>
-                  <goal>sign</goal>
-                </goals>
-                <configuration>
-                  <gpgArguments>
-                    <arg>--pinentry-mode</arg>
-                    <arg>loopback</arg>
-                  </gpgArguments>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
-''' )
-)
-
-pomFile.text = withLicense(pomXml)
+</properties>''' )
+pomXml.appendNode(fragmentToAdd)
 
 
 pomFile.text = serializeWithLicense(pomXml)
 
-/////////////////////////////////////////////////////
-//
-// update archetype's resource's pom.xml's
-// <revision> and <isis.version>
-//
-/////////////////////////////////////////////////////
-
-def resourcePomXmlFile=new File(BASE+"src/main/resources/archetype-resources/pom.xml")
-
-println "updating ${resourcePomXmlFile.path}"
-
-def resourcePomXml = new XmlSlurper(false,false).parseText(resourcePomXmlFile.text)
-
-
-// the properties.revision, meanwhile, is set to the version that is prompted for when the
-// app is first generated from the archetype
-resourcePomXml.properties.revision='${version}'
 
-resourcePomXml.properties['isis.version']=isis_version
-
-resourcePomXml.dependencyManagement.dependencies.dependency.each { dependency ->
-    if(dependency.groupId=='${groupId}') {
-        dependency.version='${project.version}'
-    }
-}
 
 
-resourcePomXmlFile.text = withLicense(resourcePomXml)
 
 
 /////////////////////////////////////////////////////
 //
-// update the pom files parent version
-//
-/////////////////////////////////////////////////////
-
-new File(ROOT+"BASE+\"src/main/resources/archetype-resources/").eachDirRecurse() { dir ->
-
-    dir.eachFileMatch(~/pom[.].xml/) { eachPomXmlFile ->
-
-        println "updating ${eachPomXmlFile.path}"
-
-        def eachPomXml = new XmlSlurper(false,false).parseText(eachPomXmlFile.text)
-        if(eachPomXml.parent.groupId=='${groupId}') {
-            eachPomXml.parent.version='${revision}'
-        }
-
-        eachPomXmlFile.text = withLicense(eachPomXml)
-    }
-}
-
-/////////////////////////////////////////////////////
-//
 // update archetype-metadata.xml
 //
 /////////////////////////////////////////////////////
 
+
 def metaDataFile=new File(ROOT+"META-INF/maven/archetype-metadata.xml")
 
 println "updating ${metaDataFile.path}"
@@ -261,6 +155,32 @@ metaDataXml.modules.module.each { module ->
 metaDataFile.text = serializeWithLicense(metaDataXml)
 
 
+/////////////////////////////////////////////////////
+//
+// update the .launch files
+//
+/////////////////////////////////////////////////////
+
+new File(ROOT+"archetype-resources/").eachDirRecurse() { dir ->  
+
+    dir.eachFileMatch(~/.*[.]launch/) { launchFile ->  
+
+        println "updating ${launchFile.path}"
+
+        def launchXml = new XmlSlurper().parseText(launchFile.text)
+        def projectAttr = launchXml.stringAttribute.find { it.@key=="org.eclipse.jdt.launching.PROJECT_ATTR" }
+        String oldValue=projectAttr.@value
+        def newValue = oldValue.replaceAll("${application_name}[^-]*-","\\\${rootArtifactId}-")
+        projectAttr.@value=newValue
+
+        launchFile.text = """#set( \$symbol_pound = '#' )
+#set( \$symbol_dollar = '\$' )
+#set( \$symbol_escape = '\\' )
+"""
+        launchFile.append(XmlUtil.serialize(launchXml))
+     }  
+}
+
 
 ///////////////////////////////////////////////////
 //


[isis] 03/04: ISIS-1811: recreating helloworld archetype

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

danhaywood pushed a commit to branch release-2.0.0-M2-RC1
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 7d4ee2d89e4e0d22eef0b29f004fa15ec0c03bdb
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Jan 12 14:15:39 2019 +0000

    ISIS-1811: recreating helloworld archetype
---
 example/archetype/helloworld/pom.xml               |  10 +-
 .../appended-resources/supplemental-models.xml     |  26 ++
 .../META-INF/maven/archetype-metadata.xml          |  11 +-
 .../src/main/resources/archetype-resources/pom.xml |  62 ++++-
 .../org.apache.isis.core.commons.config.AppConfig  |   1 +
 .../application/HelloWorldAppManifest.java         |  11 +-
 .../application/isis-non-changing.properties       |   4 +-
 .../java/domainapp/application/menubars.layout.xml |  11 +-
 .../java/domainapp/dom/impl/HelloWorldObjects.java |  20 +-
 .../src/main/webapp/WEB-INF/isis.properties        |  12 +-
 .../src/main/webapp/WEB-INF/logging.properties     |   6 +-
 .../src/main/webapp/WEB-INF/web.xml                | 296 +--------------------
 .../src/main/webapp/about/index.html               |   2 +-
 .../resources/projects/basic/archetype.properties  |   2 +-
 14 files changed, 143 insertions(+), 331 deletions(-)

diff --git a/example/archetype/helloworld/pom.xml b/example/archetype/helloworld/pom.xml
index 6d735fe..6909e59 100644
--- a/example/archetype/helloworld/pom.xml
+++ b/example/archetype/helloworld/pom.xml
@@ -21,7 +21,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.apache.isis.archetype</groupId>
   <artifactId>helloworld-archetype</artifactId>
-  <version>2.0.0-M1</version>
+  <version>2.0.0-M2</version>
   <packaging>maven-archetype</packaging>
   <name>helloworld-archetype</name>
   <build>
@@ -67,10 +67,10 @@
     <url>git@github.com:incodehq/incode-build.git/helloworld</url>
   </scm>
   <parent>
-    <groupId>org.apache</groupId>
-    <artifactId>apache</artifactId>
-    <version>18</version>
-    <relativePath/>
+    <groupId>org.apache.isis.core</groupId>
+    <artifactId>isis</artifactId>
+    <version>2.0.0-M2</version>
+    <relativePath>../../../core/pom.xml</relativePath>
   </parent>
   <properties>
     <archetype.test.skip>true</archetype.test.skip>
diff --git a/example/archetype/helloworld/src/main/appended-resources/supplemental-models.xml b/example/archetype/helloworld/src/main/appended-resources/supplemental-models.xml
new file mode 100644
index 0000000..01c58d8
--- /dev/null
+++ b/example/archetype/helloworld/src/main/appended-resources/supplemental-models.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.
+-->
+<supplementalDataModels 
+  xmlns="http://maven.apache.org/supplemental-model/1.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/supplemental-model/1.0.0 
+            http://maven.apache.org/xsd/supplemental-model-1.0.0.xsd">
+
+</supplementalDataModels>
diff --git a/example/archetype/helloworld/src/main/resources/META-INF/maven/archetype-metadata.xml b/example/archetype/helloworld/src/main/resources/META-INF/maven/archetype-metadata.xml
index b171ac5..234a023 100644
--- a/example/archetype/helloworld/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ b/example/archetype/helloworld/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -30,6 +30,7 @@
     <fileSet encoding="UTF-8">
       <directory>src/main/java</directory>
       <includes>
+        <include>**/*.AppConfig</include>
         <include>**/*.png</include>
       </includes>
     </fileSet>
@@ -45,11 +46,7 @@
       <directory>src/main/webapp</directory>
       <includes>
         <include>**/*.css</include>
-        <include>**/*.ico</include>
-        <include>**/*.gif</include>
         <include>**/*.ini</include>
-        <include>**/*.md</include>
-        <include>**/*.ttf</include>
         <include>**/*.png</include>
         <include>**/*.js</include>
       </includes>
@@ -61,6 +58,12 @@
       </includes>
     </fileSet>
     <fileSet filtered="true" encoding="UTF-8">
+      <directory>.m2</directory>
+      <includes>
+        <include>**/*.xml</include>
+      </includes>
+    </fileSet>
+    <fileSet filtered="true" encoding="UTF-8">
       <directory/>
       <includes>
         <include>logging-dn-enhance.properties</include>
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/pom.xml b/example/archetype/helloworld/src/main/resources/archetype-resources/pom.xml
index 378d84a..c536900 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/pom.xml
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/pom.xml
@@ -16,8 +16,7 @@
   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">
+--><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>
@@ -35,13 +34,29 @@
     <packaging>war</packaging>
 
     <properties>
-        <revision>2.0.0-M1</revision>
+        <revision>2.0.0-M2</revision>
         <isis.version>${revision}</isis.version>
 
         <compiler-plugin.source>1.8</compiler-plugin.source>
         <compiler-plugin.target>1.8</compiler-plugin.target>
         <compiler-plugin.compilerArgument>-parameters</compiler-plugin.compilerArgument>
 
+        <!-- override incode-build -->
+        <maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>
+        <jetty-maven-plugin.version>9.4.12.v20180830</jetty-maven-plugin.version>
+
+        <!-- override incode-build (see dn5-xxx.version in isis-core-plugins-jdo-datanucleus-5) -->
+        <datanucleus-api-jdo.version>5.2.0-m2</datanucleus-api-jdo.version>
+        <datanucleus-core.version>5.2.0-m2</datanucleus-core.version>
+        <datanucleus-jodatime.version>5.2.0-m1</datanucleus-jodatime.version>
+        <hsqldb.version>2.4.1</hsqldb.version>
+
+        <!-- override incode-build -->
+        <maven-surefire-plugin.version>2.22.1</maven-surefire-plugin.version>
+        <maven-surefire-report-plugin.version>2.22.1</maven-surefire-report-plugin.version>
+
+        <failOnMissingWebXml>false</failOnMissingWebXml>
+
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 
@@ -51,6 +66,13 @@
     <build>
         <resources>
             <resource>
+                <filtering>true</filtering>
+                <directory>src/main/resources</directory>
+                <includes>
+                    <include>**</include>
+                </includes>
+            </resource>
+            <resource>
                 <directory>src/main/java</directory>
                 <includes>
                     <include>**</include>
@@ -138,11 +160,44 @@
             <artifactId>isis-core-applib</artifactId>
         </dependency>
 
+
+        <!-- ISIS CORE PLUGINS -->
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-plugins-codegen-bytebuddy</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-plugins-discovery-reflections</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-plugins-jdo-datanucleus-5</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-plugins-eventbus-axon</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-plugins-jaxrs-resteasy-3</artifactId>
+        </dependency>
+
         <!-- OTHER DEPENDENCIES -->
+<!--
         <dependency>
             <groupId>org.hsqldb</groupId>
             <artifactId>hsqldb</artifactId>
         </dependency>
+-->
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>org.apache.isis.mavendeps</groupId>
@@ -250,5 +305,4 @@
         </profile>
     </profiles>
 
->>>>>>> release-1.17.0-RC3
 </project>
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/META-INF/services/org.apache.isis.core.commons.config.AppConfig b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/META-INF/services/org.apache.isis.core.commons.config.AppConfig
new file mode 100644
index 0000000..1756fe8
--- /dev/null
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/META-INF/services/org.apache.isis.core.commons.config.AppConfig
@@ -0,0 +1 @@
+domainapp.application.HelloWorldAppManifest
\ No newline at end of file
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java
index 236536b..d5e5b38 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/HelloWorldAppManifest.java
@@ -22,13 +22,16 @@
 package domainapp.application;
 
 import org.apache.isis.applib.AppManifestAbstract2;
+import org.apache.isis.config.AppConfig;
+import org.apache.isis.config.IsisConfiguration;
 
 import domainapp.dom.HelloWorldModule;
 
 /**
  * Bootstrap the application.
  */
-public class HelloWorldAppManifest extends AppManifestAbstract2 {
+@javax.ejb.Singleton // only if you want AppConfig to be managed by CDI (if available), otherwise not required
+public class HelloWorldAppManifest extends AppManifestAbstract2 implements AppConfig {
 
     public static final Builder BUILDER = Builder
             .forModule(new HelloWorldModule())
@@ -40,4 +43,10 @@ public class HelloWorldAppManifest extends AppManifestAbstract2 {
         super(BUILDER);
     }
 
+    // Implementing AppConfig, to tell the framework how to bootstrap the configuration.
+    @Override
+    public IsisConfiguration isisConfiguration () {
+        return IsisConfiguration.buildFromAppManifest(this);
+    }
+
 }
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/isis-non-changing.properties b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/isis-non-changing.properties
index 5e116c7..d1f5123 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/isis-non-changing.properties
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/isis-non-changing.properties
@@ -19,7 +19,7 @@ ${symbol_pound}  specific language governing permissions and limitations
 ${symbol_pound}  under the License.
 
 
-${symbol_pound} -- auto wired by plugins -- 
+${symbol_pound} -- auto wired by plugins --
 ${symbol_pound}isis.services.eventbus.implementation=guava
 ${symbol_pound}isis.services.eventbus.implementation=axon
 
@@ -45,7 +45,6 @@ isis.reflector.explicitAnnotations.action=true
 
 isis.objects.editing=false
 
-
 isis.viewer.wicket.application.name=Hello World App
 isis.viewer.wicket.application.css=css/application.css
 isis.viewer.wicket.application.js=scripts/application.js
@@ -61,7 +60,6 @@ isis.viewer.wicket.themes.showChooser=yes
 isis.viewer.wicket.themes.enabled=Cosmo,Flatly,Darkly,Sandstone,United
 
 
-
 isis.viewer.wicket.maxTitleLengthInStandaloneTables=0
 isis.viewer.wicket.maxTitleLengthInParentedTables=0
 
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/menubars.layout.xml b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/menubars.layout.xml
index f453cb5..0b18956 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/menubars.layout.xml
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/application/menubars.layout.xml
@@ -63,12 +63,12 @@
                 </mb3:serviceAction>
             </mb3:section>
             <mb3:section>
-                <mb3:serviceAction objectType="isisApplib.MetaModelServicesMenu" id="downloadMetaModel">
-                    <cpt:named>Download Meta Model (CSV)</cpt:named>
-                </mb3:serviceAction>
                 <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">
@@ -99,6 +99,9 @@
                 <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>
@@ -106,7 +109,7 @@
         <mb3:menu>
             <mb3:named>Configuration Service Menu</mb3:named>
             <mb3:section>
-                <mb3:serviceAction objectType="isisApplib.ConfigurationServiceMenu" id="configuration">
+                <mb3:serviceAction objectType="isisApplib.ConfigurationMenu" id="configuration">
                     <cpt:named>Configuration</cpt:named>
                 </mb3:serviceAction>
             </mb3:section>
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObjects.java b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObjects.java
index 5b49fed..d305490 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObjects.java
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/java/domainapp/dom/impl/HelloWorldObjects.java
@@ -26,16 +26,17 @@ import java.util.List;
 import javax.jdo.JDOQLTypedQuery;
 
 import org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.applib.annotation.DomainService;
-import org.apache.isis.applib.annotation.MemberOrder;
 import org.apache.isis.applib.annotation.NatureOfService;
-import org.apache.isis.applib.annotation.Parameter;
-import org.apache.isis.applib.annotation.ParameterLayout;
+import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
 import org.apache.isis.applib.services.jdosupport.IsisJdoSupport_v3_2;
 import org.apache.isis.applib.services.repository.RepositoryService;
 
+import domainapp.dom.types.Name;
+
 @DomainService(
         nature = NatureOfService.VIEW_MENU_ONLY,
         objectType = "${artifactId}.HelloWorldObjects"
@@ -43,20 +44,16 @@ import org.apache.isis.applib.services.repository.RepositoryService;
 public class HelloWorldObjects {
 
     @Action(semantics = SemanticsOf.NON_IDEMPOTENT)
-    @MemberOrder(sequence = "1")
+    @ActionLayout(promptStyle = PromptStyle.DIALOG_MODAL)
     public HelloWorldObject create(
-            @Parameter(maxLength = 40)
-            @ParameterLayout(named = "Name")
-            final String name) {
+            @Name final String name) {
         return repositoryService.persist(new HelloWorldObject(name));
     }
 
     @Action(semantics = SemanticsOf.SAFE)
-    @MemberOrder(sequence = "2")
+    @ActionLayout(promptStyle = PromptStyle.DIALOG_SIDEBAR)
     public List<HelloWorldObject> findByName(
-            @Parameter(maxLength = 40)
-            @ParameterLayout(named = "Name")
-            final String name) {
+            @Name final String name) {
     	JDOQLTypedQuery<HelloWorldObject> q = isisJdoSupport.newTypesafeQuery(HelloWorldObject.class);
         final QHelloWorldObject cand = QHelloWorldObject.candidate();
         q = q.filter(
@@ -67,7 +64,6 @@ public class HelloWorldObjects {
     }
 
     @Action(semantics = SemanticsOf.SAFE, restrictTo = RestrictTo.PROTOTYPING)
-    @MemberOrder(sequence = "3")
     public List<HelloWorldObject> listAll() {
         return repositoryService.allInstances(HelloWorldObject.class);
     }
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/isis.properties b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/isis.properties
index 1c54efb..0a970b9 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/isis.properties
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/isis.properties
@@ -47,9 +47,13 @@ ${symbol_pound} (also update the pom.xml to reference the appropriate JDBC drive
 ${symbol_pound}
 ${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
 
-isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=org.hsqldb.jdbcDriver
-isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:hsqldb:mem:test
-isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
-isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=
+${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=org.hsqldb.jdbcDriver
+${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:hsqldb:mem:test
+${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
+${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=
 
 
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=org.h2.Driver
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:h2:mem:test
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
+isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/logging.properties b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/logging.properties
index 9bb482d..430a370 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/logging.properties
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/logging.properties
@@ -117,8 +117,6 @@ log4j.logger.org.apache.isis.core.runtime.threadpool.ThreadPoolSupport=DEBUG,Thr
 log4j.additivity.org.apache.isis.core.runtime.threadpool.ThreadPoolSupport=false
 
 
-
-
 ! turn on the internal log4j debugging flag so we can see what it is doing
 ${symbol_pound}log4j.debug=true
 
@@ -243,5 +241,5 @@ log4j.additivity.dom.simple.SimpleObject=false
 
 
 ${symbol_pound} ERROR to suppress the WARNings we get as of 1.15.0
-log4j.logger.org.apache.wicket.page.PartialPageUpdate=ERROR,Console
-log4j.additivity.org.apache.wicket.page.PartialPageUpdate=false
+log4j.logger.org.apache.wicket.page.XmlPartialPageUpdate=ERROR,Console
+log4j.additivity.org.apache.wicket.page.XmlPartialPageUpdate=false
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml
index a807cb8..081a738 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml
@@ -31,302 +31,22 @@
         <welcome-file>about/index.html</welcome-file>
     </welcome-file-list>
 
-    <!-- shiro security configuration -->
     <listener>
-        <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
+        <listener-class>org.apache.isis.core.webapp.IsisWebAppContextListener</listener-class>
     </listener>
 
-    <filter>
-        <filter-name>ShiroFilter</filter-name>
-        <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
-    </filter>
-
-    <filter-mapping>
-        <filter-name>ShiroFilter</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-
-
-
-    <!-- which configuration directory to read overloaded property files from -->
-    <!-- 
-    By default the framework will read configuration properties from the WEB-INF
-    directory (where this web.xml file resides).
-
-    If you want to read configuration files from some other external directory,
-    and the location of that external directory is the same/standardized for all
-    locations where you intend to deploy the WAR file, you can uncomment the
-    'isis.config.dir' context parameter, below, and set it to that standardized
-    location, eg:
-
-    <context-param>
-        <param-name>isis.config.dir</param-name>
-        <param-value>/usr/local/conf</param-value>
-    </context-param>
-
-    If however the location of the external directory changes from one deployment
-    to another (eg system testing, UAT, production etc) then you should be
-    able to override the context parameter through the servlet container's own
-    (proprietary) configuration files.
-
-    For example, if deploying to Tomcat, you can edit ${symbol_dollar}CATALINA_BASE/conf/context.xml,
-    and add:
-
-    <Parameter name="isis.config.dir"
-               value="/usr/local/conf/systest"
-               override="false"/>
-
-    For more detail see: http://tomcat.apache.org/tomcat-7.0-doc/config/context.html${symbol_pound}Context_Parameters
-    -->
-
-
-    <!--
-    determines which additional configuration files to search for 
-     -->
-    <context-param>
-        <param-name>isis.viewers</param-name>
-        <param-value>wicket,restfulobjects</param-value>
-    </context-param>
-
-
-
-    <!-- 
-    for diagnostics
-    -->
-    <filter>
-        <filter-name>IsisLogOnExceptionFilter</filter-name>
-        <filter-class>org.apache.isis.core.webapp.diagnostics.IsisLogOnExceptionFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>IsisLogOnExceptionFilter</filter-name>
-        <url-pattern>/wicket/*</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>IsisLogOnExceptionFilter</filter-name>
-        <url-pattern>/restful/*</url-pattern>
-    </filter-mapping>
-
-
-
-    <!-- cache static resources for 1 day -->
-    <filter>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <filter-class>org.apache.isis.core.webapp.content.ResourceCachingFilter</filter-class>
-        <init-param>
-            <param-name>CacheTime</param-name>
-            <param-value>86400</param-value>
-        </init-param>
-    </filter>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.css</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.png</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.jpg</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.jpeg</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.gif</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.svg</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.js</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.html</url-pattern>
-    </filter-mapping>
-    <filter-mapping>
-        <filter-name>ResourceCachingFilter</filter-name>
-        <url-pattern>*.swf</url-pattern>
-    </filter-mapping>
-    
-    <servlet>
-        <servlet-name>Resource</servlet-name>
-        <servlet-class>org.apache.isis.core.webapp.content.ResourceServlet</servlet-class>
-    </servlet>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.css</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.png</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.jpg</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.jpeg</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.gif</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.svg</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.js</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.html</url-pattern>
-    </servlet-mapping>
-    <servlet-mapping>
-        <servlet-name>Resource</servlet-name>
-        <url-pattern>*.swf</url-pattern>
-    </servlet-mapping>
-
-
     <servlet>
-        <servlet-name>WebjarsServlet</servlet-name>
-        <servlet-class>org.webjars.servlet.WebjarsServlet</servlet-class>
-        <init-param>
-            <param-name>disableCache</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <load-on-startup>2</load-on-startup>
-    </servlet>
-    <servlet-mapping>
-        <servlet-name>WebjarsServlet</servlet-name>
-        <url-pattern>/webjars/*</url-pattern>
-    </servlet-mapping>
-
-
-
-    <!--
-    -
-    - config specific to the wicket-viewer
-    -
-    -->
-    <filter>
-        <filter-name>WicketFilter</filter-name>
-        <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
-        <init-param>
-            <param-name>applicationClassName</param-name>
-            <param-value>org.apache.isis.viewer.wicket.viewer.IsisWicketApplication</param-value>
-        </init-param>
-    </filter>
-    <filter-mapping>
-        <filter-name>WicketFilter</filter-name>
-        <url-pattern>/wicket/*</url-pattern>
-    </filter-mapping>
-
-
-    <context-param>
-        <param-name>configuration</param-name>
-        <!-- 
-        <param-value>deployment</param-value>
-         -->
-        <param-value>development</param-value>
-    </context-param>
-    
-   
-    <!--
-    -
-    - config specific to the restfulobjects-viewer
-    -
-    -->
-
-    <!--
-    THE FOLLOWING CONFIGURATION IS NOT REQUIRED IF THE WICKET VIEWER IS IN USE.
-    IF THE WICKET VIEWER CONFIGURATION IS REMOVED, THEN UNCOMMENT
-    
-    <listener>
-        <listener-class>org.apache.isis.core.webapp.IsisWebAppBootstrapper</listener-class>
-    </listener>
-
-    <context-param>
-        <param-name>deploymentType</param-name>
-        <param-value>SERVER_PROTOTYPE</param-value>
-    </context-param>
-
-    <context-param>
-        <param-name>isis.viewers</param-name>
-        <param-value>restfulobjects</param-value>
-    </context-param>    
-    -->    
-    
-    <!-- bootstrap the RestEasy framework -->
-    <listener>
-        <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
-    </listener>
-
-    <!-- used by RestEasy to determine the JAX-RS resources and other related configuration -->
-    <context-param>
-        <param-name>javax.ws.rs.Application</param-name>
-        <param-value>org.apache.isis.viewer.restfulobjects.server.RestfulObjectsApplication</param-value>
-    </context-param>
-    
-    <context-param>
-        <param-name>resteasy.servlet.mapping.prefix</param-name>
-        <param-value>/restful/</param-value>
-    </context-param>
-    
-
-    <!-- authenticate user, set up an Isis session -->
-    <filter>
-        <filter-name>IsisSessionFilterForRestfulObjects</filter-name>
-        <filter-class>org.apache.isis.core.webapp.IsisSessionFilter</filter-class>
-        <!-- authentication required for REST -->
+        <servlet-name>H2Console</servlet-name>
+        <servlet-class>org.h2.server.web.WebServlet</servlet-class>
         <init-param>
-            <param-name>authenticationSessionStrategy</param-name>
-            <param-value>org.apache.isis.viewer.restfulobjects.server.authentication.AuthenticationSessionStrategyBasicAuth</param-value>
+            <param-name>webAllowOthers</param-name>
+            <param-value>true</param-value>
         </init-param>
-        <init-param>
-            <!-- what to do if no session was found... -->
-            <param-name>whenNoSession</param-name>
-            <!-- ... 401 and a basic authentication challenge if request originates from web browser -->
-            <param-value>auto</param-value>
-        </init-param>
-        <init-param>
-            <param-name>passThru</param-name>
-            <param-value>/restful/swagger</param-value>
-        </init-param>
-    </filter>
-    <filter-mapping>
-        <!-- this is mapped to the entire app; however the IsisSessionFilter will "notice" if the session filter has already been
-             executed for the request pipeline, and if so will do nothing -->
-        <filter-name>IsisSessionFilterForRestfulObjects</filter-name>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-    </filter-mapping>
-
-    <filter>
-        <filter-name>IsisTransactionFilterForRestfulObjects</filter-name>
-        <filter-class>org.apache.isis.viewer.restfulobjects.server.webapp.IsisTransactionFilterForRestfulObjects</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>IsisTransactionFilterForRestfulObjects</filter-name>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-    </filter-mapping>
-
-
-    <servlet>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-        <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
+        <load-on-startup>1</load-on-startup>
     </servlet>
     <servlet-mapping>
-        <servlet-name>RestfulObjectsRestEasyDispatcher</servlet-name>
-        <url-pattern>/restful/*</url-pattern>
+        <servlet-name>H2Console</servlet-name>
+        <url-pattern>/db/*</url-pattern>
     </servlet-mapping>
 
-
 </web-app>
diff --git a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/about/index.html b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/about/index.html
index f726b1c..fde61b5 100644
--- a/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/about/index.html
+++ b/example/archetype/helloworld/src/main/resources/archetype-resources/src/main/webapp/about/index.html
@@ -80,7 +80,7 @@ ${symbol_pound}wrapper {
                 <li>
                     <p>
                         <b>
-                            <a href="swagger-ui/index.html">swagger-ui/</a>
+                            <a href="swagger-ui/index.template.html">swagger-ui/</a>
                         </b>
                     </p>
                     <p>
diff --git a/example/archetype/helloworld/src/test/resources/projects/basic/archetype.properties b/example/archetype/helloworld/src/test/resources/projects/basic/archetype.properties
index 25c6141..e5804d8 100644
--- a/example/archetype/helloworld/src/test/resources/projects/basic/archetype.properties
+++ b/example/archetype/helloworld/src/test/resources/projects/basic/archetype.properties
@@ -1,4 +1,4 @@
-#Wed Jan 02 10:09:45 GMT 2019
+#Sat Jan 12 14:15:35 GMT 2019
 package=it.pkg
 version=0.1-SNAPSHOT
 groupId=archetype.it


[isis] 02/04: ISIS-1811: recreating simpleapp archetype

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

danhaywood pushed a commit to branch release-2.0.0-M2-RC1
in repository https://gitbox.apache.org/repos/asf/isis.git

commit f28a48572614cfb2f273eb3bb59dcb79f5cc12dd
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Jan 12 14:04:44 2019 +0000

    ISIS-1811: recreating simpleapp archetype
---
 example/archetype/simpleapp/pom.xml                |   78 +
 .../appended-resources/supplemental-models.xml     |   26 +
 .../META-INF/maven/archetype-metadata.xml          |  181 ++
 .../resources/archetype-resources/.gitlab-ci.yml   |   51 +
 .../resources/archetype-resources/.m2/settings.xml |   23 +
 .../main/resources/archetype-resources/README.adoc |  244 ++
 .../archetype-resources/_checks/checkstyle.xml     |  290 +++
 .../resources/archetype-resources/_checks/pmd.xml  |   49 +
 .../application/logging-integtest.properties       |  124 +
 .../archetype-resources/application/pom.xml        |  131 +
 .../application/DomainAppApplicationModule.java    |   43 +
 ...mainAppFixtureScriptsSpecificationProvider.java |   48 +
 .../fixture/scenarios/DomainAppDemo.java           |   48 +
 .../application/manifest/DomainAppAppManifest.java |   43 +
 .../DomainAppAppManifestBypassSecurity.java        |   32 +
 .../manifest/DomainAppAppManifestWithFixtures.java |   40 +
 ...inAppAppManifestWithFixturesBypassSecurity.java |   33 +
 .../manifest/isis-non-changing.properties          |  741 ++++++
 .../application/manifest/menubars.layout.xml       |  118 +
 .../services/health/HealthCheckServiceImpl.java    |   32 +
 .../services/homepage/HomePageService.java         |   46 +
 .../services/homepage/HomePageViewModel.java       |   49 +
 .../services/homepage/HomePageViewModel.layout.xml |   53 +
 .../services/homepage/HomePageViewModel.png        |  Bin 0 -> 456 bytes
 .../bdd/specglue/BootstrappingGlue.java            |   42 +
 .../bdd/specglue/BootstrappingGlueAbstract.java    |   40 +
 .../bdd/specglue/CatalogOfFixturesGlue.java        |   32 +
 .../application/bdd/specs/RunIntegBddSpecs.java    |   46 +
 .../SimpleObjectSpec_listAllAndCreate.feature      |   25 +
 .../integtests/DomainAppIntegTestAbstract.java     |   34 +
 .../integtests/mml/MetaModelService_IntegTest.java |  150 ++
 ...omainAppFixtureScriptsSpecificationProvider.xml |   48 +
 ...application.fixture.scenarios.DomainAppDemo.xml |  270 ++
 ...tion.services.health.HealthCheckServiceImpl.xml |   48 +
 ...plication.services.homepage.HomePageService.xml |   47 +
 ...ication.services.homepage.HomePageViewModel.xml |  352 +++
 ...ainapp.modules.simple.dom.impl.SimpleObject.xml |  878 +++++++
 ...inapp.modules.simple.dom.impl.SimpleObjects.xml |  270 ++
 ....apache.isis.applib.value.LocalResourcePath.xml |    5 +
 .../integtests/smoke/Smoke_IntegTest.java          |  100 +
 ...MetaModelService_IntegTest.exports.approved.xml | 2746 ++++++++++++++++++++
 .../src/test/resources/cucumber.properties         |    4 +
 .../application/translations.pot                   |    0
 .../resources/archetype-resources/enhance-all.sh   |    2 +
 .../archetype-resources/module-simple/build.gradle |   72 +
 .../archetype-resources/module-simple/gradlew      |  164 ++
 .../archetype-resources/module-simple/gradlew.bat  |   90 +
 .../module-simple/layouts.gradle                   |   49 +
 .../module-simple/liveReload.gradle                |   56 +
 .../module-simple/logging-dn-enhance.properties    |   44 +
 .../module-simple/logging-integtest.properties     |  123 +
 .../archetype-resources/module-simple/pom.xml      |  202 ++
 .../src/main/java/META-INF/persistence.xml         |   29 +
 .../domainapp/modules/simple/SimpleModule.java     |   51 +
 .../modules/simple/SimpleModuleManifest.java       |   41 +
 .../modules/simple/dom/impl/SimpleObject.java      |  111 +
 .../simple/dom/impl/SimpleObject.layout.xml        |   71 +
 .../modules/simple/dom/impl/SimpleObject.png       |  Bin 0 -> 653 bytes
 .../modules/simple/dom/impl/SimpleObjects.java     |  100 +
 .../domainapp/modules/simple/dom/types/Name.java   |   39 +
 .../domainapp/modules/simple/dom/types/Notes.java  |   28 +
 .../simple/fixture/SimpleObjectBuilder.java        |   53 +
 .../simple/fixture/SimpleObject_persona.java       |   66 +
 .../modules/simple/dom/impl/SimpleObject_Test.java |   53 +
 .../simple/dom/impl/SimpleObjects_Test.java        |  119 +
 .../integtests/SimpleModuleIntegTestAbstract.java  |   35 +
 .../integtests/tests/SimpleObject_IntegTest.java   |  153 ++
 .../integtests/tests/SimpleObjects_IntegTest.java  |  133 +
 .../modules/simple/specglue/SimpleObjectsGlue.java |   52 +
 .../module-simple/translations.pot                 |    0
 .../src/main/resources/archetype-resources/pom.xml |  199 ++
 .../resources/archetype-resources/webapp/pom.xml   |  285 ++
 .../webapp/src/main/jettyconsole/isis-banner.pdn   |  Bin 0 -> 64162 bytes
 .../webapp/src/main/jettyconsole/isis-banner.png   |  Bin 0 -> 27310 bytes
 .../webapp/src/main/webapp/WEB-INF/isis.properties |  136 +
 .../src/main/webapp/WEB-INF/logging.properties     |  249 ++
 .../webapp/src/main/webapp/WEB-INF/shiro.ini       |   93 +
 .../src/main/webapp/WEB-INF/translations-en.po     |  674 +++++
 .../src/main/webapp/WEB-INF/translations-es.po     |  673 +++++
 .../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         |   52 +
 .../src/main/webapp/about/images/isis-logo.png     |  Bin 0 -> 14160 bytes
 .../webapp/src/main/webapp/about/index.html        |  120 +
 .../webapp/src/main/webapp/css/application.css     |   19 +
 .../main/webapp/images/apache-isis/logo-48x48.png  |  Bin 0 -> 2622 bytes
 .../webapp/src/main/webapp/scripts/application.js  |    3 +
 .../resources/projects/basic/archetype.properties  |    5 +
 .../src/test/resources/projects/basic/goal.txt     |    0
 89 files changed, 13451 insertions(+)

diff --git a/example/archetype/simpleapp/pom.xml b/example/archetype/simpleapp/pom.xml
new file mode 100644
index 0000000..ddf0097
--- /dev/null
+++ b/example/archetype/simpleapp/pom.xml
@@ -0,0 +1,78 @@
+<?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/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.isis.archetype</groupId>
+  <artifactId>simpleapp-archetype</artifactId>
+  <version>2.0.0-M2</version>
+  <packaging>maven-archetype</packaging>
+  <name>simpleapp-archetype</name>
+  <build>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.archetype</groupId>
+        <artifactId>archetype-packaging</artifactId>
+        <version>3.0.1</version>
+      </extension>
+    </extensions>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <artifactId>maven-archetype-plugin</artifactId>
+          <version>3.0.1</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+  <description>This module defines a standard parent POM to use for various Incode applications and modules.  
+        Its primary purpose is to make it easy to use a set up maven mixins (https://github.com/odavid/maven-plugins)
+        within child POMs.  Specifically this means locking down the versions of plugins using pluginManagement.
+        
+        It does NOT define any mixins for Apache Isis.</description>
+  <url>https://github.com/incodehq/incode-build/simpleapp</url>
+  <developers>
+    <developer>
+      <id>danhaywood</id>
+      <name>Dan Haywood</name>
+      <email>dan@haywood-associates.co.uk</email>
+    </developer>
+  </developers>
+  <licenses>
+    <license>
+      <name>The Apache Software License, Version 2.0</name>
+      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
+  <scm>
+    <connection>scm:git:git@github.com:incodehq/incode-build.git/simpleapp</connection>
+    <developerConnection>scm:git:git@github.com:incodehq/incode-build.git/simpleapp</developerConnection>
+    <url>git@github.com:incodehq/incode-build.git/simpleapp</url>
+  </scm>
+  <parent>
+    <groupId>org.apache.isis.core</groupId>
+    <artifactId>isis</artifactId>
+    <version>2.0.0-M2</version>
+    <relativePath>../../../core/pom.xml</relativePath>
+  </parent>
+  <properties>
+    <archetype.test.skip>true</archetype.test.skip>
+  </properties>
+</project>
diff --git a/example/archetype/simpleapp/src/main/appended-resources/supplemental-models.xml b/example/archetype/simpleapp/src/main/appended-resources/supplemental-models.xml
new file mode 100644
index 0000000..01c58d8
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/appended-resources/supplemental-models.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.
+-->
+<supplementalDataModels 
+  xmlns="http://maven.apache.org/supplemental-model/1.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/supplemental-model/1.0.0 
+            http://maven.apache.org/xsd/supplemental-model-1.0.0.xsd">
+
+</supplementalDataModels>
diff --git a/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml b/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml
new file mode 100644
index 0000000..4b8fa27
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/META-INF/maven/archetype-metadata.xml
@@ -0,0 +1,181 @@
+<?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.
+-->
+<archetype-descriptor xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="simpleapp" xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd">
+  <fileSets>
+    <fileSet filtered="true" encoding="UTF-8">
+      <directory>_checks</directory>
+      <includes>
+        <include>**/*.xml</include>
+      </includes>
+    </fileSet>
+    <fileSet filtered="true" encoding="UTF-8">
+      <directory>.m2</directory>
+      <includes>
+        <include>**/*.xml</include>
+      </includes>
+    </fileSet>
+    <fileSet encoding="UTF-8">
+      <directory/>
+      <includes>
+        <include>.gitattributes</include>
+        <include>.gitignore</include>
+        <include>.gitlab-ci.yml</include>
+        <include>enhance-all.sh</include>
+        <include>README.adoc</include>
+      </includes>
+    </fileSet>
+  </fileSets>
+  <modules>
+    <module name="${rootArtifactId}-module-simple" id="${rootArtifactId}-module-simple" dir="module-simple">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.java</include>
+            <include>**/*.xml</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.png</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/test/java</directory>
+          <includes>
+            <include>**/*.java</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory/>
+          <includes>
+            <include>logging-dn-enhance.properties</include>
+            <include>logging-integtest.properties</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory/>
+          <includes>
+            <include>.gitignore</include>
+            <include>build.gradle</include>
+            <include>gradlew</include>
+            <include>gradlew.bat</include>
+            <include>layouts.gradle</include>
+            <include>liveReload.gradle</include>
+            <include>translations.pot</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module name="${rootArtifactId}-application" id="${rootArtifactId}-application" dir="application">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.java</include>
+            <include>**/*.xml</include>
+            <include>**/*.properties</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/main/java</directory>
+          <includes>
+            <include>**/*.png</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/test/java</directory>
+          <includes>
+            <include>**/*.java</include>
+            <include>**/*.xml</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/test/java</directory>
+          <includes>
+            <include>**/*.feature</include>
+            <include>**/*.gitignore</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/test/resources</directory>
+          <includes>
+            <include>**/*.properties</include>
+          </includes>
+        </fileSet>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory/>
+          <includes>
+            <include>logging-integtest.properties</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory/>
+          <includes>
+            <include>.gitignore</include>
+            <include>translations.pot</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+    <module name="${rootArtifactId}-webapp" id="${rootArtifactId}-webapp" dir="webapp">
+      <fileSets>
+        <fileSet filtered="true" encoding="UTF-8">
+          <directory>src/main/webapp</directory>
+          <includes>
+            <include>**/*.xml</include>
+            <include>**/*.html</include>
+            <include>**/*.properties</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/main/resources</directory>
+          <includes>
+            <include>**/*</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/main/jettyconsole</directory>
+          <includes>
+            <include>**/*.png</include>
+            <include>**/*.pdn</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>src/main/webapp</directory>
+          <includes>
+            <include>**/*.css</include>
+            <include>**/*.ini</include>
+            <include>**/*.png</include>
+            <include>**/*.js</include>
+            <include>**/*.po</include>
+          </includes>
+        </fileSet>
+        <fileSet encoding="UTF-8">
+          <directory>lib</directory>
+          <includes>
+            <include>**/*.gitignore</include>
+          </includes>
+        </fileSet>
+      </fileSets>
+    </module>
+  </modules>
+</archetype-descriptor>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/.gitlab-ci.yml b/example/archetype/simpleapp/src/main/resources/archetype-resources/.gitlab-ci.yml
new file mode 100644
index 0000000..7d4a33b
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/.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/example/archetype/simpleapp/src/main/resources/archetype-resources/.m2/settings.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/.m2/settings.xml
new file mode 100644
index 0000000..a189f31
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/.m2/settings.xml
@@ -0,0 +1,23 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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>${symbol_dollar}{env.DOCKER_REGISTRY_USERNAME}</username>
+      <password>${symbol_dollar}{env.DOCKER_REGISTRY_PASSWORD}</password>
+      <configuration>
+        <email>${symbol_dollar}{env.DOCKER_REGISTRY_EMAIL}</email>
+      </configuration>
+    </server>
+    <server>
+      <id>tomcat-server</id>
+      <username>admin</username>
+      <password>password</password>
+    </server>
+  </servers>
+</settings>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/README.adoc b/example/archetype/simpleapp/src/main/resources/archetype-resources/README.adoc
new file mode 100644
index 0000000..6b62aab
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/README.adoc
@@ -0,0 +1,244 @@
+= SimpleApp
+
+This application was generated by the link:http://isis.apache.org[Apache Isis] link:http://isis.apache.org/guides/ugfun.html#_ugfun_getting-started_simpleapp-archetype[simpleapp archetype].
+It is intended 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 jetty: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.
+
+|`_checks`
+|Checkstyle and PMD rule sets for static analysis.
+
+[TIP]
+====
+Extend/adapt these according to your own standards.
+====
+
+
+|====================
+
+== More advanced use cases
+
+* To enhance all JDO entities prior to running: +
++
+[source,bash]
+----
+mvn -pl module-simple datanucleus:enhance -o
+----
+
+* To also generate the link:https://github.com/eirbjo/jetty-console[Jetty console], allowing the application to run as a standalone JAR: +
++
+[source,bash]
+----
+mvn install -Dmavenmixin-jettyconsole
+----
++
+This can then be run using: +
++
+[source,bash]
+----
+cd webapp/target && java -jar simpleapp-webapp-xxx-jetty-console.war
+----
++
+Add additional arguments ``--headless`` or ``--port 9999``, if required.
++
+It can also be run using: +
++
+[source,bash]
+----
+mvn -pl webapp && mvn antrun:run -Dmavenmixin-jettyconsole
+----
++
+or to specify arguments:
++
+[source,bash]
+----
+mvn -pl webapp && mvn antrun:run -Dmavenmixin-jettyconsole \
+    -Dmaven-antrun-plugin.jettyconsole.args="--headless --port 9090"
+----
+
+
+* To also generate source and javadoc JARs:
++
+[source,bash]
+----
+mvn clean package -Dmavenmixin-sourceandjavadoc
+----
++
+[NOTE]
+====
+This is configured only for the `module-simple` module.
+====
+
+* To create the website (for the `module-simple` module) with source/javadoc and static analysis:
++
+[source,bash]
+----
+mvn -pl module-simple site -Dmavenmixin-sourceandjavadoc -Dmavenmixin-staticanalysis
+----
++
+[NOTE]
+====
+This is intended to run only for the `module-simple` module, and will generate a website under`target/site/index.html`.
+====
+
+
+* 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 disable the running of the `isis:validate` goal: +
++
+[source,bash]
+----
+mvn -Dskip.mavenmixin-isisvalidate  
+----
+
+
+* To disable the generation of cucumber reports: +
++
+[source,bash]
+----
+mvn -Dskip.mavenmixin-cucumberreporting
+----
++
+[TIP]
+====
+By default, cucumber reports are generated at `target/cucumber-html-reports/overview-features.html` (in the ``application`` module).
+====
+
+* To disable the running of the `isis:swagger` goal:
++
+[source,bash]
+----
+mvn -Dskip.mavenmixin-isisswagger
+----
++
+[TIP]
+====
+By default, Swagger schema definition files are generated at `target/generated-resources/isis-swagger` (in the ``webapp`` module).
+====
+
+* 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/example/archetype/simpleapp/src/main/resources/archetype-resources/_checks/checkstyle.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/_checks/checkstyle.xml
new file mode 100644
index 0000000..1d57a99
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/_checks/checkstyle.xml
@@ -0,0 +1,290 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?xml version="1.0"?>
+<!--
+  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.
+-->
+<!DOCTYPE module PUBLIC
+    "-//Puppy Crawl//DTD Check Configuration 1.1//EN"
+    "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">
+
+<!--
+
+  Checkstyle configuration that checks the sun coding conventions from:
+
+    - the Java Language Specification at
+      http://java.sun.com/docs/books/jls/second_edition/html/index.html
+
+    - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
+
+    - the Javadoc guidelines at
+      http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
+
+    - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
+
+    - some best practices
+
+  Checkstyle is very configurable. Be sure to read the documentation at
+  http://checkstyle.sf.net (or in your downloaded distribution).
+
+  Most Checks are configurable, be sure to consult the documentation.
+
+  To completely disable a check, just comment it out or delete it from the file.
+
+  Finally, it is worth reading the documentation.
+
+-->
+
+<module name="Checker">
+
+    <!-- Checks that a package.html file exists for each package.     -->
+    <!-- See http://checkstyle.sf.net/config_javadoc.html${symbol_pound}PackageHtml -->
+    <module name="JavadocPackage"/>
+    <!--
+    -->
+
+    <!-- Checks whether files end with a new line.                        -->
+    <!-- See http://checkstyle.sf.net/config_misc.html${symbol_pound}NewlineAtEndOfFile -->
+        <!-- 
+    <module name="NewlineAtEndOfFile"/>
+         -->
+
+    <!-- Checks that property files contain the same keys.         -->
+    <!-- See http://checkstyle.sf.net/config_misc.html${symbol_pound}Translation -->
+    <module name="Translation"/>
+
+    <!--
+    eg:
+    //CHECKSTYLE.OFF: IllegalCatch - Much more readable than catching 7 exceptions
+    catch (Exception e)
+    //CHECKSTYLE.ON: IllegalCatch 
+     -->
+    <module name="SuppressionCommentFilter">
+        <property name="offCommentFormat" value="CHECKSTYLE.OFF${symbol_escape}: ([${symbol_escape}w${symbol_escape}|]+)"/>
+        <property name="onCommentFormat" value="CHECKSTYLE.ON${symbol_escape}: ([${symbol_escape}w${symbol_escape}|]+)"/>
+        <property name="checkFormat" value="${symbol_dollar}1"/>
+    </module>
+
+    <!--
+    eg:
+    // CHECKSTYLE IGNORE check FOR NEXT 1 LINES
+    public void onClick(View view) { ... }     -->    
+    <module name="SuppressWithNearbyCommentFilter">
+        <property name="commentFormat" value="CHECKSTYLE.IGNORE (${symbol_escape}w+) FOR NEXT (${symbol_escape}d+) LINES"/>
+        <property name="checkFormat" value="${symbol_dollar}1"/>
+        <property name="influenceFormat" value="${symbol_dollar}2"/>
+    </module>
+
+    <module name="TreeWalker">
+
+        <property name="cacheFile" value="${symbol_dollar}{checkstyle.cache.file}"/>
+
+        <!-- not available in eclipse-cs
+        <module name="JavadocDeprecated"/>
+        -->
+        <module name="MissingOverride"/>
+        
+        <!-- ************************************************************** -->
+        <!-- Checks that are different from the sun coding conventions ones -->
+        <!-- ************************************************************** -->
+        <property name="tabWidth" value="4"/>
+        <module name="LeftCurly">
+          <property name="option" value="eol"/>
+        </module>
+        <module name="RightCurly">
+          <property name="option" value="same"/>
+        </module>
+        <module name="MemberName">
+          <property name="format" value="^[a-z]([a-zA-Z0-9])*${symbol_dollar}"/>
+        </module>
+        <module name="StaticVariableName">
+          <property name="format" value="^[A-Z](_?[A-Z0-9])*${symbol_dollar}"/>
+        </module>
+        <module name="MethodName">
+          <property name="format" value="[a-z](_?[a-zA-Z0-9]+)*${symbol_dollar}"/>
+        </module>
+        <module name="ParameterName">
+          <property name="format" value="[a-z]([a-zA-Z0-9]+)*${symbol_dollar}"/>
+        </module>
+        <module name="LocalVariableName">
+          <property name="format" value="[a-z]([a-zA-Z0-9]+)*${symbol_dollar}"/>
+        </module>
+        
+        <!-- ************************************************************** -->
+        <!-- Default Sun coding conventions checks                          -->
+        <!-- ************************************************************** -->
+
+        <!-- Checks for Javadoc comments.                     -->
+        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
+     
+        <!-- TODO: instate at some point (though only for public methods   
+        <module name="JavadocType"/>
+        -->
+        <!-- 
+        <module name="JavadocMethod"/>
+        <module name="JavadocVariable"/>
+         -->
+
+
+        <!-- Checks for Naming Conventions.                  -->
+        <!-- See http://checkstyle.sf.net/config_naming.html -->
+        <module name="ConstantName"/>
+        <module name="PackageName"/>
+        <module name="TypeName"/>
+        <module name="LocalFinalVariableName"/>
+
+
+        <!-- Checks for Headers                              -->
+        <!-- See http://checkstyle.sf.net/config_header.html -->
+                <!--         
+        <module name="Header">
+         -->
+            <!-- The follow property value demonstrates the ability     -->
+            <!-- to have access to ANT properties. In this case it uses -->
+            <!-- the ${symbol_dollar}{basedir} property to allow Checkstyle to be run  -->
+            <!-- from any directory within a project.                   -->
+                    <!--             
+            <property name="headerFile" value="${symbol_dollar}{checkstyle.header.file}"/>
+        </module>
+         -->
+
+        <!-- Following interprets the header file as regular expressions. -->
+        <!-- <module name="RegexpHeader"/>                                -->
+
+
+        <!-- Checks for imports                              -->
+        <!-- See http://checkstyle.sf.net/config_import.html -->
+        <module name="AvoidStarImport"/>
+        <module name="IllegalImport"/>
+        <module name="RedundantImport"/>
+        <module name="UnusedImports"/>
+
+    
+        <!-- Checks for blocks. You know, those {}'s         -->
+        <!-- See http://checkstyle.sf.net/config_blocks.html -->
+        <module name="EmptyBlock"/>
+        <module name="NeedBraces"/>
+        <!-- 
+        <module name="AvoidNestedBlocks"/>
+         -->
+
+
+        <!-- Checks for common coding problems               -->
+        <!-- See http://checkstyle.sf.net/config_coding.html -->
+        <module name="EmptyStatement"/>
+        <module name="MagicNumber"/>
+        <module name="MissingSwitchDefault"/>
+        <module name="RedundantThrows"/>
+        <module name="SimplifyBooleanExpression"/>
+        <module name="SimplifyBooleanReturn"/>
+        
+        <!-- not supported in maven 
+        <module name="DoubleCheckedLocking"/>  
+         -->
+        <!-- 
+        <module name="AvoidInlineConditionals"/>
+        <module name="EqualsHashCode"/>
+        <module name="HiddenField"/>
+        <module name="IllegalInstantiation"/>
+        <module name="InnerAssignment"/>
+         -->
+
+        <!-- Checks for class design                         -->
+        <!-- See http://checkstyle.sf.net/config_design.html -->
+        <!-- 
+        
+        <module name="VisibilityModifier"/>
+         -->
+         <!-- too many violations... 
+         <module name="DesignForExtension"/>
+          -->
+         <module name="FinalClass"/>
+         <module name="HideUtilityClassConstructor"/>
+         <module name="InterfaceIsType"/>
+
+         
+         <module name="CyclomaticComplexity">
+            <property name="max" value="12"/>
+         </module>
+         <module name="NPathComplexity">
+            <property name="max" value="160"/>
+        </module>
+
+        <!-- Miscellaneous other checks.                   -->
+        <!-- See http://checkstyle.sf.net/config_misc.html -->
+        <!-- 
+        <module name="ArrayTypeStyle"/>
+        <module name="GenericIllegalRegexp">
+            <property name="format" value="${symbol_escape}s+${symbol_dollar}"/>
+            <property name="message" value="Line has trailing spaces."/>
+        </module>
+         -->
+         <!-- removed; we detect these in other ways. 
+        <module name="TodoComment"/>
+          -->
+        <module name="UpperEll"/>
+        <module name="FinalParameters"/>
+         
+        <!-- Checks for whitespace                               -->
+        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+        <!-- 
+        <module name="NoWhitespaceAfter"/>
+        <module name="NoWhitespaceBefore"/>
+        <module name="OperatorWrap"/>
+        <module name="ParenPad"/>
+        <module name="WhitespaceAfter"/>
+        <module name="WhitespaceAround"/>
+        <module name="TabCharacter"/>
+         -->
+        <module name="EmptyForIteratorPad"/>
+
+
+        <!-- Modifier Checks                                    -->
+        <!-- See http://checkstyle.sf.net/config_modifiers.html -->
+        <!-- 
+        <module name="ModifierOrder"/>
+        <module name="RedundantModifier"/>
+         -->
+         
+        <!-- Checks for Size Violations.                    -->
+        <!-- See http://checkstyle.sf.net/config_sizes.html -->
+         <module name="LineLength">
+            <property name="max" value="120"/>
+        </module>
+        <module name="MethodLength">
+            <property name="max" value="30"/>
+        </module>
+        <module name="ParameterNumber">
+            <property name="max" value="6"/>
+        </module>
+
+    </module>
+    
+    
+
+    <module name="FileLength">
+        <property name="max" value="1500"/>
+    </module>
+
+    <module name="FileTabCharacter">
+        <property name="eachLine" value="true"/>
+        <property name="fileExtensions" value="java,xml"/>
+    </module>
+
+</module>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/_checks/pmd.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/_checks/pmd.xml
new file mode 100644
index 0000000..7f2e381
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/_checks/pmd.xml
@@ -0,0 +1,49 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.
+-->
+<ruleset name="Maven Ruleset"
+  xmlns="http://pmd.sf.net/ruleset/1.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
+  xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
+  
+  <!-- 
+    Customized PMD ruleset for Maven, see [0] for more information 
+    [0] http://pmd.sourceforge.net/howtomakearuleset.html
+  -->
+  
+  <description>
+    This ruleset checks the code for discouraged programming constructs.
+  </description>
+  
+  <rule ref="rulesets/java/basic.xml">
+    <exclude name="EmptyCatchBlock"/>
+  </rule>
+  <rule ref="rulesets/java/basic.xml/EmptyCatchBlock">
+    <properties>
+      <property name="allowCommentedBlocks" value="true"/>
+    </properties>
+  </rule>
+  
+  <rule ref="rulesets/java/unusedcode.xml"/>
+  <rule ref="rulesets/java/imports.xml"/>
+</ruleset>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/logging-integtest.properties b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/logging-integtest.properties
new file mode 100644
index 0000000..2e956b5
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/logging-integtest.properties
@@ -0,0 +1,124 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+${symbol_pound}  Licensed to the Apache Software Foundation (ASF) under one
+${symbol_pound}  or more contributor license agreements.  See the NOTICE file
+${symbol_pound}  distributed with this work for additional information
+${symbol_pound}  regarding copyright ownership.  The ASF licenses this file
+${symbol_pound}  to you under the Apache License, Version 2.0 (the
+${symbol_pound}  "License"); you may not use this file except in compliance
+${symbol_pound}  with the License.  You may obtain a copy of the License at
+${symbol_pound}  
+${symbol_pound}         http://www.apache.org/licenses/LICENSE-2.0
+${symbol_pound}         
+${symbol_pound}  Unless required by applicable law or agreed to in writing,
+${symbol_pound}  software distributed under the License is distributed on an
+${symbol_pound}  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+${symbol_pound}  KIND, either express or implied.  See the License for the
+${symbol_pound}  specific language governing permissions and limitations
+${symbol_pound}  under the License.
+
+
+${symbol_pound}
+${symbol_pound} Isis uses log4j is used to provide system logging
+${symbol_pound}
+log4j.rootCategory=INFO, Console
+
+${symbol_pound} The console appender
+log4j.appender.Console=org.apache.log4j.ConsoleAppender
+log4j.appender.Console.target=System.out
+log4j.appender.Console.layout=org.apache.log4j.PatternLayout
+log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE}  [%-20c{1} %-10t %-5p]  %m%n
+
+log4j.appender.File=org.apache.log4j.RollingFileAppender
+log4j.appender.File.file=isis.log
+log4j.appender.File.append=false
+log4j.appender.File.layout=org.apache.log4j.PatternLayout
+log4j.appender.File.layout.ConversionPattern=%d [%-20c{1} %-10t %-5p]  %m%n
+
+log4j.appender.translations-po=org.apache.log4j.FileAppender
+log4j.appender.translations-po.File=./translations.pot
+log4j.appender.translations-po.Append=false
+log4j.appender.translations-po.layout=org.apache.log4j.PatternLayout
+log4j.appender.translations-po.layout.ConversionPattern=%m%n
+
+! turn on the internal log4j debugging flag so we can see what it is doing
+${symbol_pound}log4j.debug=true
+
+
+${symbol_pound} DataNucleus
+${symbol_pound} the first two log the DML and DDL (if set to DEBUG)
+log4j.logger.DataNucleus.Datastore.Native=WARN, Console
+log4j.logger.DataNucleus.Datastore.Schema=DEBUG, Console
+${symbol_pound} the remainder can probably be left to WARN
+log4j.logger.DataNucleus.Persistence=WARN, Console
+log4j.logger.DataNucleus.Transaction=WARN, Console
+log4j.logger.DataNucleus.Connection=WARN, Console
+log4j.logger.DataNucleus.Query=WARN, Console
+log4j.logger.DataNucleus.Cache=WARN, Console
+log4j.logger.DataNucleus.MetaData=WARN, Console
+log4j.logger.DataNucleus.Datastore=WARN, Console
+log4j.logger.DataNucleus.Datastore.Persist=WARN, Console
+log4j.logger.DataNucleus.Datastore.Retrieve=WARN, Console
+log4j.logger.DataNucleus.General=WARN, Console
+log4j.logger.DataNucleus.Lifecycle=WARN, Console
+log4j.logger.DataNucleus.ValueGeneration=WARN, Console
+log4j.logger.DataNucleus.Enhancer=WARN, Console
+log4j.logger.DataNucleus.SchemaTool=ERROR, Console
+log4j.logger.DataNucleus.JDO=WARN, Console
+log4j.logger.DataNucleus.JPA=ERROR, Console
+log4j.logger.DataNucleus.JCA=WARN, Console
+log4j.logger.DataNucleus.IDE=ERROR, Console
+
+log4j.additivity.DataNucleus.Datastore.Native=false
+log4j.additivity.DataNucleus.Datastore.Schema=false
+log4j.additivity.DataNucleus.Datastore.Persistence=false
+log4j.additivity.DataNucleus.Datastore.Transaction=false
+log4j.additivity.DataNucleus.Datastore.Connection=false
+log4j.additivity.DataNucleus.Datastore.Query=false
+log4j.additivity.DataNucleus.Datastore.Cache=false
+log4j.additivity.DataNucleus.Datastore.MetaData=false
+log4j.additivity.DataNucleus.Datastore.Datastore=false
+log4j.additivity.DataNucleus.Datastore.Datastore.Persist=false
+log4j.additivity.DataNucleus.Datastore.Datastore.Retrieve=false
+log4j.additivity.DataNucleus.Datastore.General=false
+log4j.additivity.DataNucleus.Datastore.Lifecycle=false
+log4j.additivity.DataNucleus.Datastore.ValueGeneration=false
+log4j.additivity.DataNucleus.Datastore.Enhancer=false
+log4j.additivity.DataNucleus.Datastore.SchemaTool=false
+log4j.additivity.DataNucleus.Datastore.JDO=false
+log4j.additivity.DataNucleus.Datastore.JPA=false
+log4j.additivity.DataNucleus.Datastore.JCA=false
+log4j.additivity.DataNucleus.Datastore.IDE=false
+
+
+
+
+${symbol_pound} if using log4jdbc-remix as JDBC driver
+${symbol_pound}log4j.logger.jdbc.sqlonly=DEBUG, sql, Console
+${symbol_pound}log4j.additivity.jdbc.sqlonly=false
+${symbol_pound}log4j.logger.jdbc.resultsettable=DEBUG, jdbc, Console
+${symbol_pound}log4j.additivity.jdbc.resultsettable=false
+
+${symbol_pound}log4j.logger.jdbc.audit=WARN,jdbc, Console
+${symbol_pound}log4j.additivity.jdbc.audit=false
+${symbol_pound}log4j.logger.jdbc.resultset=WARN,jdbc
+${symbol_pound}log4j.additivity.jdbc.resultset=false
+${symbol_pound}log4j.logger.jdbc.sqltiming=WARN,sqltiming
+${symbol_pound}log4j.additivity.jdbc.sqltiming=false
+${symbol_pound}log4j.logger.jdbc.connection=FATAL,connection
+${symbol_pound}log4j.additivity.jdbc.connection=false
+
+
+log4j.logger.org.apache.isis.core.runtime.services.i18n.po.PoWriter=INFO,translations-po
+log4j.additivity.org.apache.isis.core.runtime.services.i18n.po.PoWriter=false
+
+
+log4j.logger.org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder=WARN,Console
+log4j.additivity.org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder=false
+
+log4j.logger.org.apache.isis.core.integtestsupport.IntegrationBootstrapAbstract=DEBUG,Console
+log4j.additivity.org.apache.isis.core.integtestsupport.IntegrationBootstrapAbstract=false
+
+log4j.logger.com.mchange.v2.c3p0.SQLWarnings=WARN,Console
+log4j.additivity.com.mchange.v2.c3p0.SQLWarnings=false
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/pom.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/pom.xml
new file mode 100644
index 0000000..87bb886
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/pom.xml
@@ -0,0 +1,131 @@
+<?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>${groupId}</groupId>
+        <artifactId>${rootArtifactId}</artifactId>
+        <version>${version}</version>
+    </parent>
+
+    <artifactId>${artifactId}</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>
+
+    <build>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**</include>
+                </includes>
+                <excludes>
+                    <exclude>**/*.java</exclude>
+                </excludes>
+            </resource>
+        </resources>
+        <testResources>
+            <testResource>
+                <directory>src/test/resources</directory>
+            </testResource>
+            <testResource>
+                <directory>src/test/java</directory>
+                <includes>
+                    <include>**</include>
+                </includes>
+                <excludes>
+                    <exclude>**/*.java</exclude>
+                </excludes>
+            </testResource>
+        </testResources>
+        <plugins>
+            <plugin>
+                <groupId>com.github.odavid.maven.plugins</groupId>
+                <artifactId>mixin-maven-plugin</artifactId>
+                <version>0.1-alpha-39</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <mixins>
+                        <mixin>
+                            <groupId>com.danhaywood.mavenmixin</groupId>
+                            <artifactId>standard</artifactId>
+                        </mixin>
+                        <mixin>
+                            <groupId>com.danhaywood.mavenmixin</groupId>
+                            <artifactId>enforcerrelaxed</artifactId>
+                        </mixin>
+                        <mixin>
+                            <groupId>com.danhaywood.mavenmixin</groupId>
+                            <artifactId>surefire</artifactId>
+                        </mixin>
+                        <mixin>
+                            <groupId>com.danhaywood.mavenmixin</groupId>
+                            <artifactId>cucumberreporting</artifactId>
+                        </mixin>
+                    </mixins>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>${rootArtifactId}-module-simple</artifactId>
+        </dependency>
+
+        <!-- TESTS -->
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>${rootArtifactId}-module-simple</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.isis.mavendeps</groupId>
+            <artifactId>isis-mavendeps-testing</artifactId>
+            <type>pom</type>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.approvaltests</groupId>
+            <artifactId>approvaltests</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.hsqldb</groupId>
+            <artifactId>hsqldb</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+
+    </dependencies>
+
+</project>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/DomainAppApplicationModule.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/DomainAppApplicationModule.java
new file mode 100644
index 0000000..342d795
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/DomainAppApplicationModule.java
@@ -0,0 +1,43 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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 java.util.Set;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+import com.google.common.collect.Sets;
+
+import org.apache.isis.applib.Module;
+import org.apache.isis.applib.ModuleAbstract;
+
+import domainapp.modules.simple.SimpleModule;
+
+@XmlRootElement(name = "module")
+public class DomainAppApplicationModule extends ModuleAbstract {
+
+    @Override
+    public Set<Module> getDependencies() {
+        return Sets.<Module>newHashSet(new SimpleModule());
+    }
+
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java
new file mode 100644
index 0000000..82d1751
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/fixture/DomainAppFixtureScriptsSpecificationProvider.java
@@ -0,0 +1,48 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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.applib.fixturescripts.FixtureScripts;
+import org.apache.isis.applib.services.fixturespec.FixtureScriptsSpecification;
+import org.apache.isis.applib.services.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 {
+    public FixtureScriptsSpecification getSpecification() {
+        return FixtureScriptsSpecification
+                .builder(DomainAppFixtureScriptsSpecificationProvider.class)
+                .with(FixtureScripts.MultipleExecutionStrategy.EXECUTE)
+                .withRunScriptDefault(DomainAppDemo.class)
+                .withRunScriptDropDown(FixtureScriptsSpecification.DropDownPolicy.CHOICES)
+                .withRecreate(DomainAppDemo.class)
+                .build();
+    }
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java
new file mode 100644
index 0000000..ca584a1
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/fixture/scenarios/DomainAppDemo.java
@@ -0,0 +1,48 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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 javax.inject.Inject;
+
+import org.apache.isis.applib.AppManifest2;
+import org.apache.isis.applib.fixturescripts.FixtureScript;
+import org.apache.isis.applib.services.metamodel.MetaModelService;
+
+import domainapp.modules.simple.fixture.SimpleObject_persona;
+
+public class DomainAppDemo extends FixtureScript {
+
+    public DomainAppDemo() {
+        withDiscoverability(Discoverability.DISCOVERABLE);
+    }
+
+    @Override
+    protected void execute(final ExecutionContext ec) {
+        AppManifest2 appManifest2 = metaModelService.getAppManifest2();
+        ec.executeChild(this, appManifest2.getTeardownFixture());
+        ec.executeChild(this, appManifest2.getRefDataSetupFixture());
+        ec.executeChild(this, new SimpleObject_persona.PersistAll());
+    }
+
+    @Inject
+    MetaModelService metaModelService;
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java
new file mode 100644
index 0000000..ea244e4
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifest.java
@@ -0,0 +1,43 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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.manifest;
+
+import org.apache.isis.applib.AppManifestAbstract2;
+
+import domainapp.application.DomainAppApplicationModule;
+
+/**
+ * Bootstrap the application.
+ */
+public class DomainAppAppManifest extends AppManifestAbstract2 {
+
+    public static final Builder BUILDER = Builder
+            .forModule(new DomainAppApplicationModule())
+            .withConfigurationPropertiesFile(
+                    DomainAppAppManifest.class, "isis-non-changing.properties")
+            .withAuthMechanism("shiro");
+
+    public DomainAppAppManifest() {
+        super(BUILDER);
+    }
+
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestBypassSecurity.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestBypassSecurity.java
new file mode 100644
index 0000000..c9cbdc8
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestBypassSecurity.java
@@ -0,0 +1,32 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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.manifest;
+
+/**
+ * Bypasses security, meaning any user/password combination can be used to login.
+ */
+public class DomainAppAppManifestBypassSecurity extends DomainAppAppManifest {
+
+    @Override protected String overrideAuthMechanism() {
+        return "bypass";
+    }
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixtures.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixtures.java
new file mode 100644
index 0000000..1dc6853
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixtures.java
@@ -0,0 +1,40 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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.manifest;
+
+import java.util.List;
+
+import org.apache.isis.applib.fixturescripts.FixtureScript;
+
+import domainapp.modules.simple.fixture.SimpleObject_persona;
+
+/**
+ * Run the app but setting up any fixtures.
+ */
+public class DomainAppAppManifestWithFixtures extends DomainAppAppManifest {
+
+    @Override
+    protected void overrideFixtures(final List<Class<? extends FixtureScript>> fixtureScripts) {
+        fixtureScripts.add(SimpleObject_persona.PersistAll.class);
+    }
+
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixturesBypassSecurity.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixturesBypassSecurity.java
new file mode 100644
index 0000000..48fdc02
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/DomainAppAppManifestWithFixturesBypassSecurity.java
@@ -0,0 +1,33 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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.manifest;
+
+/**
+ * Bypasses security, meaning any user/password combination can be used to login.
+ */
+public class DomainAppAppManifestWithFixturesBypassSecurity extends DomainAppAppManifestWithFixtures {
+
+    @Override protected String overrideAuthMechanism() {
+        return "bypass";
+    }
+
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/isis-non-changing.properties b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/isis-non-changing.properties
new file mode 100644
index 0000000..421517a
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/isis-non-changing.properties
@@ -0,0 +1,741 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+${symbol_pound}  Licensed to the Apache Software Foundation (ASF) under one
+${symbol_pound}  or more contributor license agreements.  See the NOTICE file
+${symbol_pound}  distributed with this work for additional information
+${symbol_pound}  regarding copyright ownership.  The ASF licenses this file
+${symbol_pound}  to you under the Apache License, Version 2.0 (the
+${symbol_pound}  "License"); you may not use this file except in compliance
+${symbol_pound}  with the License.  You may obtain a copy of the License at
+${symbol_pound}  
+${symbol_pound}         http://www.apache.org/licenses/LICENSE-2.0
+${symbol_pound}         
+${symbol_pound}  Unless required by applicable law or agreed to in writing,
+${symbol_pound}  software distributed under the License is distributed on an
+${symbol_pound}  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+${symbol_pound}  KIND, either express or implied.  See the License for the
+${symbol_pound}  specific language governing permissions and limitations
+${symbol_pound}  under the License.
+
+
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+${symbol_pound}
+${symbol_pound} core
+${symbol_pound}
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+
+
+${symbol_pound} -- auto wired by plugins -- 
+${symbol_pound}isis.services.eventbus.implementation=guava
+${symbol_pound}isis.services.eventbus.implementation=axon
+
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+${symbol_pound}
+${symbol_pound} MetaModel
+${symbol_pound}
+${symbol_pound} The metamodel typically does not require additional configuration, although
+${symbol_pound} the system components (defined above) may refine the metamodel for their needs.
+${symbol_pound}
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+
+
+${symbol_pound}
+${symbol_pound} Additional programming model facet factories, or remove standard facet factories.
+${symbol_pound} Comma separated list of fully qualified class names.
+${symbol_pound}
+${symbol_pound}isis.reflector.facets.include=
+${symbol_pound}isis.reflector.facets.exclude=
+
+
+${symbol_pound}
+${symbol_pound} Metamodel validation (in addition to that automatically performed by the programming model facet factories)
+${symbol_pound} Default implementation does nothing.
+${symbol_pound}
+${symbol_pound} Use a custom implementation to enforce additional constraints specific to your app/project/company.
+${symbol_pound}
+${symbol_pound}isis.reflector.validator=org.apache.isis.core.metamodel.metamodelvalidator.dflt.MetaModelValidatorDefault
+
+
+
+${symbol_pound}
+${symbol_pound} Whether to allow deprecated annotations/method prefixes (otherwise raise metamodel validation errors).
+${symbol_pound} If not specified, default is to allow.
+${symbol_pound}
+isis.reflector.validator.allowDeprecated=false
+
+
+${symbol_pound}
+${symbol_pound} Whether to check that JAXB view models are not abstract.  If not specified, default is to validate.
+${symbol_pound}
+${symbol_pound}isis.reflector.validator.jaxbViewModelNotAbstract=true
+
+${symbol_pound}
+${symbol_pound} Whether to check that JAXB view models are not inner classes.  If not specified, default is to validate.
+${symbol_pound}
+${symbol_pound}isis.reflector.validator.jaxbViewModelNotInnerClass=true
+
+${symbol_pound}
+${symbol_pound} Whether to check that JAXB view models have no-arg constructors.  If not specified, default is NOT to validate.
+${symbol_pound}
+${symbol_pound}isis.reflector.validator.jaxbViewModelNoArgConstructor=false
+
+${symbol_pound}
+${symbol_pound} Whether to check that, for JAXB view model with properties referencing persistent entities, that those entities
+${symbol_pound} are annotated with @XmlJavaTypeAdapter.  If not specified, default is to validate.
+${symbol_pound}
+${symbol_pound}isis.reflector.validator.jaxbViewModelReferenceTypeAdapter=true
+
+${symbol_pound}
+${symbol_pound} Whether to check that, for JAXB view model with date/time properties, that those properties are annotated with
+${symbol_pound} @XmlJavaTypeAdapter.  If not specified, default is to validate.
+${symbol_pound}
+${symbol_pound}isis.reflector.validator.jaxbViewModelDateTimeTypeAdapter=true
+
+
+${symbol_pound}
+${symbol_pound} Whether to validate JDOQL clauses.  If not specified, default is to validate.
+${symbol_pound}
+${symbol_pound}isis.reflector.validator.jdoqlFromClause=true
+${symbol_pound}isis.reflector.validator.jdoqlVariablesClause=true
+
+
+${symbol_pound}
+${symbol_pound} Whether to only allow hideXxx() and disableXxx() methods with no params.
+${symbol_pound} If not specified, defaults to false (ie will also search for methods with parameter types matching the action).
+${symbol_pound}
+isis.reflector.validator.noParamsOnly=true
+
+
+${symbol_pound}
+${symbol_pound} Whether to require the object type to be specified explicitly for entities.
+${symbol_pound} If not specified, defaults to false
+${symbol_pound}
+isis.reflector.validator.explicitObjectType=true
+
+
+${symbol_pound}
+${symbol_pound} Whether to ignore or honour (at least some of the) deprecated annotations/method prefixes.
+${symbol_pound} If not specified, default is to honour
+${symbol_pound}
+${symbol_pound}isis.reflector.facets.ignoreDeprecated=false
+
+
+${symbol_pound}
+${symbol_pound} Whether to enforce the rule that domain services can only declare actions, not properties and collections.
+${symbol_pound} If not specified, defaults to false
+${symbol_pound}
+isis.reflector.validator.serviceActionsOnly=true
+
+
+${symbol_pound}
+${symbol_pound} Whether to use only mixins, and no contributed services.
+${symbol_pound} If not specified, defaults to false
+${symbol_pound}
+isis.reflector.validator.mixinsOnly=true
+
+
+
+
+${symbol_pound}
+${symbol_pound} patterns for applying CssClassFa facet (font-awesome icons), matching on action names
+${symbol_pound}
+isis.reflector.facet.cssClassFa.patterns=${symbol_escape}
+                        new.*:fa-plus,${symbol_escape}
+                        add.*:fa-plus-square,${symbol_escape}
+                        create.*:fa-plus,${symbol_escape}
+                        update.*:fa-edit,${symbol_escape}
+                        delete.*:fa-trash,${symbol_escape}
+                        save.*:fa-floppy-o,${symbol_escape}
+                        change.*:fa-edit,${symbol_escape}
+                        edit.*:fa-pencil-square-o,${symbol_escape}
+                        maintain.*:fa-edit,${symbol_escape}
+                        remove.*:fa-minus-square,${symbol_escape}
+                        copy.*:fa-copy,${symbol_escape}
+                        move.*:fa-exchange,${symbol_escape}
+                        first.*:fa-star,${symbol_escape}
+                        find.*:fa-search,${symbol_escape}
+                        lookup.*:fa-search,${symbol_escape}
+                        search.*:fa-search,${symbol_escape}
+                        view.*:fa-search,${symbol_escape}
+                        clear.*:fa-remove,${symbol_escape}
+                        previous.*:fa-step-backward,${symbol_escape}
+                        next.*:fa-step-forward,${symbol_escape}
+                        list.*:fa-list, ${symbol_escape}
+                        all.*:fa-list, ${symbol_escape}
+                        download.*:fa-download, ${symbol_escape}
+                        upload.*:fa-upload, ${symbol_escape}
+                        export.*:fa-download,${symbol_escape}
+                        switch.*:fa-exchange,${symbol_escape}
+                        import.*:fa-upload,${symbol_escape}
+                        execute.*:fa-bolt, ${symbol_escape}
+                        run.*:fa-bolt, ${symbol_escape}
+                        calculate.*:fa-calculator, ${symbol_escape}
+                        verify.*:fa-check-circle, ${symbol_escape}
+                        refresh.*:fa-refresh, ${symbol_escape}
+                        install.*:fa-wrench,${symbol_escape}
+                        stop.*:fa-stop,${symbol_escape}
+                        terminate.*:fa-stop,${symbol_escape}
+                        cancel.*:fa-stop,${symbol_escape}
+                        discard.*:fa-trash-o,${symbol_escape}
+                        pause.*:fa-pause,${symbol_escape}
+                        suspend.*:fa-pause,${symbol_escape}
+                        resume.*:fa-play,${symbol_escape}
+                        renew.*:fa-repeat,${symbol_escape}
+                        reset.*:fa-repeat,${symbol_escape}
+                        categorise.*:fa-folder-open-o,${symbol_escape}
+                        assign.*:fa-hand-o-right,${symbol_escape}
+                        approve.*:fa-thumbs-o-up,${symbol_escape}
+                        decline.*:fa-thumbs-o-down
+
+
+${symbol_pound}
+${symbol_pound} patterns for applying CssClass facet (CSS styles), matching on member names
+${symbol_pound}
+isis.reflector.facet.cssClass.patterns=${symbol_escape}
+                        delete.*:btn-danger,${symbol_escape}
+                        discard.*:btn-warning,${symbol_escape}
+                        remove.*:btn-warning
+
+
+${symbol_pound}
+${symbol_pound} Whether actions require @Action annotation to be recognised
+${symbol_pound}
+isis.reflector.explicitAnnotations.action=true
+
+${symbol_pound}
+${symbol_pound} whether to suppress posting of events if not specified (left as Xxx.Default); defaults to true
+${symbol_pound}
+
+${symbol_pound}isis.reflector.facet.actionAnnotation.domainEvent.postForDefault=false
+${symbol_pound}isis.reflector.facet.collectionAnnotation.domainEvent.postForDefault=false
+${symbol_pound}isis.reflector.facet.propertyAnnotation.domainEvent.postForDefault=false
+
+${symbol_pound}isis.reflector.facet.domainObjectLayoutAnnotation.cssClassUiEvent.postForDefault=false
+${symbol_pound}isis.reflector.facet.domainObjectLayoutAnnotation.iconUiEvent.postForDefault=false
+${symbol_pound}isis.reflector.facet.domainObjectLayoutAnnotation.titleUiEvent.postForDefault=false
+
+${symbol_pound}isis.reflector.facet.domainObjectAnnotation.createdLifecycleEvent.postForDefault=false
+${symbol_pound}isis.reflector.facet.domainObjectAnnotation.persistingLifecycleEvent.postForDefault=false
+${symbol_pound}isis.reflector.facet.domainObjectAnnotation.persistedLifecycleEvent.postForDefault=false
+${symbol_pound}isis.reflector.facet.domainObjectAnnotation.loadedLifecycleEvent.postForDefault=false
+${symbol_pound}isis.reflector.facet.domainObjectAnnotation.updatingLifecycleEvent.postForDefault=false
+${symbol_pound}isis.reflector.facet.domainObjectAnnotation.updatedLifecycleEvent.postForDefault=false
+${symbol_pound}isis.reflector.facet.domainObjectAnnotation.removingLifecycleEvent.postForDefault=false
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+${symbol_pound}
+${symbol_pound} Domain Service configuration
+${symbol_pound}
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+
+${symbol_pound}
+${symbol_pound} required by EmailServiceDefault
+${symbol_pound}
+${symbol_pound}isis.service.email.sender.address=some.valid@email.address
+${symbol_pound}isis.service.email.sender.password=the.password.for-isis.service.email.sender.address
+
+
+${symbol_pound}
+${symbol_pound} whether ExceptionRecognizers should also log any recognized exceptions
+${symbol_pound} (default false; enable for diagnostics/debugging)
+${symbol_pound}
+${symbol_pound}isis.services.exceprecog.logRecognizedExceptions=true
+
+
+${symbol_pound}
+${symbol_pound} disable to (automatically registered) ExceptionRecognizerCompositeForJdoObjectStore service
+${symbol_pound} almost all of this service should be registered.  Since all exception recognizer implementations
+${symbol_pound} are consulted in the event of an exception, it's not sufficient to override the implementation
+${symbol_pound} (in isis.services); instead this configuration property disables this particular implementation.
+${symbol_pound}
+${symbol_pound}isis.services.ExceptionRecognizerCompositeForJdoObjectStore.disable=true
+
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+${symbol_pound}
+${symbol_pound} Auditing, Commands, Publishing
+${symbol_pound}
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+
+${symbol_pound}
+${symbol_pound} Whether changes to objects should be audited; if not set, defaults to "none"
+${symbol_pound} - if not set or set to "none", can explicitly enable using @DomainObject(auditing=Auditing.ENABLED)
+${symbol_pound} - if set to "all", can explicitly disable using @DomainObject(auditing=Auditing.DISABLED)
+${symbol_pound}
+${symbol_pound}isis.services.audit.objects=all|none
+isis.services.audit.objects=all
+
+
+${symbol_pound}
+${symbol_pound} Whether all (or all non-query only) actions should be reified as commands; if not set, defaults to "none"
+${symbol_pound} - if not set or set to "none", can explicitly enable using @Action(command=CommandReification.ENABLED)
+${symbol_pound} - if set to "all", can explicitly disable using @Action(command=CommandReification.DISABLED)
+${symbol_pound}
+${symbol_pound}isis.services.command.actions=all|none|ignoreSafe
+isis.services.command.actions=ignoreSafe
+
+
+${symbol_pound}
+${symbol_pound} Whether property edits should be reified into commands; if not set, defaults to "none"
+${symbol_pound} - if not set or set to "none", can explicitly enable using @Property(command=CommandReification.ENABLED)
+${symbol_pound} - if set to "all", can explicitly disable using @Property(command=CommandReification.DISABLED)
+${symbol_pound}
+${symbol_pound}isis.services.command.properties=all|none
+isis.services.command.properties=all
+
+
+
+${symbol_pound}
+${symbol_pound} Whether changes to objects should be published; if not set, defaults to "none"
+${symbol_pound} - if not set or set to "none", can explicitly enable using @DomainObject(publishing=Publishing.ENABLED)
+${symbol_pound} - if set to "all", can explicitly disable using @Object(publishing=Publishing.DISABLED)
+${symbol_pound}
+${symbol_pound}isis.services.publish.objects=all|none
+isis.services.publish.objects=all
+
+
+${symbol_pound}
+${symbol_pound} Whether all (or all non-query only) action invocations should be published; if not set, defaults to "none"
+${symbol_pound} - if not set or set to "none", can explicitly enable using @Action(publishing=Publishing.ENABLED)
+${symbol_pound} - if set to "all", can explicitly disable using @Action(publishing=Publishing.DISABLED)
+${symbol_pound}
+${symbol_pound}isis.services.publish.actions=all|none|ignoreSafe
+isis.services.publish.actions=all
+
+
+${symbol_pound}
+${symbol_pound} Whether all property edits sshould be published; if not set, defaults to "none"
+${symbol_pound} - if not set or set to "none", can explicitly enable using @Property(publishing=Publishing.ENABLED)
+${symbol_pound} - if set to "all", can explicitly disable using @Property(publishing=Publishing.DISABLED)
+${symbol_pound}
+${symbol_pound}isis.services.publish.properties=all|none
+isis.services.publish.properties=all
+
+
+
+${symbol_pound}
+${symbol_pound} Whether the ApplicationFeatureRepository should eagerly initialize itself (increasing start-up times)
+${symbol_pound} or initialize itself lazily.  Default is lazy initialization.
+${symbol_pound}
+${symbol_pound}isis.services.applicationFeatures.init=lazy|eager
+
+
+${symbol_pound}
+${symbol_pound} Whether the framework supports inject...() and set...() styles of dependency injection.   By default the former
+${symbol_pound} is disabled, the latter is enabled.  Disabling these settings can reduce application start-up times.
+${symbol_pound}
+${symbol_pound}isis.services.injector.injectPrefix=false|true
+${symbol_pound}isis.services.injector.setPrefix=false|true
+isis.services.injector.setPrefix=false
+
+
+
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+${symbol_pound}
+${symbol_pound} Policies
+${symbol_pound}
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+
+${symbol_pound}
+${symbol_pound} Whether editing of object properties is allowed; if not set, defaults to "true"
+${symbol_pound} - if not set or set to "true", can explicitly disable using @DomainObject(editing=Editing.DISABLED)
+${symbol_pound} - if set to "false", can explicitly enable using @DomainObject(editing=Editing.ENABLED)
+${symbol_pound}
+${symbol_pound}isis.objects.editing=true|false
+isis.objects.editing=false
+
+
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+${symbol_pound}
+${symbol_pound} i18n
+${symbol_pound}
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+
+${symbol_pound}
+${symbol_pound} force read translations, even if running in prototype mode
+${symbol_pound}
+${symbol_pound}isis.services.translation.po.mode=read
+
+
+
+
+
+
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+${symbol_pound}
+${symbol_pound} Value facet defaults
+${symbol_pound}
+${symbol_pound} (see also viewer-specific config files, eg viewer_wicket.properties)
+${symbol_pound}
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+
+${symbol_pound} as used by @Title of a date
+isis.value.format.date=dd-MM-yyyy
+
+
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+${symbol_pound}
+${symbol_pound} authentication_shiro
+${symbol_pound}
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+
+${symbol_pound}
+${symbol_pound} if the shiro Subject is still authenticated, then just reuse.
+${symbol_pound} Prior to 1.13.0, we forced an auto-logout, so set to 'true' to reinstate this behaviour.
+${symbol_pound} See this thread for further info: http://markmail.org/message/hsjljwgkhhrzxbrm
+${symbol_pound}
+${symbol_pound}isis.authentication.shiro.autoLogoutIfAlreadyAuthenticated=false
+
+
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+${symbol_pound}
+${symbol_pound} persistor_datanucleus
+${symbol_pound}
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+${symbol_pound}
+${symbol_pound} Persistor
+${symbol_pound}
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+
+
+
+${symbol_pound} generally speaking this should not be enabled
+isis.persistor.disableConcurrencyChecking=false
+
+
+
+${symbol_pound}
+${symbol_pound} If enabled, uses a more efficient implementation to render standalone collections.
+${symbol_pound} default is 'false' (disabled)
+${symbol_pound}
+isis.persistor.datanucleus.standaloneCollection.bulkLoad=true
+
+
+${symbol_pound}
+${symbol_pound} hook to perform additional initialization when JDO class metadata is loaded
+${symbol_pound} default implementation will attempt to run 'create schema' for the specified schema.
+${symbol_pound}
+${symbol_pound} this implementation is installed by default:
+${symbol_pound}isis.persistor.datanucleus.classMetadataLoadedListener=org.apache.isis.objectstore.jdo.datanucleus.CreateSchemaObjectFromClassMetadata
+
+
+${symbol_pound} whether to persist the event data as a "clob" or as a "zipped" byte[]
+${symbol_pound} default is "zipped"
+${symbol_pound}isis.persistor.datanucleus.PublishingService.serializedForm=zipped
+
+
+
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+${symbol_pound}
+${symbol_pound} DataNucleus' configuration
+${symbol_pound}
+${symbol_pound} The 'isis.persistor.datanucleus.impl' prefix is stripped off,
+${symbol_pound} remainder is passed through to DataNucleus
+${symbol_pound}
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+
+isis.persistor.datanucleus.impl.datanucleus.schema.validateTables=true
+isis.persistor.datanucleus.impl.datanucleus.schema.validateConstraints=true
+
+
+${symbol_pound}
+${symbol_pound} Require explicit persistence (since entities are Comparable and using ObjectContracts${symbol_pound}compareTo).
+${symbol_pound} see http://www.datanucleus.org/products/accessplatform_3_0/jdo/transaction_types.html
+${symbol_pound}
+isis.persistor.datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit=false
+
+
+${symbol_pound}
+${symbol_pound} How column names are identified
+${symbol_pound} (http://www.datanucleus.org/products/datanucleus/jdo/orm/datastore_identifiers.html)
+${symbol_pound}
+isis.persistor.datanucleus.impl.datanucleus.identifier.case=MixedCase
+
+${symbol_pound}
+${symbol_pound} L2 cache
+${symbol_pound} off except if explicitly marked as cacheable
+${symbol_pound} http://www.datanucleus.org/products/datanucleus/jdo/cache.html
+${symbol_pound}
+isis.persistor.datanucleus.impl.datanucleus.cache.level2.type=none
+isis.persistor.datanucleus.impl.datanucleus.cache.level2.mode=ENABLE_SELECTIVE
+
+
+
+${symbol_pound}
+${symbol_pound} uncomment to use JNDI rather than direct JDBC
+${symbol_pound}
+${symbol_pound}isis.persistor.datanucleus.impl.datanucleus.ConnectionFactoryName=java:comp/env/jdbc/quickstart
+
+${symbol_pound}
+${symbol_pound} uncomment to use JTA resource
+${symbol_pound}
+${symbol_pound}isis.persistor.datanucleus.impl.datanucleus.ConnectionFactory2Name=java:comp/env/jdbc/quickstart-nontx
+${symbol_pound}isis.persistor.datanucleus.impl.javax.jdo.option.TransactionType=JTA
+
+
+
+${symbol_pound}
+${symbol_pound}
+${symbol_pound} JDBC connection details
+${symbol_pound} ... are in WEB-INF/isis.properties
+${symbol_pound}
+${symbol_pound}
+
+
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+${symbol_pound}
+${symbol_pound} viewer_restfulobjects.properties
+${symbol_pound}
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+
+
+
+${symbol_pound} renders param details in the (incorrect) form that they were for GSOC2013 viewers
+${symbol_pound} isis.viewer.restfulobjects.gsoc2013.legacyParamDetails=true
+
+${symbol_pound} whether to honor UI hints, in particular Render(EAGERLY).  Defaults to false.
+${symbol_pound}isis.viewer.restfulobjects.honorUiHints=false
+
+
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+${symbol_pound} Non-standard configuration settings.
+${symbol_pound}
+${symbol_pound} If enabled of the following are enabled then the viewer is deviating from the
+${symbol_pound} RO spec standard; compatibility may be compromised with RO clients.
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+
+${symbol_pound} whether to show only object properties for object members
+${symbol_pound} (on the object representation only)
+${symbol_pound} Takes precedence over the other 'suppress' below.
+${symbol_pound}isis.viewer.restfulobjects.objectPropertyValuesOnly=true
+
+${symbol_pound} whether to suppress "describedby" links.  Defaults to false.
+${symbol_pound}isis.viewer.restfulobjects.suppressDescribedByLinks=true
+
+${symbol_pound} whether to suppress "update" links.  Defaults to false.
+${symbol_pound}isis.viewer.restfulobjects.suppressUpdateLink=true
+
+${symbol_pound} whether to suppress "id" json-prop for object members.  Defaults to false.
+${symbol_pound}isis.viewer.restfulobjects.suppressMemberId=true
+
+${symbol_pound} whether to suppress "links" json-prop for object members
+${symbol_pound} (on the object representation only).  Defaults to false.
+${symbol_pound}isis.viewer.restfulobjects.suppressMemberLinks=true
+
+${symbol_pound} whether to suppress "extensions" json-prop for object members
+${symbol_pound} (on the object representation only).  Defaults to false.
+${symbol_pound}isis.viewer.restfulobjects.suppressMemberExtensions=true
+
+${symbol_pound} whether to suppress "disabledReason" json-prop for object members
+${symbol_pound} (on the object representation only).  Defaults to false.
+${symbol_pound}isis.viewer.restfulobjects.suppressMemberDisabledReason=true
+
+
+
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+${symbol_pound}
+${symbol_pound} viewer_wicket
+${symbol_pound}
+${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pound}${symbol_pou [...]
+
+
+isis.viewer.wicket.application.name=Simple App
+isis.viewer.wicket.application.css=css/application.css
+isis.viewer.wicket.application.js=scripts/application.js
+isis.viewer.wicket.application.about=Simple App
+
+isis.viewer.wicket.credit.1.image=/images/apache-isis/logo-48x48.png
+isis.viewer.wicket.credit.1.name=Apache Isis
+isis.viewer.wicket.credit.1.url=http://isis.apache.org
+
+${symbol_pound}
+${symbol_pound} The maximum length of titles to display in standalone or parented tables.
+${symbol_pound} Titles longer than this length will be truncated with trailing ellipses (...)
+${symbol_pound}
+${symbol_pound} For example, if set to 12, the title
+${symbol_pound} "Buy milk on 15-Feb-13" will be truncated to "Buy milk ..."
+${symbol_pound}
+${symbol_pound} If set to 0, then only the icon will be shown.
+${symbol_pound}
+isis.viewer.wicket.maxTitleLengthInStandaloneTables=0
+isis.viewer.wicket.maxTitleLengthInParentedTables=0
+
+
+${symbol_pound}
+${symbol_pound} in Firefox and more recent versions of Chrome 54+, cannot copy out of disabled fields; instead we use the
+${symbol_pound} readonly attribute (https://www.w3.org/TR/2014/REC-html5-20141028/forms.html${symbol_pound}the-readonly-attribute)
+${symbol_pound} This behaviour is enabled by default but can be disabled using this flag
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.replaceDisabledTagWithReadonlyTag=true
+
+
+${symbol_pound}
+${symbol_pound} Whether to disable buttons after it has been clicked (for both form submit and no-arg actions), to prevent users
+${symbol_pound} causing an error if they do a double click.
+${symbol_pound} Also, whether to show an indicator alongside the button.
+${symbol_pound}
+${symbol_pound} This behaviour is enabled by default, but can be disabled using this flag.
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.preventDoubleClickForFormSubmit=true
+${symbol_pound}isis.viewer.wicket.preventDoubleClickForNoArgAction=true
+${symbol_pound}isis.viewer.wicket.useIndicatorForFormSubmit=true
+${symbol_pound}isis.viewer.wicket.useIndicatorForNoArgAction=true
+
+
+${symbol_pound}isis.viewer.wicket.datePicker.minDate=1900-01-01T00:00:00.000Z
+${symbol_pound}isis.viewer.wicket.datePicker.maxDate=2100-01-01T00:00:00.000Z
+
+${symbol_pound}isis.viewer.wicket.datePattern=dd-MM-yyyy
+${symbol_pound}isis.viewer.wicket.dateTimePattern=dd-MM-yyyy HH:mm
+
+${symbol_pound}isis.viewer.wicket.datePattern=dd/MM/yy
+${symbol_pound}isis.viewer.wicket.dateTimePattern=dd/MM/yy HH:mm
+
+
+${symbol_pound}
+${symbol_pound} whether to strip wicket tags from markup (default is true, as they may break some CSS rules)
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.stripWicketTags=false
+
+
+${symbol_pound}
+${symbol_pound} action prompt='dialog' style for objects ('sidebar' or 'modal', default is 'sidebar')
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.dialogMode=modal
+
+${symbol_pound}
+${symbol_pound} action prompt='dialog' style for services ('sidebar' or 'modal', default is 'modal')
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.dialogModeForMenu=sidebar
+
+
+${symbol_pound}
+${symbol_pound} whether to suppress the 'rememberMe' checkbox on the login page (default is false)
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.rememberMe.suppress=false
+
+
+${symbol_pound}
+${symbol_pound} Encryption key is used to encrypt the rememberMe user/password.  It should be set to a unique and private value.
+${symbol_pound} If a hard-coded and publicly known value is used, then it would be possible for rememberMe user/password to be
+${symbol_pound} intercepted and decrypted, compromising access.
+${symbol_pound}
+${symbol_pound} If no value is set then (for safety) a random UUID will be used as the encryption key.  The net effect of this
+${symbol_pound} default is that 'rememberMe' will work, but only until the webapp is restarted (after which the end-user will
+${symbol_pound} have to log in again).
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.rememberMe.encryptionKey=myEncryptionKey
+
+
+${symbol_pound}
+${symbol_pound} if user attempts to access a protected URL before signing in, then as a convenience the viewer will continue
+${symbol_pound} through to that destination after successful login.  If you consider this to be a security risk then this flag
+${symbol_pound} disables that behaviour (default is false).
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.clearOriginalDestination=true
+
+
+${symbol_pound}
+${symbol_pound} whether to show the Wicket debug bar and any other development utilities
+${symbol_pound} (default depends on whether running in prototype mode or not; this property overrides that)
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.developmentUtilities.enable=true
+isis.viewer.wicket.developmentUtilities.enable=true
+
+
+
+${symbol_pound}
+${symbol_pound} whether to show bookmarks (defaults to true)
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.bookmarkedPages.showChooser=true
+
+
+${symbol_pound}
+${symbol_pound} the maximum number of pages to list in bookmark (default is 15)
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.bookmarkedPages.maxSize=15
+
+
+${symbol_pound}
+${symbol_pound} whether to show breadcrumbs (defaults to true)
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.breadcrumbs.showChooser=true
+
+
+
+
+
+${symbol_pound}isis.viewers.paged.standalone=30
+${symbol_pound}isis.viewers.paged.parented=10
+
+
+${symbol_pound}isis.viewers.propertyLayout.labelPosition=LEFT
+${symbol_pound}isis.viewers.parameterLayout.labelPosition=LEFT
+
+
+${symbol_pound}
+${symbol_pound} whether to show the bootstrap theme chooser (defaults false)
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.themes.showChooser=false
+isis.viewer.wicket.themes.showChooser=true
+
+
+${symbol_pound}
+${symbol_pound} comma-separated list of themes to choose from (default is to show all themes from bootswatch.com, excluding Amelia which is broken).
+${symbol_pound}
+isis.viewer.wicket.themes.enabled=bootstrap-theme, Cerulean, Cosmo, Cyborg, Darkly, Flatly, Journal, Lumen, Paper, Readable, Sandstone, Simplex, Slate, Spacelab, Superhero, United, Yeti
+
+
+isis.viewer.wicket.themes.initial=Flatly
+
+
+${symbol_pound}
+${symbol_pound} whether to automatically select dependent choice when the choice it depends upon changes.
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.disableDependentChoiceAutoSelection=false
+
+
+${symbol_pound}
+${symbol_pound} enable liveReload.  For example, use with gradle -t -b liveReload.gradle --offline &
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.liveReloadUrl=http://localhost:35729/livereload.js?snipver=1
+
+
+
+${symbol_pound}
+${symbol_pound} cookie key holding the (encrypted) 'rememberMe' user/password.
+${symbol_pound} If not specified then the cookie key 'isisWicketRememberMe' will be used; there is generally no need to change this.
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.rememberMe.cookieKey=isisWicketRememberMe
+
+
+${symbol_pound}
+${symbol_pound} specifies whether an INLINE or DIALOG prompt should be used for property edits and for action invocations (of actions
+${symbol_pound} associated with a property).  This is a fallback where not specified on a case-by-case using @PropertyLayout or
+${symbol_pound} @ActionLayout (or equivalents in the Xxx.layout.xml file).
+${symbol_pound}
+${symbol_pound} If not specified then the default is an inline prompt.
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.promptStyle=INLINE
+
+
+${symbol_pound}
+${symbol_pound} If set then reverts to pre-1.15.0 behaviour of redirecting to a new page on any action invocation or property edit.
+${symbol_pound} If left to its default then the page will be updated if the same object is rendered, making for a smoother user
+${symbol_pound} experience.
+${symbol_pound}
+${symbol_pound}isis.viewer.wicket.redirectEvenIfSameObject=false
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/menubars.layout.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/menubars.layout.xml
new file mode 100644
index 0000000..133634f
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/manifest/menubars.layout.xml
@@ -0,0 +1,118 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/health/HealthCheckServiceImpl.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/health/HealthCheckServiceImpl.java
new file mode 100644
index 0000000..4c29a55
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/health/HealthCheckServiceImpl.java
@@ -0,0 +1,32 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+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/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/homepage/HomePageService.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/homepage/HomePageService.java
new file mode 100644
index 0000000..07efddb
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/homepage/HomePageService.java
@@ -0,0 +1,46 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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 org.apache.isis.applib.annotation.Action;
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.HomePage;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.services.factory.FactoryService;
+
+@DomainService(
+        nature = NatureOfService.DOMAIN, // trick to suppress the actions from the top-level menu
+        objectType = "homepage.HomePageService"
+)
+public class HomePageService {
+
+    @Action(semantics = SemanticsOf.SAFE)
+    @HomePage
+    public HomePageViewModel homePage() {
+        return factoryService.instantiate(HomePageViewModel.class);
+    }
+
+
+    @javax.inject.Inject
+    FactoryService factoryService;
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.java
new file mode 100644
index 0000000..def1650
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.java
@@ -0,0 +1,49 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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 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();
+    }
+
+    @javax.inject.Inject
+    SimpleObjects simpleObjects;
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.layout.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.layout.xml
new file mode 100644
index 0000000..a345814
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.layout.xml
@@ -0,0 +1,53 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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="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/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.png b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.png
new file mode 100644
index 0000000..cb03785
Binary files /dev/null and b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/main/java/domainapp/application/services/homepage/HomePageViewModel.png differ
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
new file mode 100644
index 0000000..b6b046e
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlue.java
@@ -0,0 +1,42 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/**
+O *  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.specglue;
+
+import cucumber.api.java.After;
+import cucumber.api.java.Before;
+import domainapp.application.DomainAppApplicationModule;
+
+public class BootstrappingGlue extends BootstrappingGlueAbstract {
+
+    @Before(order=100)
+    public void beforeScenario() {
+        super.bootstrapAndSetupIfRequired();
+    }
+
+    @After
+    public void afterScenario(cucumber.api.Scenario sc) {
+        super.tearDownAllModules();
+    }
+
+    public BootstrappingGlue() {
+        super(new DomainAppApplicationModule());
+    }
+
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlueAbstract.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlueAbstract.java
new file mode 100644
index 0000000..bb1c6df
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/BootstrappingGlueAbstract.java
@@ -0,0 +1,40 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/**
+O *  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.specglue;
+
+import org.apache.isis.applib.AppManifest;
+import org.apache.isis.applib.Module;
+import org.apache.isis.core.integtestsupport.ModuleBuilder;
+import org.apache.isis.core.runtime.headless.HeadlessWithBootstrappingAbstract;
+
+public class BootstrappingGlueAbstract extends HeadlessWithBootstrappingAbstract {
+
+    public BootstrappingGlueAbstract(final Module module) {
+        this(module, AppManifest.Util.MemDb.HSQLDB);
+    }
+
+    public BootstrappingGlueAbstract(final Module module, final AppManifest.Util.MemDb memDb) {
+        super(ModuleBuilder.create(module)
+                .withHeadlessTransactionSupport()
+                .withIntegrationTestConfigFallback(memDb)
+                .build());
+    }
+
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/CatalogOfFixturesGlue.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/CatalogOfFixturesGlue.java
new file mode 100644
index 0000000..4ce0fcc
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specglue/CatalogOfFixturesGlue.java
@@ -0,0 +1,32 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/**
+ *  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.specglue;
+
+import org.apache.isis.core.specsupport.specs.CukeGlueAbstract2;
+
+import cucumber.api.java.Before;
+import domainapp.application.fixture.scenarios.DomainAppDemo;
+
+public class CatalogOfFixturesGlue extends CukeGlueAbstract2 {
+    @Before(value={"@DomainAppDemo"}, order=20000)
+    public void runDomainAppDemo() {
+        fixtureScripts.runFixtureScript(new DomainAppDemo(), null);
+    }
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specs/RunIntegBddSpecs.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specs/RunIntegBddSpecs.java
new file mode 100644
index 0000000..2ede811
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specs/RunIntegBddSpecs.java
@@ -0,0 +1,46 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/**
+ *  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.specs;
+
+import org.junit.runner.RunWith;
+
+import cucumber.api.CucumberOptions;
+import cucumber.api.junit.Cucumber;
+
+
+/**
+ * Runs scenarios in all <tt>.feature</tt> files (this package and any subpackages). 
+ */
+@RunWith(Cucumber.class)
+@CucumberOptions(
+        format = {
+                "html:target/cucumber-html-report"
+                ,"json:target/cucumber.json"
+        },
+        glue={
+                "classpath:domainapp.application.bdd.specglue",
+                "classpath:domainapp.modules.simple.specglue"
+        },
+        strict = true,
+        tags = { "~@backlog", "~@ignore" }
+)
+public class RunIntegBddSpecs {
+    // intentionally empty 
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specs/SimpleObjectSpec_listAllAndCreate.feature b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specs/SimpleObjectSpec_listAllAndCreate.feature
new file mode 100644
index 0000000..f164d92
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/bdd/specs/SimpleObjectSpec_listAllAndCreate.feature
@@ -0,0 +1,25 @@
+#
+#  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.
+#
+@DomainAppDemo
+Feature: List and Create New Simple Objects
+
+  Scenario: Existing simple objects can be listed and new ones created
+    Given there are initially 10 simple objects
+    When  I create a new simple object
+    Then  there are 11 simple objects
+
+    
\ No newline at end of file
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/DomainAppIntegTestAbstract.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/DomainAppIntegTestAbstract.java
new file mode 100644
index 0000000..01506f1
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/DomainAppIntegTestAbstract.java
@@ -0,0 +1,34 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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 org.apache.isis.core.integtestsupport.IntegrationTestAbstract3;
+
+import domainapp.application.DomainAppApplicationModule;
+
+public abstract class DomainAppIntegTestAbstract extends IntegrationTestAbstract3 {
+
+    public DomainAppIntegTestAbstract() {
+        super(new DomainAppApplicationModule());
+    }
+
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/MetaModelService_IntegTest.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/MetaModelService_IntegTest.java
new file mode 100644
index 0000000..9f92431
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/MetaModelService_IntegTest.java
@@ -0,0 +1,150 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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.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 domainapp.application.integtests.DomainAppIntegTestAbstract;
+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;
+
+public class MetaModelService_IntegTest extends DomainAppIntegTestAbstract {
+
+    @Inject
+    MetaModelService metaModelService;
+    @Inject
+    JaxbService jaxbService;
+
+
+    //
+    // learn...
+    //
+    // ... move the resultant files in "received" directory over to "approved".
+    //
+    @UseReporter(QuietReporter.class)
+    @Test
+    public 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
+    public 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) throws Exception {
+                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/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.DomainAppFixtureScriptsSpecificationProvider.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.DomainAppFixtureScriptsSpecificationProvider.xml
new file mode 100644
index 0000000..563092d
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.DomainAppFixtureScriptsSpecificationProvider.xml
@@ -0,0 +1,48 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.audit.AuditableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetFromConfiguration">
+            <mml:attr name="enablement">ENABLED</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
+            <mml:attr name="menuBar">PRIMARY</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservice.annotation.IconFacetDerivedFromDomainServiceAnnotation">
+            <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName">
+            <mml:attr name="derived">true</mml:attr>
+            <mml:attr name="value">domainapp.application.fixture.DomainAppFixtureScriptsSpecificationProvider</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+            <mml:attr name="validating">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.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:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+            <mml:attr name="disabling">true</mml:attr>
+            <mml:attr name="hiding">true</mml:attr>
+        </mml:facet>
+    </mml:facets>
+</mml:domainClassDto>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.scenarios.DomainAppDemo.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.scenarios.DomainAppDemo.xml
new file mode 100644
index 0000000..793a584
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.fixture.scenarios.DomainAppDemo.xml
@@ -0,0 +1,270 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<mml:domainClassDto id="domainapp.application.fixture.scenarios.DomainAppDemo" xmlns:mml="http://isis.apache.org/schema/metamodel">
+    <mml:facets>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+            <mml:attr name="context">domainapp.application.fixture.scenarios.DomainAppDemo</mml:attr>
+            <mml:attr name="originalText">Script</mml:attr>
+            <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.domainobjectlayout.NamedFacetForViewModelLayoutAnnotation</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.audit.AuditableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetFromConfiguration">
+            <mml:attr name="enablement">ENABLED</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobjectlayout.BookmarkPolicyFacetForViewModelLayoutAnnotation">
+            <mml:attr name="bookmarkPolicy">NOT_SPECIFIED</mml:attr>
+            <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName">
+            <mml:attr name="derived">true</mml:attr>
+            <mml:attr name="value">domainapp.application.fixture.scenarios.DomainAppDemo</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+            <mml:attr name="validating">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.PluralFacetTranslated">
+            <mml:attr name="context">domainapp.application.fixture.scenarios.DomainAppDemo</mml:attr>
+            <mml:attr name="derived">true</mml:attr>
+            <mml:attr name="originalText">Script</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation">
+            <mml:attr name="components"></mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.viewmodel.ViewModelFacet" fqcn="org.apache.isis.core.metamodel.facets.object.recreatable.RecreatableObjectFacetForRecreatableObjectInterface">
+            <mml:attr name="recreationMechanism">INITIALIZES</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+            <mml:attr name="disabling">true</mml:attr>
+            <mml:attr name="hiding">true</mml:attr>
+        </mml:facet>
+    </mml:facets>
+    <mml:properties/>
+    <mml:collections/>
+    <mml:actions>
+        <mml:act id="downloadLayoutXml">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.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${symbol_dollar}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.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.application.fixture.scenarios.DomainAppDemo${symbol_pound}downloadLayoutXml()</mml:attr>
+                    <mml:attr name="originalText">Download Layout Xml</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">datanucleusIdLong</mml:attr>
+                    <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                    <mml:attr name="sequence">700.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml${symbol_pound}act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService${symbol_dollar}Style)</mml:attr>
+                            <mml:attr name="originalText">File name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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${symbol_dollar}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${symbol_dollar}Style</mml:type>
+                </mml:param>
+            </mml:params>
+        </mml:act>
+        <mml:act id="openRestApi">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.application.fixture.scenarios.DomainAppDemo${symbol_pound}openRestApi()</mml:attr>
+                    <mml:attr name="originalText">Open Rest Api</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">datanucleusIdLong</mml:attr>
+                    <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                    <mml:attr name="sequence">750.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.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 void 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">void</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">IDEMPOTENT</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.application.fixture.scenarios.DomainAppDemo${symbol_pound}rebuildMetamodel()</mml:attr>
+                    <mml:attr name="originalText">Rebuild Metamodel</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">datanucleusIdLong</mml:attr>
+                    <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                    <mml:attr name="sequence">800.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>void</mml:returnType>
+            <mml:params/>
+        </mml:act>
+    </mml:actions>
+</mml:domainClassDto>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.health.HealthCheckServiceImpl.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.health.HealthCheckServiceImpl.xml
new file mode 100644
index 0000000..f83e039
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.health.HealthCheckServiceImpl.xml
@@ -0,0 +1,48 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.audit.AuditableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetFromConfiguration">
+            <mml:attr name="enablement">ENABLED</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
+            <mml:attr name="menuBar">PRIMARY</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservice.annotation.IconFacetDerivedFromDomainServiceAnnotation">
+            <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName">
+            <mml:attr name="derived">true</mml:attr>
+            <mml:attr name="value">domainapp.application.services.health.HealthCheckServiceImpl</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+            <mml:attr name="validating">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.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:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+            <mml:attr name="disabling">true</mml:attr>
+            <mml:attr name="hiding">true</mml:attr>
+        </mml:facet>
+    </mml:facets>
+</mml:domainClassDto>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageService.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageService.xml
new file mode 100644
index 0000000..ac08c6a
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageService.xml
@@ -0,0 +1,47 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<mml:domainClassDto id="domainapp.application.services.homepage.HomePageService" service="true" xmlns:mml="http://isis.apache.org/schema/metamodel">
+    <mml:facets>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred">
+            <mml:attr name="escaped">true</mml:attr>
+            <mml:attr name="value">Home Page Service</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.audit.AuditableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetFromConfiguration">
+            <mml:attr name="enablement">ENABLED</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
+            <mml:attr name="menuBar">PRIMARY</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservice.annotation.IconFacetDerivedFromDomainServiceAnnotation">
+            <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromDomainServiceAnnotationElseGetId">
+            <mml:attr name="value">homepage.HomePageService</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+            <mml:attr name="validating">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+            <mml:attr name="derived">true</mml:attr>
+            <mml:attr name="value">Home Page Services</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+            <mml:attr name="disabling">true</mml:attr>
+            <mml:attr name="hiding">true</mml:attr>
+        </mml:facet>
+    </mml:facets>
+</mml:domainClassDto>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageViewModel.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageViewModel.xml
new file mode 100644
index 0000000..7215193
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.application.services.homepage.HomePageViewModel.xml
@@ -0,0 +1,352 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.audit.AuditableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetFromConfiguration">
+            <mml:attr name="enablement">ENABLED</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForDomainObjectAnnotation">
+            <mml:attr name="underlyingFacet">org.apache.isis.core.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.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+            <mml:attr name="validating">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.viewmodel.ViewModelFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobject.recreatable.RecreatableObjectFacetForDomainObjectAnnotation">
+            <mml:attr name="recreationMechanism">INITIALIZES</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+            <mml:attr name="disabling">true</mml:attr>
+            <mml:attr name="hiding">true</mml:attr>
+        </mml:facet>
+    </mml:facets>
+    <mml:properties/>
+    <mml:collections>
+        <mml:coll id="objects">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel${symbol_pound}objects</mml:attr>
+                    <mml:attr name="originalText">Objects</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.modify.CollectionDomainEventFacet" fqcn="org.apache.isis.core.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.core.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.core.metamodel.facets.collections.modify.CollectionAddToFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.collection.modify.CollectionAddToFacetForDomainEventFromDefault">
+                    <mml:attr name="collectionAddToFacet">org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacetViaAccessor</mml:attr>
+                    <mml:attr name="getterFacet">org.apache.isis.core.metamodel.facets.collections.accessor.CollectionAccessorFacetViaAccessor</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.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.core.metamodel.facets.collections.modify.CollectionClearFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.collections.modify.CollectionRemoveFromFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.collection.modify.CollectionRemoveFromFacetForDomainEventFromDefault">
+                    <mml:attr name="collectionRemoveFromFacet">org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacetViaAccessor</mml:attr>
+                    <mml:attr name="getterFacet">org.apache.isis.core.metamodel.facets.collections.accessor.CollectionAccessorFacetViaAccessor</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.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.core.metamodel.facets.collparam.semantics.CollectionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.collparam.semantics.CollectionSemanticsFacetDefault">
+                    <mml:attr name="value">LIST_INTERFACE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.recreatable.DisabledFacetOnCollectionDerivedFromRecreatableObject" fqcn="org.apache.isis.core.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.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet" fqcn="org.apache.isis.core.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:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.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${symbol_dollar}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.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel${symbol_pound}downloadLayoutXml()</mml:attr>
+                    <mml:attr name="originalText">Download Layout Xml</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">datanucleusIdLong</mml:attr>
+                    <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                    <mml:attr name="sequence">700.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml${symbol_pound}act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService${symbol_dollar}Style)</mml:attr>
+                            <mml:attr name="originalText">File name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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${symbol_dollar}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${symbol_dollar}Style</mml:type>
+                </mml:param>
+            </mml:params>
+        </mml:act>
+        <mml:act id="openRestApi">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel${symbol_pound}openRestApi()</mml:attr>
+                    <mml:attr name="originalText">Open Rest Api</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">datanucleusIdLong</mml:attr>
+                    <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                    <mml:attr name="sequence">750.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.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 void 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">void</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">IDEMPOTENT</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel${symbol_pound}rebuildMetamodel()</mml:attr>
+                    <mml:attr name="originalText">Rebuild Metamodel</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">datanucleusIdLong</mml:attr>
+                    <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                    <mml:attr name="sequence">800.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>void</mml:returnType>
+            <mml:params/>
+        </mml:act>
+    </mml:actions>
+</mml:domainClassDto>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObject.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObject.xml
new file mode 100644
index 0000000..4a2b5d7
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObject.xml
@@ -0,0 +1,878 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.cssclass.CssClassFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.audit.AuditableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetForDomainObjectAnnotation">
+            <mml:attr name="enablement">ENABLED</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobjectlayout.BookmarkPolicyFacetForDomainObjectLayoutAnnotation">
+            <mml:attr name="bookmarkPolicy">NOT_SPECIFIED</mml:attr>
+            <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForJdoPersistenceCapableAnnotation">
+            <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName</mml:attr>
+            <mml:attr name="value">simple.SimpleObject</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+            <mml:attr name="validating">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobjectlayout.PluralFacetForDomainObjectLayoutAnnotation"/>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.title.methods.TitleFacetViaTitleMethod</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.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.objectstore.jdo.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityFacet" fqcn="org.apache.isis.objectstore.jdo.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityFacetAnnotation">
+            <mml:attr name="strategy">IDENTITY</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet" fqcn="org.apache.isis.objectstore.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.objectstore.jdo.metamodel.facets.object.version.JdoVersionFacet" fqcn="org.apache.isis.objectstore.jdo.metamodel.facets.object.version.JdoVersionFacetFromAnnotation"/>
+    </mml:facets>
+    <mml:properties>
+        <mml:prop id="datanucleusIdLong">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.prop">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.lang.Long org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong.prop()</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong</mml:attr>
+                    <mml:attr name="returnType">java.lang.Long</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}datanucleusIdLong()</mml:attr>
+                    <mml:attr name="originalText">Id</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.hidden.method.HideForContextFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong.hideProp()</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation">
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="where">ALL_TABLES</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.prop">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.lang.Long org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong.prop()</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong</mml:attr>
+                    <mml:attr name="returnType">java.lang.Long</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}datanucleusVersionLong()</mml:attr>
+                    <mml:attr name="originalText">Version</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.hidden.method.HideForContextFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong.hideProp()</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation">
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="where">ALL_TABLES</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp.ActionDomainEvent</mml:attr>
+                    <mml:attr name="intent.prop">EXECUTE</mml:attr>
+                    <mml:attr name="methods">public java.sql.Timestamp org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp.prop()</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp</mml:attr>
+                    <mml:attr name="returnType">java.sql.Timestamp</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ASSOCIATION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}datanucleusVersionTimestamp()</mml:attr>
+                    <mml:attr name="originalText">Version</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.hidden.method.HideForContextFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp.hideProp()</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation">
+                    <mml:attr name="hiding">true</mml:attr>
+                    <mml:attr name="where">ALL_TABLES</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}name</mml:attr>
+                    <mml:attr name="originalText">Name</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.objectstore.jdo.metamodel.facets.prop.column.MandatoryFacetDerivedFromJdoColumn">
+                    <mml:attr name="inverted">false</mml:attr>
+                    <mml:attr name="semantics">REQUIRED</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.objectstore.jdo.metamodel.facets.prop.column.MaxLengthFacetDerivedFromJdoColumn">
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.properties.property.maxlength.MaxLengthFacetForPropertyAnnotation</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">40</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mustsatisfyspec.MustSatisfySpecificationFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.property.mustsatisfy.MustSatisfySpecificationFacetForPropertyAnnotation">
+                    <mml:attr name="specifications">domainapp.modules.simple.dom.types.Name${symbol_dollar}NoExclamationMarks</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.typicallen.fromtype.TypicalLengthFacetOnPropertyDerivedFromType">
+                    <mml:attr name="derived">true</mml:attr>
+                    <mml:attr name="typicalLengthFacet">org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.properties.defaults.PropertyDefaultFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.defaults.fromtype.PropertyDefaultFacetDerivedFromDefaultedFacet">
+                    <mml:attr name="typeFacet">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertyDomainEventFacetDefault">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="getterFacet">org.apache.isis.core.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.core.metamodel.facets.properties.update.clear.PropertyClearFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertyClearFacetForDomainEventFromDefault">
+                    <mml:attr name="clearFacet">org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod</mml:attr>
+                    <mml:attr name="getterFacet">org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.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.core.metamodel.facets.properties.update.init.PropertyInitializationFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.properties.update.modify.PropertySetterFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterFacetForDomainEventFromDefault">
+                    <mml:attr name="getterFacet">org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+                    <mml:attr name="setterFacet">org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.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.core.metamodel.facets.properties.validating.PropertyValidateFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.validating.dflt.PropertyValidateFacetDefault">
+                    <mml:attr name="validating">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">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.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}notes</mml:attr>
+                    <mml:attr name="originalText">Notes</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.objectstore.jdo.metamodel.facets.prop.column.MandatoryFacetDerivedFromJdoColumn">
+                    <mml:attr name="inverted">true</mml:attr>
+                    <mml:attr name="semantics">OPTIONAL</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.objectstore.jdo.metamodel.facets.prop.column.MaxLengthFacetDerivedFromJdoColumn">
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.properties.property.maxlength.MaxLengthFacetForPropertyAnnotation</mml:attr>
+                    <mml:attr name="validating">true</mml:attr>
+                    <mml:attr name="value">4000</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.typicallen.fromtype.TypicalLengthFacetOnPropertyDerivedFromType">
+                    <mml:attr name="derived">true</mml:attr>
+                    <mml:attr name="typicalLengthFacet">org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.properties.defaults.PropertyDefaultFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.defaults.fromtype.PropertyDefaultFacetDerivedFromDefaultedFacet">
+                    <mml:attr name="typeFacet">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertyDomainEventFacetDefault">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="getterFacet">org.apache.isis.core.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.core.metamodel.facets.properties.update.clear.PropertyClearFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertyClearFacetForDomainEventFromDefault">
+                    <mml:attr name="clearFacet">org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod</mml:attr>
+                    <mml:attr name="getterFacet">org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.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.core.metamodel.facets.properties.update.init.PropertyInitializationFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.properties.update.modify.PropertySetterFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterFacetForDomainEventFromDefault">
+                    <mml:attr name="getterFacet">org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+                    <mml:attr name="setterFacet">org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.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.core.metamodel.facets.properties.validating.PropertyValidateFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.validating.dflt.PropertyValidateFacetDefault">
+                    <mml:attr name="validating">true</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}delete()</mml:attr>
+                    <mml:attr name="originalText">Delete</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata.ActionDomainEvent</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                    <mml:attr name="eventType">org.apache.isis.core.metamodel.services.jdosupport.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.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata.act(java.lang.String) throws javax.xml.bind.JAXBException,java.io.IOException</mml:attr>
+                    <mml:attr name="onType">org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata</mml:attr>
+                    <mml:attr name="returnType">org.apache.isis.applib.value.Clob</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}downloadJdoMetadata()</mml:attr>
+                    <mml:attr name="originalText">Download Jdo Metadata</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">datanucleusIdLong</mml:attr>
+                    <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                    <mml:attr name="sequence">710.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata${symbol_pound}act(java.lang.String)</mml:attr>
+                            <mml:attr name="originalText">File name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.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.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.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${symbol_dollar}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.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}downloadLayoutXml()</mml:attr>
+                    <mml:attr name="originalText">Download Layout Xml</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">datanucleusIdLong</mml:attr>
+                    <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                    <mml:attr name="sequence">700.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">org.apache.isis.applib.mixins.layout.Object_downloadLayoutXml${symbol_pound}act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService${symbol_dollar}Style)</mml:attr>
+                            <mml:attr name="originalText">File name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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${symbol_dollar}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${symbol_dollar}Style</mml:type>
+                </mml:param>
+            </mml:params>
+        </mml:act>
+        <mml:act id="openRestApi">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}openRestApi()</mml:attr>
+                    <mml:attr name="originalText">Open Rest Api</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">datanucleusIdLong</mml:attr>
+                    <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                    <mml:attr name="sequence">750.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.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 void 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">void</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                    <mml:attr name="contributed">AS_ACTION</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                    <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">IDEMPOTENT</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}rebuildMetamodel()</mml:attr>
+                    <mml:attr name="originalText">Rebuild Metamodel</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="name">datanucleusIdLong</mml:attr>
+                    <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                    <mml:attr name="sequence">800.1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>void</mml:returnType>
+            <mml:params/>
+        </mml:act>
+        <mml:act id="updateName">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.associateWith.AssociatedWithFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.associateWith.AssociatedWithFacetForActionAnnotation">
+                    <mml:attr name="value">name</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.command.CommandFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.publish.PublishedActionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.publishing.PublishedActionFacetForActionAnnotation"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">IDEMPOTENT</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}updateName()</mml:attr>
+                    <mml:attr name="originalText">Update Name</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                            <mml:attr name="defaultFacets">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                            <mml:attr name="derived">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}updateName(java.lang.String)</mml:attr>
+                            <mml:attr name="originalText">Name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mustsatisfyspec.MustSatisfySpecificationFacet" fqcn="org.apache.isis.core.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation">
+                            <mml:attr name="specifications">domainapp.modules.simple.dom.types.Name${symbol_dollar}NoExclamationMarks</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.parameter.mustsatisfy.MustSatisfySpecificationFacetForParameterAnnotation</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                            <mml:attr name="derived">true</mml:attr>
+                            <mml:attr name="typicalLengthFacet">org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObjects.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObjects.xml
new file mode 100644
index 0000000..ced2da4
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/domainapp.modules.simple.dom.impl.SimpleObjects.xml
@@ -0,0 +1,270 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+            <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects</mml:attr>
+            <mml:attr name="originalText">Simple Objects</mml:attr>
+            <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.domainservicelayout.NamedFacetForDomainServiceLayoutAnnotation</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.audit.AuditableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetFromConfiguration">
+            <mml:attr name="enablement">ENABLED</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+            <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservice.annotation.DomainServiceFacetAnnotation">
+            <mml:attr name="natureOfService">VIEW_MENU_ONLY</mml:attr>
+            <mml:attr name="repositoryFor">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
+            <mml:attr name="menuBar">PRIMARY</mml:attr>
+            <mml:attr name="menuOrder">10</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservice.annotation.IconFacetDerivedFromDomainServiceAnnotation">
+            <mml:attr name="repositoryFor">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromDomainServiceAnnotationElseGetId">
+            <mml:attr name="value">simple.SimpleObjectMenu</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+            <mml:attr name="validating">true</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.PluralFacetTranslated">
+            <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects</mml:attr>
+            <mml:attr name="derived">true</mml:attr>
+            <mml:attr name="originalText">Simple Objects</mml:attr>
+        </mml:facet>
+        <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+            <mml:attr name="disabling">true</mml:attr>
+            <mml:attr name="hiding">true</mml:attr>
+        </mml:facet>
+    </mml:facets>
+    <mml:actions>
+        <mml:act id="create">
+            <mml:facets>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromDomainServiceFacet">
+                    <mml:attr name="contributed">AS_NEITHER</mml:attr>
+                    <mml:attr name="derived">true</mml:attr>
+                    <mml:attr name="natureOfService">VIEW_MENU_ONLY</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetFallbackToNonIdempotent">
+                    <mml:attr name="value">NON_IDEMPOTENT</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects${symbol_pound}create()</mml:attr>
+                    <mml:attr name="originalText">Create</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="sequence">3</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                    <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                            <mml:attr name="defaultFacets">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                            <mml:attr name="derived">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects${symbol_pound}create(java.lang.String)</mml:attr>
+                            <mml:attr name="originalText">Name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                            <mml:attr name="derived">true</mml:attr>
+                            <mml:attr name="typicalLengthFacet">org.apache.isis.core.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.core.metamodel.facets.actcoll.typeof.TypeOfFacet" fqcn="org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics">
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromDomainServiceFacet">
+                    <mml:attr name="contributed">AS_NEITHER</mml:attr>
+                    <mml:attr name="derived">true</mml:attr>
+                    <mml:attr name="natureOfService">VIEW_MENU_ONLY</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects${symbol_pound}findByName()</mml:attr>
+                    <mml:attr name="originalText">Find By Name</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="sequence">2</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.BookmarkPolicyFacetForActionLayoutAnnotation">
+                    <mml:attr name="bookmarkPolicy">AS_ROOT</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</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.core.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                            <mml:attr name="defaultFacets">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                            <mml:attr name="derived">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                            <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects${symbol_pound}findByName(java.lang.String)</mml:attr>
+                            <mml:attr name="originalText">Name</mml:attr>
+                            <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                            <mml:attr name="validating">true</mml:attr>
+                        </mml:facet>
+                        <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                            <mml:attr name="derived">true</mml:attr>
+                            <mml:attr name="typicalLengthFacet">org.apache.isis.core.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.core.metamodel.facets.actcoll.typeof.TypeOfFacet" fqcn="org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics">
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromDomainServiceFacet">
+                    <mml:attr name="contributed">AS_NEITHER</mml:attr>
+                    <mml:attr name="derived">true</mml:attr>
+                    <mml:attr name="natureOfService">VIEW_MENU_ONLY</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                    <mml:attr name="position">BELOW</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                    <mml:attr name="value">SAFE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                    <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects${symbol_pound}listAll()</mml:attr>
+                    <mml:attr name="originalText">List All</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                    <mml:attr name="value">hidden</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                    <mml:attr name="sequence">1</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.BookmarkPolicyFacetForActionLayoutAnnotation">
+                    <mml:attr name="bookmarkPolicy">AS_ROOT</mml:attr>
+                    <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                    <mml:attr name="promptStyle">INLINE</mml:attr>
+                </mml:facet>
+                <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                    <mml:attr name="disabling">true</mml:attr>
+                    <mml:attr name="hiding">true</mml:attr>
+                </mml:facet>
+            </mml:facets>
+            <mml:returnType>java.util.List</mml:returnType>
+            <mml:params/>
+        </mml:act>
+    </mml:actions>
+</mml:domainClassDto>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/org.apache.isis.applib.value.LocalResourcePath.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/org.apache.isis.applib.value.LocalResourcePath.xml
new file mode 100644
index 0000000..2b505d4
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/mml/approved/org.apache.isis.applib.value.LocalResourcePath.xml
@@ -0,0 +1,5 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<mml:domainClassDto id="org.apache.isis.applib.value.LocalResourcePath" xmlns:mml="http://isis.apache.org/schema/metamodel"/>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/smoke/Smoke_IntegTest.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/smoke/Smoke_IntegTest.java
new file mode 100644
index 0000000..fc43a3c
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/smoke/Smoke_IntegTest.java
@@ -0,0 +1,100 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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.Test;
+
+import domainapp.application.integtests.DomainAppIntegTestAbstract;
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class Smoke_IntegTest extends DomainAppIntegTestAbstract {
+
+    @Inject
+    SimpleObjects menu;
+
+    @Test
+    public 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/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/tests/mml/MetaModelService_IntegTest.exports.approved.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/tests/mml/MetaModelService_IntegTest.exports.approved.xml
new file mode 100644
index 0000000..47d3e8e
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/java/domainapp/application/integtests/tests/mml/MetaModelService_IntegTest.exports.approved.xml
@@ -0,0 +1,2746 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<mml:metamodelDto xmlns:mml="http://isis.apache.org/schema/metamodel">
+    <mml:domainClass id="domainapp.application.fixture.DomainAppFixtureScriptsSpecificationProvider" service="true">
+        <mml:facets>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
+                <mml:attr name="menuBar">PRIMARY</mml:attr>
+                <mml:attr name="menuOrder">2147483547</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservice.annotation.IconFacetDerivedFromDomainServiceAnnotation">
+                <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFallback">
+                <mml:attr name="columns">[4,0,0,8]</mml:attr>
+                <mml:attr name="left">General</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet" fqcn="org.apache.isis.core.metamodel.facets.fallback.NotPersistableFacetNull">
+                <mml:attr name="disabling">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">domainapp.application.fixture.DomainAppFixtureScriptsSpecificationProvider</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+                <mml:attr name="validating">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.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:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="hiding">true</mml:attr>
+            </mml:facet>
+        </mml:facets>
+        <mml:actions/>
+    </mml:domainClass>
+    <mml:domainClass id="domainapp.application.services.homepage.HomePageService" service="true">
+        <mml:facets>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred">
+                <mml:attr name="escaped">true</mml:attr>
+                <mml:attr name="value">Home Page Service</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
+                <mml:attr name="menuBar">PRIMARY</mml:attr>
+                <mml:attr name="menuOrder">2147483547</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservice.annotation.IconFacetDerivedFromDomainServiceAnnotation">
+                <mml:attr name="repositoryFor">java.lang.Object</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFallback">
+                <mml:attr name="columns">[4,0,0,8]</mml:attr>
+                <mml:attr name="left">General</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet" fqcn="org.apache.isis.core.metamodel.facets.fallback.NotPersistableFacetNull">
+                <mml:attr name="disabling">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromDomainServiceAnnotationElseGetId">
+                <mml:attr name="value">homepage.HomePageService</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+                <mml:attr name="validating">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">Home Page Services</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="hiding">true</mml:attr>
+            </mml:facet>
+        </mml:facets>
+        <mml:actions>
+            <mml:act id="homePage">
+                <mml:facets>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.services.eventbus.ActionDomainEvent.Default</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.applib.services.eventbus.ActionDomainEvent.Default</mml:attr>
+                        <mml:attr name="intent.homePage">EXECUTE</mml:attr>
+                        <mml:attr name="methods">public domainapp.application.services.homepage.HomePageViewModel domainapp.application.services.homepage.HomePageService.homePage()</mml:attr>
+                        <mml:attr name="onType">domainapp.application.services.homepage.HomePageService</mml:attr>
+                        <mml:attr name="returnType">domainapp.application.services.homepage.HomePageViewModel</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.homepage.HomePageFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.homepage.annotation.HomePageFacetAnnotation"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromDomainServiceFacet">
+                        <mml:attr name="as">EITHER</mml:attr>
+                        <mml:attr name="derived">true</mml:attr>
+                        <mml:attr name="natureOfService">DOMAIN</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notinservicemenu.NotInServiceMenuFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.notinservicemenu.derived.NotInServiceMenuFacetDerivedFromDomainServiceFacet">
+                        <mml:attr name="derived">true</mml:attr>
+                        <mml:attr name="natureOfService">DOMAIN</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                        <mml:attr name="position">BELOW</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">SAFE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.application.services.homepage.HomePageService${symbol_pound}homePage()</mml:attr>
+                        <mml:attr name="originalText">Home Page</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</mml:attr>
+                    </mml:facet>
+                </mml:facets>
+                <mml:returnType>domainapp.application.services.homepage.HomePageViewModel</mml:returnType>
+                <mml:params/>
+            </mml:act>
+        </mml:actions>
+    </mml:domainClass>
+    <mml:domainClass id="domainapp.application.services.homepage.HomePageViewModel">
+        <mml:facets>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet" fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
+                <mml:attr name="value">org.apache.isis.applib.services.eventbus.ObjectCreatedEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet" fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacetForDomainObjectAnnotation">
+                <mml:attr name="value">org.apache.isis.applib.services.eventbus.ObjectLoadedEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet" fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacetForDomainObjectAnnotation">
+                <mml:attr name="value">org.apache.isis.applib.services.eventbus.ObjectPersistedEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet" fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacetForDomainObjectAnnotation">
+                <mml:attr name="value">org.apache.isis.applib.services.eventbus.ObjectPersistingEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet" fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacetForDomainObjectAnnotation">
+                <mml:attr name="value">org.apache.isis.applib.services.eventbus.ObjectRemovingEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet" fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacetForDomainObjectAnnotation">
+                <mml:attr name="value">org.apache.isis.applib.services.eventbus.ObjectUpdatedEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet" fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation">
+                <mml:attr name="value">org.apache.isis.applib.services.eventbus.ObjectUpdatingEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFallback">
+                <mml:attr name="columns">[4,0,0,8]</mml:attr>
+                <mml:attr name="left">General</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet" fqcn="org.apache.isis.core.metamodel.facets.fallback.NotPersistableFacetNull">
+                <mml:attr name="disabling">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForDomainObjectAnnotation">
+                <mml:attr name="underlyingFacet">org.apache.isis.core.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.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+                <mml:attr name="validating">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.viewmodel.ViewModelFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobject.recreatable.RecreatableObjectFacetForDomainObjectAnnotation">
+                <mml:attr name="recreationMechanism">INITIALIZES</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="hiding">true</mml:attr>
+            </mml:facet>
+        </mml:facets>
+        <mml:properties/>
+        <mml:collections>
+            <mml:coll id="objects">
+                <mml:facets>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel${symbol_pound}objects</mml:attr>
+                        <mml:attr name="originalText">Objects</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.modify.CollectionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.collections.collection.modify.CollectionDomainEventFacetDefault</mml:attr>
+                        <mml:attr name="validating">true</mml:attr>
+                        <mml:attr name="value">org.apache.isis.applib.services.eventbus.CollectionDomainEvent.Default</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.collection.modify.CollectionAddToFacetForDomainEventFromDefault">
+                        <mml:attr name="collectionAddToFacet">org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacetViaAccessor</mml:attr>
+                        <mml:attr name="getterFacet">org.apache.isis.core.metamodel.facets.collections.accessor.CollectionAccessorFacetViaAccessor</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.collections.modify.CollectionAddToFacetViaAccessor</mml:attr>
+                        <mml:attr name="value">org.apache.isis.applib.services.eventbus.CollectionDomainEvent.Default</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.modify.CollectionClearFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.collections.modify.CollectionRemoveFromFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.collection.modify.CollectionRemoveFromFacetForDomainEventFromDefault">
+                        <mml:attr name="collectionRemoveFromFacet">org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacetViaAccessor</mml:attr>
+                        <mml:attr name="getterFacet">org.apache.isis.core.metamodel.facets.collections.accessor.CollectionAccessorFacetViaAccessor</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.collections.modify.CollectionRemoveFromFacetViaAccessor</mml:attr>
+                        <mml:attr name="value">org.apache.isis.applib.services.eventbus.CollectionDomainEvent.Default</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collparam.semantics.CollectionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.collparam.semantics.CollectionSemanticsFacetDefault">
+                        <mml:attr name="value">LIST</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.recreatable.DisabledFacetOnCollectionDerivedFromRecreatableObject" fqcn="org.apache.isis.core.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="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">ANYWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet" fqcn="org.apache.isis.core.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:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</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.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.services.layout.Object_downloadLayoutXml.ActionDomainEvent</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.applib.services.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.services.layout.Object_downloadLayoutXml.act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService${symbol_dollar}Style)</mml:attr>
+                        <mml:attr name="onType">org.apache.isis.applib.services.layout.Object_downloadLayoutXml</mml:attr>
+                        <mml:attr name="returnType">java.lang.Object</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                        <mml:attr name="as">ASSOCIATION</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                        <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">SAFE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel${symbol_pound}downloadLayoutXml()</mml:attr>
+                        <mml:attr name="originalText">Download Layout Xml</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                        <mml:attr name="name">datanucleusIdLong</mml:attr>
+                        <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                        <mml:attr name="sequence">700.1</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</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.core.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                                <mml:attr name="defaultFacets">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider;org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                                <mml:attr name="derived">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                                <mml:attr name="context">org.apache.isis.applib.services.layout.Object_downloadLayoutXml${symbol_pound}act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService${symbol_dollar}Style)</mml:attr>
+                                <mml:attr name="originalText">File name</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.core.metamodel.facets.param.layout.LabelAtFacetForParameterLayoutAnnotation">
+                                <mml:attr name="label">DEFAULT</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.LabelAtFacetForParameterLayoutAnnotation</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                                <mml:attr name="validating">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                                <mml:attr name="derived">true</mml:attr>
+                                <mml:attr name="typicalLengthFacet">org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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.services.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.core.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                                <mml:attr name="defaultFacets">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider;org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                                <mml:attr name="derived">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                                <mml:attr name="validating">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                                <mml:attr name="derived">true</mml:attr>
+                                <mml:attr name="typicalLengthFacet">org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.isis.core.metamodel.facets.param.choices.enums.ActionParameterChoicesFacetDerivedFromChoicesFacet"/>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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${symbol_dollar}Style org.apache.isis.applib.services.layout.Object_downloadLayoutXml.default1Act()</mml:attr>
+                            </mml:facet>
+                        </mml:facets>
+                        <mml:type>org.apache.isis.applib.services.layout.LayoutService${symbol_dollar}Style</mml:type>
+                    </mml:param>
+                </mml:params>
+            </mml:act>
+            <mml:act id="openRestApi">
+                <mml:facets>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.services.layout.Object_openRestApi.ActionDomainEvent</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.applib.services.layout.Object_openRestApi.ActionDomainEvent</mml:attr>
+                        <mml:attr name="intent.act">EXECUTE</mml:attr>
+                        <mml:attr name="methods">public java.net.URL org.apache.isis.applib.services.layout.Object_openRestApi.act() throws java.net.MalformedURLException</mml:attr>
+                        <mml:attr name="onType">org.apache.isis.applib.services.layout.Object_openRestApi</mml:attr>
+                        <mml:attr name="returnType">java.net.URL</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                        <mml:attr name="as">ASSOCIATION</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                        <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">SAFE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel${symbol_pound}openRestApi()</mml:attr>
+                        <mml:attr name="originalText">Open Rest Api</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                        <mml:attr name="name">datanucleusIdLong</mml:attr>
+                        <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                        <mml:attr name="sequence">750.1</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</mml:attr>
+                    </mml:facet>
+                </mml:facets>
+                <mml:returnType>java.net.URL</mml:returnType>
+                <mml:params/>
+            </mml:act>
+            <mml:act id="rebuildMetamodel">
+                <mml:facets>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.services.layout.Object_rebuildMetamodel.ActionDomainEvent</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.applib.services.layout.Object_rebuildMetamodel.ActionDomainEvent</mml:attr>
+                        <mml:attr name="intent.act">EXECUTE</mml:attr>
+                        <mml:attr name="methods">public void org.apache.isis.applib.services.layout.Object_rebuildMetamodel.act()</mml:attr>
+                        <mml:attr name="onType">org.apache.isis.applib.services.layout.Object_rebuildMetamodel</mml:attr>
+                        <mml:attr name="returnType">void</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                        <mml:attr name="as">ASSOCIATION</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                        <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">IDEMPOTENT</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.application.services.homepage.HomePageViewModel${symbol_pound}rebuildMetamodel()</mml:attr>
+                        <mml:attr name="originalText">Rebuild Metamodel</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                        <mml:attr name="name">datanucleusIdLong</mml:attr>
+                        <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                        <mml:attr name="sequence">800.1</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</mml:attr>
+                    </mml:facet>
+                </mml:facets>
+                <mml:returnType>void</mml:returnType>
+                <mml:params/>
+            </mml:act>
+        </mml:actions>
+    </mml:domainClass>
+    <mml:domainClass id="domainapp.modules.simple.dom.impl.SimpleObject">
+        <mml:facets>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.cssclass.CssClassFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobjectlayout.CssClassFacetViaDomainObjectLayoutAnnotationUsingCssClassUiEvent">
+                <mml:attr name="cssClassUiEventClass">org.apache.isis.applib.services.eventbus.CssClassUiEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.audit.AuditableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobject.auditing.AuditableFacetForDomainObjectAnnotation">
+                <mml:attr name="enablement">ENABLED</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacet" fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.CreatedLifecycleEventFacetForDomainObjectAnnotation">
+                <mml:attr name="value">org.apache.isis.applib.services.eventbus.ObjectCreatedEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacet" fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.LoadedLifecycleEventFacetForDomainObjectAnnotation">
+                <mml:attr name="value">org.apache.isis.applib.services.eventbus.ObjectLoadedEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacet" fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.PersistedLifecycleEventFacetForDomainObjectAnnotation">
+                <mml:attr name="value">org.apache.isis.applib.services.eventbus.ObjectPersistedEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacet" fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.PersistingLifecycleEventFacetForDomainObjectAnnotation">
+                <mml:attr name="value">org.apache.isis.applib.services.eventbus.ObjectPersistingEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacet" fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.RemovingLifecycleEventFacetForDomainObjectAnnotation">
+                <mml:attr name="value">org.apache.isis.applib.services.eventbus.ObjectRemovingEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacet" fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.UpdatedLifecycleEventFacetForDomainObjectAnnotation">
+                <mml:attr name="value">org.apache.isis.applib.services.eventbus.ObjectUpdatedEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacet" fqcn="org.apache.isis.core.metamodel.facets.object.callbacks.UpdatingLifecycleEventFacetForDomainObjectAnnotation">
+                <mml:attr name="value">org.apache.isis.applib.services.eventbus.ObjectUpdatingEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobjectlayout.IconFacetViaDomainObjectLayoutAnnotationUsingIconUiEvent">
+                <mml:attr name="iconUiEventClass">org.apache.isis.applib.services.eventbus.IconUiEvent.Default</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFallback">
+                <mml:attr name="columns">[4,0,0,8]</mml:attr>
+                <mml:attr name="left">General</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet" fqcn="org.apache.isis.core.metamodel.facets.fallback.NotPersistableFacetNull">
+                <mml:attr name="disabling">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobject.objectspecid.ObjectSpecIdFacetForJdoPersistenceCapableAnnotation">
+                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName</mml:attr>
+                <mml:attr name="value">simple.SimpleObject</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+                <mml:attr name="validating">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">Simple Objects</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainobjectlayout.TitleFacetViaDomainObjectLayoutAnnotationUsingTitleUiEvent">
+                <mml:attr name="titleUiEventClass">org.apache.isis.applib.services.eventbus.TitleUiEvent.Default</mml:attr>
+                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.title.annotation.TitleFacetViaTitleAnnotation</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.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.objectstore.jdo.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityFacet" fqcn="org.apache.isis.objectstore.jdo.metamodel.facets.object.datastoreidentity.JdoDatastoreIdentityFacetAnnotation">
+                <mml:attr name="strategy">IDENTITY</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.objectstore.jdo.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet" fqcn="org.apache.isis.objectstore.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.objectstore.jdo.metamodel.facets.object.version.JdoVersionFacet" fqcn="org.apache.isis.objectstore.jdo.metamodel.facets.object.version.JdoVersionFacetFromAnnotation"/>
+        </mml:facets>
+        <mml:properties>
+            <mml:prop id="datanucleusIdLong">
+                <mml:facets>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong.ActionDomainEvent</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong.ActionDomainEvent</mml:attr>
+                        <mml:attr name="intent.prop">EXECUTE</mml:attr>
+                        <mml:attr name="methods">public java.lang.Long org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong.prop()</mml:attr>
+                        <mml:attr name="onType">org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong</mml:attr>
+                        <mml:attr name="returnType">java.lang.Long</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                        <mml:attr name="as">ACTION</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                        <mml:attr name="position">BELOW</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">SAFE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}datanucleusIdLong()</mml:attr>
+                        <mml:attr name="originalText">Id</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.core.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="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">ANYWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.hidden.method.HideForContextFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong.hideProp()</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                        <mml:attr name="promptStyle">INLINE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.LabelAtFacetForPropertyLayoutAnnotation">
+                        <mml:attr name="label">LEFT</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">ALL_TABLES</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</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.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong.ActionDomainEvent</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong.ActionDomainEvent</mml:attr>
+                        <mml:attr name="intent.prop">EXECUTE</mml:attr>
+                        <mml:attr name="methods">public java.lang.Long org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong.prop()</mml:attr>
+                        <mml:attr name="onType">org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong</mml:attr>
+                        <mml:attr name="returnType">java.lang.Long</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                        <mml:attr name="as">ACTION</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                        <mml:attr name="position">BELOW</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">SAFE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}datanucleusVersionLong()</mml:attr>
+                        <mml:attr name="originalText">Version</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.core.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="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">ANYWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.hidden.method.HideForContextFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.Persistable_datanucleusVersionLong.hideProp()</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                        <mml:attr name="promptStyle">INLINE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.LabelAtFacetForPropertyLayoutAnnotation">
+                        <mml:attr name="label">LEFT</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">ALL_TABLES</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</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.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp.ActionDomainEvent</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp.ActionDomainEvent</mml:attr>
+                        <mml:attr name="intent.prop">EXECUTE</mml:attr>
+                        <mml:attr name="methods">public java.sql.Timestamp org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp.prop()</mml:attr>
+                        <mml:attr name="onType">org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp</mml:attr>
+                        <mml:attr name="returnType">java.sql.Timestamp</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                        <mml:attr name="as">ACTION</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                        <mml:attr name="position">BELOW</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">SAFE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}datanucleusVersionTimestamp()</mml:attr>
+                        <mml:attr name="originalText">Version</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.core.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="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">ANYWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.hidden.method.HideForContextFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp.hideProp()</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetAsConfigured">
+                        <mml:attr name="promptStyle">INLINE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.LabelAtFacetForPropertyLayoutAnnotation">
+                        <mml:attr name="label">LEFT</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.propcoll.notpersisted.NotPersistedFacet"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.HiddenFacetForPropertyLayoutAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">ALL_TABLES</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</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.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}name</mml:attr>
+                        <mml:attr name="originalText">Name</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.objectstore.jdo.metamodel.facets.prop.column.MandatoryFacetDerivedFromJdoColumn">
+                        <mml:attr name="inverted">false</mml:attr>
+                        <mml:attr name="semantics">REQUIRED</mml:attr>
+                        <mml:attr name="validating">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.objectstore.jdo.metamodel.facets.prop.column.MaxLengthFacetDerivedFromJdoColumn">
+                        <mml:attr name="validating">true</mml:attr>
+                        <mml:attr name="value">40</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.typicallen.fromtype.TypicalLengthFacetOnPropertyDerivedFromType">
+                        <mml:attr name="derived">true</mml:attr>
+                        <mml:attr name="typicalLengthFacet">org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.properties.defaults.PropertyDefaultFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.defaults.fromtype.PropertyDefaultFacetDerivedFromDefaultedFacet">
+                        <mml:attr name="typeFacet">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.property.hidden.HiddenFacetForPropertyAnnotation" fqcn="org.apache.isis.core.metamodel.facets.properties.property.hidden.HiddenFacetForPropertyAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.property.hidden.HiddenFacetForPropertyAnnotation" fqcn="org.apache.isis.core.metamodel.facets.properties.property.hidden.HiddenFacetForPropertyAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertyDomainEventFacetForPropertyAnnotation">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="getterFacet">org.apache.isis.core.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.services.eventbus.PropertyDomainEvent.Default</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertyClearFacetForDomainEventFromPropertyAnnotation">
+                        <mml:attr name="clearFacet">org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod</mml:attr>
+                        <mml:attr name="getterFacet">org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod</mml:attr>
+                        <mml:attr name="value">org.apache.isis.applib.services.eventbus.PropertyDomainEvent.Default</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.update.init.PropertyInitializationFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.properties.update.modify.PropertySetterFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterFacetForDomainEventFromPropertyAnnotation">
+                        <mml:attr name="getterFacet">org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+                        <mml:attr name="setterFacet">org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod</mml:attr>
+                        <mml:attr name="value">org.apache.isis.applib.services.eventbus.PropertyDomainEvent.Default</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.validating.PropertyValidateFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.validating.dflt.PropertyValidateFacetDefault">
+                        <mml:attr name="validating">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">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.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}notes</mml:attr>
+                        <mml:attr name="originalText">Notes</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.disabled.DisabledFacet" fqcn="org.apache.isis.core.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="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">EVERYWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.objectstore.jdo.metamodel.facets.prop.column.MandatoryFacetDerivedFromJdoColumn">
+                        <mml:attr name="inverted">true</mml:attr>
+                        <mml:attr name="semantics">OPTIONAL</mml:attr>
+                        <mml:attr name="validating">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.objectstore.jdo.metamodel.facets.prop.column.MaxLengthFacetDerivedFromJdoColumn">
+                        <mml:attr name="validating">true</mml:attr>
+                        <mml:attr name="value">4000</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.typicallen.fromtype.TypicalLengthFacetOnPropertyDerivedFromType">
+                        <mml:attr name="derived">true</mml:attr>
+                        <mml:attr name="typicalLengthFacet">org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.propcoll.accessor.PropertyOrCollectionAccessorFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.properties.defaults.PropertyDefaultFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.defaults.fromtype.PropertyDefaultFacetDerivedFromDefaultedFacet">
+                        <mml:attr name="typeFacet">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.property.hidden.HiddenFacetForPropertyAnnotation" fqcn="org.apache.isis.core.metamodel.facets.properties.property.hidden.HiddenFacetForPropertyAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.property.hidden.HiddenFacetForPropertyAnnotation" fqcn="org.apache.isis.core.metamodel.facets.properties.property.hidden.HiddenFacetForPropertyAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertyDomainEventFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertyDomainEventFacetForPropertyAnnotation">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="getterFacet">org.apache.isis.core.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.services.eventbus.PropertyDomainEvent.Default</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertyClearFacetForDomainEventFromPropertyAnnotation">
+                        <mml:attr name="clearFacet">org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod</mml:attr>
+                        <mml:attr name="getterFacet">org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.properties.update.clear.PropertyClearFacetViaSetterMethod</mml:attr>
+                        <mml:attr name="value">org.apache.isis.applib.services.eventbus.PropertyDomainEvent.Default</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.update.init.PropertyInitializationFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.properties.update.modify.PropertySetterFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.property.modify.PropertySetterFacetForDomainEventFromPropertyAnnotation">
+                        <mml:attr name="getterFacet">org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessor</mml:attr>
+                        <mml:attr name="setterFacet">org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.properties.update.modify.PropertySetterFacetViaSetterMethod</mml:attr>
+                        <mml:attr name="value">org.apache.isis.applib.services.eventbus.PropertyDomainEvent.Default</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.validating.PropertyValidateFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.validating.dflt.PropertyValidateFacetDefault">
+                        <mml:attr name="validating">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</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.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.services.eventbus.ActionDomainEvent.Default</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.applib.services.eventbus.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.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                        <mml:attr name="position">BELOW</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}delete()</mml:attr>
+                        <mml:attr name="originalText">Delete</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</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.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata.ActionDomainEvent</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.core.metamodel.services.jdosupport.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.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata.act(java.lang.String) throws javax.xml.bind.JAXBException,java.io.IOException</mml:attr>
+                        <mml:attr name="onType">org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata</mml:attr>
+                        <mml:attr name="returnType">org.apache.isis.applib.value.Clob</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                        <mml:attr name="as">ASSOCIATION</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                        <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">SAFE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}downloadJdoMetadata()</mml:attr>
+                        <mml:attr name="originalText">Download Jdo Metadata</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                        <mml:attr name="name">datanucleusIdLong</mml:attr>
+                        <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                        <mml:attr name="sequence">710.1</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</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.core.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                                <mml:attr name="defaultFacets">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                                <mml:attr name="derived">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                                <mml:attr name="context">org.apache.isis.core.metamodel.services.jdosupport.Persistable_downloadJdoMetadata${symbol_pound}act(java.lang.String)</mml:attr>
+                                <mml:attr name="originalText">File name</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.core.metamodel.facets.param.layout.LabelAtFacetForParameterLayoutAnnotation">
+                                <mml:attr name="label">DEFAULT</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.LabelAtFacetForParameterLayoutAnnotation</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                                <mml:attr name="validating">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                                <mml:attr name="derived">true</mml:attr>
+                                <mml:attr name="typicalLengthFacet">org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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.core.metamodel.services.jdosupport.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.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.services.layout.Object_downloadLayoutXml.ActionDomainEvent</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.applib.services.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.services.layout.Object_downloadLayoutXml.act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService${symbol_dollar}Style)</mml:attr>
+                        <mml:attr name="onType">org.apache.isis.applib.services.layout.Object_downloadLayoutXml</mml:attr>
+                        <mml:attr name="returnType">java.lang.Object</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                        <mml:attr name="as">ASSOCIATION</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                        <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">SAFE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}downloadLayoutXml()</mml:attr>
+                        <mml:attr name="originalText">Download Layout Xml</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                        <mml:attr name="name">datanucleusIdLong</mml:attr>
+                        <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                        <mml:attr name="sequence">700.1</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</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.core.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                                <mml:attr name="defaultFacets">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider;org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                                <mml:attr name="derived">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                                <mml:attr name="context">org.apache.isis.applib.services.layout.Object_downloadLayoutXml${symbol_pound}act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService${symbol_dollar}Style)</mml:attr>
+                                <mml:attr name="originalText">File name</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.core.metamodel.facets.param.layout.LabelAtFacetForParameterLayoutAnnotation">
+                                <mml:attr name="label">DEFAULT</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.LabelAtFacetForParameterLayoutAnnotation</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                                <mml:attr name="validating">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                                <mml:attr name="derived">true</mml:attr>
+                                <mml:attr name="typicalLengthFacet">org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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.services.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.core.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                                <mml:attr name="defaultFacets">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider;org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                                <mml:attr name="derived">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                                <mml:attr name="validating">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                                <mml:attr name="derived">true</mml:attr>
+                                <mml:attr name="typicalLengthFacet">org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.isis.core.metamodel.facets.param.choices.enums.ActionParameterChoicesFacetDerivedFromChoicesFacet"/>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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${symbol_dollar}Style org.apache.isis.applib.services.layout.Object_downloadLayoutXml.default1Act()</mml:attr>
+                            </mml:facet>
+                        </mml:facets>
+                        <mml:type>org.apache.isis.applib.services.layout.LayoutService${symbol_dollar}Style</mml:type>
+                    </mml:param>
+                </mml:params>
+            </mml:act>
+            <mml:act id="openRestApi">
+                <mml:facets>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.services.layout.Object_openRestApi.ActionDomainEvent</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.applib.services.layout.Object_openRestApi.ActionDomainEvent</mml:attr>
+                        <mml:attr name="intent.act">EXECUTE</mml:attr>
+                        <mml:attr name="methods">public java.net.URL org.apache.isis.applib.services.layout.Object_openRestApi.act() throws java.net.MalformedURLException</mml:attr>
+                        <mml:attr name="onType">org.apache.isis.applib.services.layout.Object_openRestApi</mml:attr>
+                        <mml:attr name="returnType">java.net.URL</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                        <mml:attr name="as">ASSOCIATION</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                        <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">SAFE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}openRestApi()</mml:attr>
+                        <mml:attr name="originalText">Open Rest Api</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                        <mml:attr name="name">datanucleusIdLong</mml:attr>
+                        <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                        <mml:attr name="sequence">750.1</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</mml:attr>
+                    </mml:facet>
+                </mml:facets>
+                <mml:returnType>java.net.URL</mml:returnType>
+                <mml:params/>
+            </mml:act>
+            <mml:act id="rebuildMetamodel">
+                <mml:facets>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.services.layout.Object_rebuildMetamodel.ActionDomainEvent</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.applib.services.layout.Object_rebuildMetamodel.ActionDomainEvent</mml:attr>
+                        <mml:attr name="intent.act">EXECUTE</mml:attr>
+                        <mml:attr name="methods">public void org.apache.isis.applib.services.layout.Object_rebuildMetamodel.act()</mml:attr>
+                        <mml:attr name="onType">org.apache.isis.applib.services.layout.Object_rebuildMetamodel</mml:attr>
+                        <mml:attr name="returnType">void</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                        <mml:attr name="as">ASSOCIATION</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                        <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">IDEMPOTENT</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}rebuildMetamodel()</mml:attr>
+                        <mml:attr name="originalText">Rebuild Metamodel</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                        <mml:attr name="name">datanucleusIdLong</mml:attr>
+                        <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                        <mml:attr name="sequence">800.1</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</mml:attr>
+                    </mml:facet>
+                </mml:facets>
+                <mml:returnType>void</mml:returnType>
+                <mml:params/>
+            </mml:act>
+            <mml:act id="updateName">
+                <mml:facets>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.associateWith.AssociatedWithFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.associateWith.AssociatedWithFacetForActionAnnotation">
+                        <mml:attr name="value">name</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.services.eventbus.ActionDomainEvent.Default</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.applib.services.eventbus.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.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.command.CommandFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                        <mml:attr name="position">BELOW</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.publish.PublishedActionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.publishing.PublishedActionFacetForActionAnnotation">
+                        <mml:attr name="value">org.apache.isis.core.metamodel.facets.actions.publish.PublishedActionPayloadFactoryDefault</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">IDEMPOTENT</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}updateName()</mml:attr>
+                        <mml:attr name="originalText">Update Name</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</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.core.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                                <mml:attr name="defaultFacets">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                                <mml:attr name="derived">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.actions.validate.ActionParameterValidationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.validate.method.ActionParameterValidationFacetViaMethod">
+                                <mml:attr name="intent.validate0UpdateName">CHECK_IF_VALID</mml:attr>
+                                <mml:attr name="methods">public org.apache.isis.applib.services.i18n.TranslatableString domainapp.modules.simple.dom.impl.SimpleObject.validate0UpdateName(java.lang.String)</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.validate.method.ActionParameterValidationFacetViaMethod</mml:attr>
+                                <mml:attr name="validating">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                                <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObject${symbol_pound}updateName(java.lang.String)</mml:attr>
+                                <mml:attr name="originalText">Name</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.core.metamodel.facets.param.layout.LabelAtFacetForParameterLayoutAnnotation">
+                                <mml:attr name="label">DEFAULT</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.LabelAtFacetForParameterLayoutAnnotation</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                                <mml:attr name="validating">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                                <mml:attr name="derived">true</mml:attr>
+                                <mml:attr name="typicalLengthFacet">org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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:domainClass>
+    <mml:domainClass id="domainapp.modules.simple.dom.impl.SimpleObjects" service="true">
+        <mml:facets>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects</mml:attr>
+                <mml:attr name="originalText">Simple Objects</mml:attr>
+                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.domainservicelayout.NamedFacetForDomainServiceLayoutAnnotation</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.domainservice.DomainServiceFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservice.annotation.DomainServiceFacetAnnotation">
+                <mml:attr name="natureOfService">VIEW_MENU_ONLY</mml:attr>
+                <mml:attr name="repositoryFor">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.domainservicelayout.DomainServiceLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservicelayout.annotation.DomainServiceLayoutFacetAnnotation">
+                <mml:attr name="menuBar">PRIMARY</mml:attr>
+                <mml:attr name="menuOrder">10</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.icon.IconFacet" fqcn="org.apache.isis.core.metamodel.facets.object.domainservice.annotation.IconFacetDerivedFromDomainServiceAnnotation">
+                <mml:attr name="repositoryFor">domainapp.modules.simple.dom.impl.SimpleObject</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFallback">
+                <mml:attr name="columns">[4,0,0,8]</mml:attr>
+                <mml:attr name="left">General</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet" fqcn="org.apache.isis.core.metamodel.facets.fallback.NotPersistableFacetNull">
+                <mml:attr name="disabling">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromDomainServiceAnnotationElseGetId">
+                <mml:attr name="value">simple.SimpleObjectMenu</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+                <mml:attr name="validating">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.PluralFacetTranslated">
+                <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects</mml:attr>
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="originalText">Simple Objects</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="hiding">true</mml:attr>
+            </mml:facet>
+        </mml:facets>
+        <mml:actions>
+            <mml:act id="create">
+                <mml:facets>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromDomainServiceFacet">
+                        <mml:attr name="as">EITHER</mml:attr>
+                        <mml:attr name="derived">true</mml:attr>
+                        <mml:attr name="natureOfService">VIEW_MENU_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacetFallback">
+                        <mml:attr name="position">BELOW</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">NON_IDEMPOTENT</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects${symbol_pound}create()</mml:attr>
+                        <mml:attr name="originalText">Create</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                        <mml:attr name="sequence">3</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</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.core.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                                <mml:attr name="defaultFacets">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                                <mml:attr name="derived">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                                <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects${symbol_pound}create(java.lang.String)</mml:attr>
+                                <mml:attr name="originalText">Name</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.core.metamodel.facets.param.layout.LabelAtFacetForParameterLayoutAnnotation">
+                                <mml:attr name="label">DEFAULT</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.LabelAtFacetForParameterLayoutAnnotation</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                                <mml:attr name="validating">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                                <mml:attr name="derived">true</mml:attr>
+                                <mml:attr name="typicalLengthFacet">org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType</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.core.metamodel.facets.actcoll.typeof.TypeOfFacet" fqcn="org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics">
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.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.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.services.eventbus.ActionDomainEvent.Default</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.applib.services.eventbus.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.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromDomainServiceFacet">
+                        <mml:attr name="as">EITHER</mml:attr>
+                        <mml:attr name="derived">true</mml:attr>
+                        <mml:attr name="natureOfService">VIEW_MENU_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                        <mml:attr name="position">BELOW</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">SAFE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects${symbol_pound}findByName()</mml:attr>
+                        <mml:attr name="originalText">Find By Name</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                        <mml:attr name="sequence">2</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.BookmarkPolicyFacetForActionLayoutAnnotation">
+                        <mml:attr name="bookmarkPolicy">AS_ROOT</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</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.core.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                                <mml:attr name="defaultFacets">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                                <mml:attr name="derived">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                                <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects${symbol_pound}findByName(java.lang.String)</mml:attr>
+                                <mml:attr name="originalText">Name</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.core.metamodel.facets.param.layout.LabelAtFacetForParameterLayoutAnnotation">
+                                <mml:attr name="label">DEFAULT</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.LabelAtFacetForParameterLayoutAnnotation</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                                <mml:attr name="validating">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                                <mml:attr name="derived">true</mml:attr>
+                                <mml:attr name="typicalLengthFacet">org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType</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.core.metamodel.facets.actcoll.typeof.TypeOfFacet" fqcn="org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetInferredFromGenerics">
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.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.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.services.eventbus.ActionDomainEvent.Default</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.applib.services.eventbus.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.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromDomainServiceFacet">
+                        <mml:attr name="as">EITHER</mml:attr>
+                        <mml:attr name="derived">true</mml:attr>
+                        <mml:attr name="natureOfService">VIEW_MENU_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                        <mml:attr name="position">BELOW</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">SAFE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">domainapp.modules.simple.dom.impl.SimpleObjects${symbol_pound}listAll()</mml:attr>
+                        <mml:attr name="originalText">List All</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.fallback.NamedFacetDefault</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                        <mml:attr name="sequence">1</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.BookmarkPolicyFacetForActionLayoutAnnotation">
+                        <mml:attr name="bookmarkPolicy">AS_ROOT</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</mml:attr>
+                    </mml:facet>
+                </mml:facets>
+                <mml:returnType>java.util.List</mml:returnType>
+                <mml:params/>
+            </mml:act>
+        </mml:actions>
+    </mml:domainClass>
+    <mml:domainClass id="java.lang.Long">
+        <mml:facets>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred">
+                <mml:attr name="escaped">true</mml:attr>
+                <mml:attr name="value">Long</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacet" fqcn="org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.encodeable.encoder.EncodableFacetUsingEncoderDecoder"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.ImmutableFacetViaValueSemantics">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="when">ALWAYS</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFallback">
+                <mml:attr name="columns">[4,0,0,8]</mml:attr>
+                <mml:attr name="left">General</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet" fqcn="org.apache.isis.core.metamodel.facets.fallback.NotPersistableFacetNull">
+                <mml:attr name="disabling">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">java.lang.Long</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+                <mml:attr name="validating">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.parseable.ParseableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">Longs</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.title.parser.TitleFacetUsingParser"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.value.EqualByContentFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.EqualByContentFacetViaValueSemantics"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.value.ValueFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProvider"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.MaxLengthFacetUsingParser2">
+                <mml:attr name="parser">org.apache.isis.core.metamodel.facets.value.longs.LongWrapperValueSemanticsProvider</mml:attr>
+                <mml:attr name="validating">true</mml:attr>
+                <mml:attr name="value">18</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.value.longs.LongValueFacet" fqcn="org.apache.isis.core.metamodel.facets.value.longs.LongWrapperValueSemanticsProvider">
+                <mml:attr name="adaptedClass">java.lang.Long</mml:attr>
+                <mml:attr name="defaultValue">0</mml:attr>
+                <mml:attr name="equalByContent">true</mml:attr>
+                <mml:attr name="format">java.text.DecimalFormat@674dc</mml:attr>
+                <mml:attr name="immutable">true</mml:attr>
+                <mml:attr name="maxLength">18</mml:attr>
+                <mml:attr name="typicalLength">18</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="hiding">true</mml:attr>
+            </mml:facet>
+        </mml:facets>
+    </mml:domainClass>
+    <mml:domainClass id="java.lang.Object">
+        <mml:facets>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred">
+                <mml:attr name="escaped">true</mml:attr>
+                <mml:attr name="value">Object</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFallback">
+                <mml:attr name="columns">[4,0,0,8]</mml:attr>
+                <mml:attr name="left">General</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet" fqcn="org.apache.isis.core.metamodel.facets.fallback.NotPersistableFacetNull">
+                <mml:attr name="disabling">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">java.lang.Object</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+                <mml:attr name="validating">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">Objects</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="hiding">true</mml:attr>
+            </mml:facet>
+        </mml:facets>
+        <mml:properties/>
+        <mml:collections/>
+        <mml:actions>
+            <mml:act id="downloadLayoutXml">
+                <mml:facets>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.services.layout.Object_downloadLayoutXml.ActionDomainEvent</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.applib.services.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.services.layout.Object_downloadLayoutXml.act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService${symbol_dollar}Style)</mml:attr>
+                        <mml:attr name="onType">org.apache.isis.applib.services.layout.Object_downloadLayoutXml</mml:attr>
+                        <mml:attr name="returnType">java.lang.Object</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                        <mml:attr name="as">ASSOCIATION</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                        <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">SAFE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">java.lang.Object${symbol_pound}downloadLayoutXml()</mml:attr>
+                        <mml:attr name="originalText">Download Layout Xml</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                        <mml:attr name="name">datanucleusIdLong</mml:attr>
+                        <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                        <mml:attr name="sequence">700.1</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</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.core.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                                <mml:attr name="defaultFacets">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider;org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                                <mml:attr name="derived">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                                <mml:attr name="context">org.apache.isis.applib.services.layout.Object_downloadLayoutXml${symbol_pound}act(java.lang.String,org.apache.isis.applib.services.layout.LayoutService${symbol_dollar}Style)</mml:attr>
+                                <mml:attr name="originalText">File name</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.NamedFacetForParameterLayoutAnnotation</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.labelat.LabelAtFacet" fqcn="org.apache.isis.core.metamodel.facets.param.layout.LabelAtFacetForParameterLayoutAnnotation">
+                                <mml:attr name="label">DEFAULT</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.layout.LabelAtFacetForParameterLayoutAnnotation</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                                <mml:attr name="validating">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                                <mml:attr name="derived">true</mml:attr>
+                                <mml:attr name="typicalLengthFacet">org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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.services.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.core.metamodel.facets.actions.defaults.ActionDefaultsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.defaults.fromtype.ActionParameterDefaultFacetDerivedFromTypeFacets">
+                                <mml:attr name="defaultFacets">org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider;org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider</mml:attr>
+                                <mml:attr name="derived">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.param.describedas.annotderived.DescribedAsFacetOnParameterDerivedFromType"/>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.objectvalue.mandatory.MandatoryFacetDefault</mml:attr>
+                                <mml:attr name="validating">true</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType">
+                                <mml:attr name="derived">true</mml:attr>
+                                <mml:attr name="typicalLengthFacet">org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser</mml:attr>
+                                <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.param.typicallen.fromtype.TypicalLengthFacetOnParameterDerivedFromType</mml:attr>
+                            </mml:facet>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.param.choices.ActionParameterChoicesFacet" fqcn="org.apache.isis.core.metamodel.facets.param.choices.enums.ActionParameterChoicesFacetDerivedFromChoicesFacet"/>
+                            <mml:facet id="org.apache.isis.core.metamodel.facets.param.defaults.ActionParameterDefaultsFacet" fqcn="org.apache.isis.core.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${symbol_dollar}Style org.apache.isis.applib.services.layout.Object_downloadLayoutXml.default1Act()</mml:attr>
+                            </mml:facet>
+                        </mml:facets>
+                        <mml:type>org.apache.isis.applib.services.layout.LayoutService${symbol_dollar}Style</mml:type>
+                    </mml:param>
+                </mml:params>
+            </mml:act>
+            <mml:act id="openRestApi">
+                <mml:facets>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.services.layout.Object_openRestApi.ActionDomainEvent</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.applib.services.layout.Object_openRestApi.ActionDomainEvent</mml:attr>
+                        <mml:attr name="intent.act">EXECUTE</mml:attr>
+                        <mml:attr name="methods">public java.net.URL org.apache.isis.applib.services.layout.Object_openRestApi.act() throws java.net.MalformedURLException</mml:attr>
+                        <mml:attr name="onType">org.apache.isis.applib.services.layout.Object_openRestApi</mml:attr>
+                        <mml:attr name="returnType">java.net.URL</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                        <mml:attr name="as">ASSOCIATION</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                        <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">SAFE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">java.lang.Object${symbol_pound}openRestApi()</mml:attr>
+                        <mml:attr name="originalText">Open Rest Api</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                        <mml:attr name="name">datanucleusIdLong</mml:attr>
+                        <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                        <mml:attr name="sequence">750.1</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</mml:attr>
+                    </mml:facet>
+                </mml:facets>
+                <mml:returnType>java.net.URL</mml:returnType>
+                <mml:params/>
+            </mml:act>
+            <mml:act id="rebuildMetamodel">
+                <mml:facets>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation" fqcn="org.apache.isis.core.metamodel.facets.actions.action.hidden.HiddenFacetForActionAnnotation">
+                        <mml:attr name="hiding">true</mml:attr>
+                        <mml:attr name="when">ALWAYS</mml:attr>
+                        <mml:attr name="where">NOWHERE</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionDomainEventFacet" fqcn="org.apache.isis.core.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.services.layout.Object_rebuildMetamodel.ActionDomainEvent</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.invocation.ActionInvocationFacetForDomainEventFromActionAnnotation">
+                        <mml:attr name="eventType">org.apache.isis.applib.services.layout.Object_rebuildMetamodel.ActionDomainEvent</mml:attr>
+                        <mml:attr name="intent.act">EXECUTE</mml:attr>
+                        <mml:attr name="methods">public void org.apache.isis.applib.services.layout.Object_rebuildMetamodel.act()</mml:attr>
+                        <mml:attr name="onType">org.apache.isis.applib.services.layout.Object_rebuildMetamodel</mml:attr>
+                        <mml:attr name="returnType">void</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.bulk.BulkFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.bulk.BulkFacetForActionAnnotation">
+                        <mml:attr name="value">REGULAR_ONLY</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.notcontributed.NotContributedFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.NotContributedFacetForActionLayoutAnnotation">
+                        <mml:attr name="as">ASSOCIATION</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.actions.notcontributed.derived.NotContributedFacetDerivedFromMixinFacet</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.position.ActionPositionFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.layout.ActionPositionFacetForActionLayoutAnnotation">
+                        <mml:attr name="position">PANEL_DROPDOWN</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.actions.prototype.PrototypeFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.actions.semantics.ActionSemanticsFacet" fqcn="org.apache.isis.core.metamodel.facets.actions.action.semantics.ActionSemanticsFacetForActionAnnotation">
+                        <mml:attr name="value">IDEMPOTENT</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.describedas.DescribedAsFacet" fqcn="org.apache.isis.core.metamodel.facets.members.describedas.annotprop.DescribedAsFacetOnMemberDerivedFromType"/>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.i18n.NamedFacetTranslated">
+                        <mml:attr name="context">java.lang.Object${symbol_pound}rebuildMetamodel()</mml:attr>
+                        <mml:attr name="originalText">Rebuild Metamodel</mml:attr>
+                        <mml:attr name="underlyingFacet">org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.layout.DefaultViewFacetForCollectionLayoutAnnotation">
+                        <mml:attr name="value">hidden</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.members.cssclassfa.CssClassFaFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.members.order.MemberOrderFacet" fqcn="org.apache.isis.core.metamodel.facets.members.order.annotprop.MemberOrderFacetAnnotation">
+                        <mml:attr name="name">datanucleusIdLong</mml:attr>
+                        <mml:attr name="originalName">datanucleusIdLong</mml:attr>
+                        <mml:attr name="sequence">800.1</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                        <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.promptStyle.PromptStyleFacetFallBackToInline">
+                        <mml:attr name="derived">true</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.metamodel.facets.properties.renderunchanged.UnchangingFacet" fqcn="org.apache.isis.core.metamodel.facets.properties.propertylayout.UnchangingFacetOnPropertyFromLayoutProperties">
+                        <mml:attr name="value">false</mml:attr>
+                    </mml:facet>
+                    <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                        <mml:attr name="disabling">true</mml:attr>
+                        <mml:attr name="hiding">true</mml:attr>
+                    </mml:facet>
+                </mml:facets>
+                <mml:returnType>void</mml:returnType>
+                <mml:params/>
+            </mml:act>
+        </mml:actions>
+    </mml:domainClass>
+    <mml:domainClass id="java.lang.String">
+        <mml:facets>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred">
+                <mml:attr name="escaped">true</mml:attr>
+                <mml:attr name="value">String</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacet" fqcn="org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.encodeable.encoder.EncodableFacetUsingEncoderDecoder"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.ImmutableFacetViaValueSemantics">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="when">ALWAYS</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFallback">
+                <mml:attr name="columns">[4,0,0,8]</mml:attr>
+                <mml:attr name="left">General</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet" fqcn="org.apache.isis.core.metamodel.facets.fallback.NotPersistableFacetNull">
+                <mml:attr name="disabling">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">java.lang.String</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+                <mml:attr name="validating">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.parseable.ParseableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">Strings</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.title.parser.TitleFacetUsingParser"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.value.EqualByContentFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.EqualByContentFacetViaValueSemantics"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.value.ValueFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProvider"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.value.string.StringValueFacet" fqcn="org.apache.isis.core.metamodel.facets.value.string.StringValueSemanticsProvider">
+                <mml:attr name="adaptedClass">java.lang.String</mml:attr>
+                <mml:attr name="equalByContent">true</mml:attr>
+                <mml:attr name="immutable">true</mml:attr>
+                <mml:attr name="typicalLength">25</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="hiding">true</mml:attr>
+            </mml:facet>
+        </mml:facets>
+    </mml:domainClass>
+    <mml:domainClass id="java.net.URL">
+        <mml:facets>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred">
+                <mml:attr name="escaped">true</mml:attr>
+                <mml:attr name="value">URL</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacet" fqcn="org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.encodeable.encoder.EncodableFacetUsingEncoderDecoder"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.ImmutableFacetViaValueSemantics">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="when">ALWAYS</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFallback">
+                <mml:attr name="columns">[4,0,0,8]</mml:attr>
+                <mml:attr name="left">General</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet" fqcn="org.apache.isis.core.metamodel.facets.fallback.NotPersistableFacetNull">
+                <mml:attr name="disabling">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">java.net.URL</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+                <mml:attr name="validating">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.parseable.ParseableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">URLs</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.title.parser.TitleFacetUsingParser"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.value.EqualByContentFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.EqualByContentFacetViaValueSemantics"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.value.ValueFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProvider"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.MaxLengthFacetUsingParser2">
+                <mml:attr name="parser">org.apache.isis.core.metamodel.facets.value.url.URLValueSemanticsProvider</mml:attr>
+                <mml:attr name="validating">true</mml:attr>
+                <mml:attr name="value">2083</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.value.url.URLValueFacet" fqcn="org.apache.isis.core.metamodel.facets.value.url.URLValueSemanticsProvider">
+                <mml:attr name="adaptedClass">java.net.URL</mml:attr>
+                <mml:attr name="equalByContent">true</mml:attr>
+                <mml:attr name="immutable">true</mml:attr>
+                <mml:attr name="maxLength">2083</mml:attr>
+                <mml:attr name="typicalLength">100</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="hiding">true</mml:attr>
+            </mml:facet>
+        </mml:facets>
+        <mml:properties/>
+        <mml:collections/>
+        <mml:actions/>
+    </mml:domainClass>
+    <mml:domainClass id="java.sql.Timestamp">
+        <mml:facets>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred">
+                <mml:attr name="escaped">true</mml:attr>
+                <mml:attr name="value">Timestamp</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacet" fqcn="org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.encodeable.encoder.EncodableFacetUsingEncoderDecoder"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFallback">
+                <mml:attr name="columns">[4,0,0,8]</mml:attr>
+                <mml:attr name="left">General</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet" fqcn="org.apache.isis.core.metamodel.facets.fallback.NotPersistableFacetNull">
+                <mml:attr name="disabling">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">java.sql.Timestamp</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+                <mml:attr name="validating">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.parseable.ParseableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">Timestamps</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.title.parser.TitleFacetUsingParser"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.value.ValueFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProvider"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.value.date.DateValueFacet" fqcn="org.apache.isis.core.metamodel.facets.value.timestampsql.JavaSqlTimeStampValueSemanticsProvider">
+                <mml:attr name="adaptedClass">java.sql.Timestamp</mml:attr>
+                <mml:attr name="configuredFormat">short</mml:attr>
+                <mml:attr name="equalByContent">false</mml:attr>
+                <mml:attr name="immutable">false</mml:attr>
+                <mml:attr name="propertyType">timestamp</mml:attr>
+                <mml:attr name="typicalLength">25</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="hiding">true</mml:attr>
+            </mml:facet>
+        </mml:facets>
+    </mml:domainClass>
+    <mml:domainClass id="java.util.List">
+        <mml:facets>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacet" fqcn="org.apache.isis.core.metamodel.facets.actcoll.typeof.TypeOfFacetDefaultToObject">
+                <mml:attr name="value">java.lang.Object</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred">
+                <mml:attr name="escaped">true</mml:attr>
+                <mml:attr name="value">List</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.collections.modify.CollectionFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.javautilcollection.JavaCollectionFacet"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFallback">
+                <mml:attr name="columns">[4,0,0,8]</mml:attr>
+                <mml:attr name="left">General</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet" fqcn="org.apache.isis.core.metamodel.facets.fallback.NotPersistableFacetNull">
+                <mml:attr name="disabling">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">java.util.List</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+                <mml:attr name="validating">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.parented.ParentedCollectionFacet" fqcn="org.apache.isis.core.metamodel.facets.collections.parented.ParentedCollectionFacetDefault"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">Lists</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="hiding">true</mml:attr>
+            </mml:facet>
+        </mml:facets>
+        <mml:properties/>
+        <mml:collections/>
+        <mml:actions/>
+    </mml:domainClass>
+    <mml:domainClass id="org.apache.isis.applib.services.layout.LayoutService${symbol_dollar}Style">
+        <mml:facets>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred">
+                <mml:attr name="escaped">true</mml:attr>
+                <mml:attr name="value">Style</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.choices.enums.EnumFacet" fqcn="org.apache.isis.core.metamodel.facets.object.choices.enums.EnumValueSemanticsProvider">
+                <mml:attr name="adaptedClass">org.apache.isis.applib.services.layout.LayoutService.Style</mml:attr>
+                <mml:attr name="defaultValue">CURRENT</mml:attr>
+                <mml:attr name="equalByContent">true</mml:attr>
+                <mml:attr name="immutable">true</mml:attr>
+                <mml:attr name="maxLength">10</mml:attr>
+                <mml:attr name="typicalLength">10</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacet" fqcn="org.apache.isis.core.metamodel.facets.object.defaults.DefaultedFacetUsingDefaultsProvider"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.encodeable.encoder.EncodableFacetUsingEncoderDecoder"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.ImmutableFacetViaValueSemantics">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="when">ALWAYS</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFallback">
+                <mml:attr name="columns">[4,0,0,8]</mml:attr>
+                <mml:attr name="left">General</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet" fqcn="org.apache.isis.core.metamodel.facets.fallback.NotPersistableFacetNull">
+                <mml:attr name="disabling">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">org.apache.isis.applib.services.layout.LayoutService.Style</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+                <mml:attr name="validating">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.parseable.ParseableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.parseable.parser.ParseableFacetUsingParser"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">Styles</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.title.TitleFacet" fqcn="org.apache.isis.core.metamodel.facets.object.title.parser.TitleFacetUsingParser"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.value.EqualByContentFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.EqualByContentFacetViaValueSemantics"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.value.ValueFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProvider"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.choices.ChoicesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.choices.enums.ChoicesFacetEnum">
+                <mml:attr name="choices">CURRENT;COMPLETE;NORMALIZED;MINIMAL</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.MaxLengthFacetUsingParser2">
+                <mml:attr name="parser">org.apache.isis.core.metamodel.facets.object.choices.enums.EnumValueSemanticsProvider</mml:attr>
+                <mml:attr name="validating">true</mml:attr>
+                <mml:attr name="value">10</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.TypicalLengthFacetUsingParser"/>
+            <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="hiding">true</mml:attr>
+            </mml:facet>
+        </mml:facets>
+        <mml:properties/>
+        <mml:collections/>
+    </mml:domainClass>
+    <mml:domainClass id="org.apache.isis.applib.value.Clob">
+        <mml:facets>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred">
+                <mml:attr name="escaped">true</mml:attr>
+                <mml:attr name="value">Clob</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.encodeable.EncodableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.encodeable.encoder.EncodableFacetUsingEncoderDecoder"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.immutable.ImmutableFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.ImmutableFacetViaValueSemantics">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="when">ALWAYS</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFallback">
+                <mml:attr name="columns">[4,0,0,8]</mml:attr>
+                <mml:attr name="left">General</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet" fqcn="org.apache.isis.core.metamodel.facets.fallback.NotPersistableFacetNull">
+                <mml:attr name="disabling">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">org.apache.isis.applib.value.Clob</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+                <mml:attr name="validating">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">Clobs</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.value.ValueFacet" fqcn="org.apache.isis.core.metamodel.facets.object.value.vsp.ValueFacetUsingSemanticsProvider"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.value.clobs.ClobValueFacet" fqcn="org.apache.isis.core.metamodel.facets.value.clobs.ClobValueSemanticsProvider">
+                <mml:attr name="adaptedClass">org.apache.isis.applib.value.Clob</mml:attr>
+                <mml:attr name="equalByContent">false</mml:attr>
+                <mml:attr name="immutable">true</mml:attr>
+                <mml:attr name="typicalLength">0</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="hiding">true</mml:attr>
+            </mml:facet>
+        </mml:facets>
+    </mml:domainClass>
+    <mml:domainClass id="void">
+        <mml:facets>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.all.named.NamedFacet" fqcn="org.apache.isis.core.metamodel.facets.all.named.NamedFacetInferred">
+                <mml:attr name="escaped">true</mml:attr>
+                <mml:attr name="value">Void</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacet" fqcn="org.apache.isis.core.metamodel.facets.object.bookmarkpolicy.BookmarkPolicyFacetFallback">
+                <mml:attr name="bookmarkPolicy">NEVER</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.grid.GridFacet" fqcn="org.apache.isis.core.metamodel.facets.object.grid.GridFacetDefault"/>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.membergroups.MemberGroupLayoutFacet" fqcn="org.apache.isis.core.metamodel.facets.object.membergroups.annotprop.MemberGroupLayoutFacetFallback">
+                <mml:attr name="columns">[4,0,0,8]</mml:attr>
+                <mml:attr name="left">General</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.notpersistable.NotPersistableFacet" fqcn="org.apache.isis.core.metamodel.facets.fallback.NotPersistableFacetNull">
+                <mml:attr name="disabling">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectspecid.ObjectSpecIdFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectspecid.classname.ObjectSpecIdFacetDerivedFromClassName">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">void</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.objectvalidprops.ObjectValidPropertiesFacet" fqcn="org.apache.isis.core.metamodel.facets.object.objectvalidprops.impl.ObjectValidPropertiesFacetImpl">
+                <mml:attr name="validating">true</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.metamodel.facets.object.paged.PagedFacet" fqcn="org.apache.isis.core.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.core.metamodel.facets.object.plural.PluralFacet" fqcn="org.apache.isis.core.metamodel.facets.object.plural.inferred.PluralFacetInferred">
+                <mml:attr name="derived">true</mml:attr>
+                <mml:attr name="value">Voids</mml:attr>
+            </mml:facet>
+            <mml:facet id="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacet" fqcn="org.apache.isis.core.runtime.authorization.standard.AuthorizationFacetImpl">
+                <mml:attr name="disabling">true</mml:attr>
+                <mml:attr name="hiding">true</mml:attr>
+            </mml:facet>
+        </mml:facets>
+        <mml:properties/>
+        <mml:collections/>
+        <mml:actions/>
+    </mml:domainClass>
+</mml:metamodelDto>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/resources/cucumber.properties b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/resources/cucumber.properties
new file mode 100644
index 0000000..6aa2d27
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/src/test/resources/cucumber.properties
@@ -0,0 +1,4 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+cucumber.api.java.ObjectFactory=org.apache.isis.core.integtestsupport.scenarios.ObjectFactoryForIntegration
\ No newline at end of file
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot b/example/archetype/simpleapp/src/main/resources/archetype-resources/application/translations.pot
new file mode 100644
index 0000000..e69de29
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/enhance-all.sh b/example/archetype/simpleapp/src/main/resources/archetype-resources/enhance-all.sh
new file mode 100644
index 0000000..63572d1
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/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/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/build.gradle b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/build.gradle
new file mode 100644
index 0000000..6bfc911
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/build.gradle
@@ -0,0 +1,72 @@
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// this gradle script compiles and enhances the dom classes.
+//
+// The script is intended to be used in conjunction with IntelliJ IDEA, to remove the necessity to run the DataNucleus
+// enhancer immediately before running the app, and therefore reduce the turn-around time.  The script is run as
+// in the background as a daemon while editing/developing; whenever a change is made to any source code, gradle will
+// automatically compile *and* enhance the code.
+//
+// To use, just type:
+//
+//      gradle -t --offline &
+//
+// It is also necessary to disable the IntelliJ's automatic building of the 'dom' project.  This is done using:
+//
+//      File > Settings > Build, Execution, Deployment > Compiler > Excludes
+//
+// and then exclude the .../dom/src/main/java directory
+//
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+defaultTasks 'compileJava', 'copyClasses'
+
+apply plugin: 'java'
+apply plugin: 'tangram.tools'
+
+sourceCompatibility = 1.8
+targetCompatibility = 1.8
+version = (new XmlParser()).parse('pom.xml').parent.version.text()
+
+buildscript {
+  repositories {
+    maven { url "http://oss.jfrog.org/artifactory/oss-snapshot-local" }
+    jcenter()
+  }
+  dependencies {
+    classpath 'tangram:gradle-plugin:1.1.2'
+  }
+}
+repositories {
+    mavenLocal()
+    maven { url "http://oss.jfrog.org/artifactory/oss-snapshot-local" }
+    jcenter()
+}
+dependencies {
+    compile group: 'org.apache.isis.core', name: 'isis-core-applib', version: '1.14.0-SNAPSHOT'
+}
+task copyClasses << {
+    copy {
+        from 'build/classes/main'
+        into 'target/classes'
+    }
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/gradlew b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/gradlew
new file mode 100644
index 0000000..27309d9
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+  NONSTOP* )
+    nonstop=true
+    ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/gradlew.bat b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/gradlew.bat
new file mode 100644
index 0000000..832fdb6
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem  Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/layouts.gradle b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/layouts.gradle
new file mode 100644
index 0000000..f5fa30d
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/layouts.gradle
@@ -0,0 +1,49 @@
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// This gradle script copies over .layout.xml files from src to target directory.
+//
+// This script is intended to be used while the app is running (in prototype mode), reducing the turn-around time
+// when updating the layout.
+//
+// The framework will automatically notice any changes to .layout.xml files, but these are read from the classpath
+// (under target/classes), not the source path.  Using IntelliJ (say) these can be copied over manually by invoking
+// Run > Reload Changed Classes, and then refreshing the browser.
+//
+// This script instead is intended to be run in the background as a daemon; whenever a change
+// is made to any .layout.xml file, gradle will automatically copy over the file to the target directory.
+//
+// The script is run using:
+//
+//      gradle -t -b layouts.gradle --offline &
+//
+// To reduce turn-around time further, also use the liveReload.gradle script (to automatically refresh the browser).
+//
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+defaultTasks 'copyLayouts'
+
+task copyLayouts(type:Copy) {
+    from 'src/main/java'
+    into 'target/classes'
+    include '**/*.layout.xml'
+}
+
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/liveReload.gradle b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/liveReload.gradle
new file mode 100644
index 0000000..adb0ab1
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/liveReload.gradle
@@ -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.
+//
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+// This gradle script sets up livereload, configured so that any updates to the dom module's classpath will
+// trigger the browser to reload the page.  In particular, this relates to the .layout.xml files which define the
+// grid layout of domain objects.
+//
+// As a prerequisite, the app needs to configured to load the livereload.js script.  This can be done by adding the
+// following configuration property (to viewer_wicket.properties, isis.properties or the AppManifest, as you prefer):
+//
+//    isis.viewer.wicket.liveReloadUrl=http://localhost:35729/livereload.js?snipver=1
+//
+// This gradle script is run using:
+//
+//      gradle -t -b livereload.gradle --offline &
+//
+// To reduce turn-around time further, also use the layouts.gradle script (to automatically copy over the layout.xml
+// files to the classpath).
+//
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+defaultTasks 'liveReload'
+
+buildscript {
+    repositories {
+        jcenter()
+    }
+    dependencies {
+        classpath 'org.kordamp.gradle:livereload-gradle-plugin:0.2.1'
+    }
+}
+
+apply plugin: 'org.kordamp.gradle.livereload'
+
+liveReload {
+    docRoot new File('target/classes').canonicalPath
+}
+
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/logging-dn-enhance.properties b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/logging-dn-enhance.properties
new file mode 100644
index 0000000..2040d89
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/logging-dn-enhance.properties
@@ -0,0 +1,44 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+${symbol_pound}  Licensed to the Apache Software Foundation (ASF) under one
+${symbol_pound}  or more contributor license agreements.  See the NOTICE file
+${symbol_pound}  distributed with this work for additional information
+${symbol_pound}  regarding copyright ownership.  The ASF licenses this file
+${symbol_pound}  to you under the Apache License, Version 2.0 (the
+${symbol_pound}  "License"); you may not use this file except in compliance
+${symbol_pound}  with the License.  You may obtain a copy of the License at
+${symbol_pound}  
+${symbol_pound}         http://www.apache.org/licenses/LICENSE-2.0
+${symbol_pound}         
+${symbol_pound}  Unless required by applicable law or agreed to in writing,
+${symbol_pound}  software distributed under the License is distributed on an
+${symbol_pound}  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+${symbol_pound}  KIND, either express or implied.  See the License for the
+${symbol_pound}  specific language governing permissions and limitations
+${symbol_pound}  under the License.
+
+${symbol_pound} LOG4J Configuration
+${symbol_pound} ===================
+
+${symbol_pound} 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
+${symbol_pound}log4j.appender.A1.Threshold=INFO
+
+${symbol_pound} Categories
+${symbol_pound} Each category can be set to a "level", and to direct to an appender
+
+${symbol_pound} 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
+
+
+${symbol_pound} 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/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/logging-integtest.properties b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/logging-integtest.properties
new file mode 100644
index 0000000..22633ff
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/logging-integtest.properties
@@ -0,0 +1,123 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+${symbol_pound}  Licensed to the Apache Software Foundation (ASF) under one
+${symbol_pound}  or more contributor license agreements.  See the NOTICE file
+${symbol_pound}  distributed with this work for additional information
+${symbol_pound}  regarding copyright ownership.  The ASF licenses this file
+${symbol_pound}  to you under the Apache License, Version 2.0 (the
+${symbol_pound}  "License"); you may not use this file except in compliance
+${symbol_pound}  with the License.  You may obtain a copy of the License at
+${symbol_pound}  
+${symbol_pound}         http://www.apache.org/licenses/LICENSE-2.0
+${symbol_pound}         
+${symbol_pound}  Unless required by applicable law or agreed to in writing,
+${symbol_pound}  software distributed under the License is distributed on an
+${symbol_pound}  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+${symbol_pound}  KIND, either express or implied.  See the License for the
+${symbol_pound}  specific language governing permissions and limitations
+${symbol_pound}  under the License.
+
+
+${symbol_pound}
+${symbol_pound} Isis uses log4j is used to provide system logging
+${symbol_pound}
+log4j.rootCategory=INFO, Console
+
+${symbol_pound} The console appender
+log4j.appender.Console=org.apache.log4j.ConsoleAppender
+log4j.appender.Console.target=System.out
+log4j.appender.Console.layout=org.apache.log4j.PatternLayout
+log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE}  [%-20c{1} %-10t %-5p]  %m%n
+
+log4j.appender.File=org.apache.log4j.RollingFileAppender
+log4j.appender.File.file=isis.log
+log4j.appender.File.append=false
+log4j.appender.File.layout=org.apache.log4j.PatternLayout
+log4j.appender.File.layout.ConversionPattern=%d [%-20c{1} %-10t %-5p]  %m%n
+
+log4j.appender.translations-po=org.apache.log4j.FileAppender
+log4j.appender.translations-po.File=./translations.pot
+log4j.appender.translations-po.Append=false
+log4j.appender.translations-po.layout=org.apache.log4j.PatternLayout
+log4j.appender.translations-po.layout.ConversionPattern=%m%n
+
+! turn on the internal log4j debugging flag so we can see what it is doing
+${symbol_pound}log4j.debug=true
+
+
+${symbol_pound} DataNucleus
+${symbol_pound} the first two log the DML and DDL (if set to DEBUG)
+log4j.logger.DataNucleus.Datastore.Native=WARN, Console
+log4j.logger.DataNucleus.Datastore.Schema=DEBUG, Console
+${symbol_pound} the remainder can probably be left to WARN
+log4j.logger.DataNucleus.Persistence=WARN, Console
+log4j.logger.DataNucleus.Transaction=WARN, Console
+log4j.logger.DataNucleus.Connection=WARN, Console
+log4j.logger.DataNucleus.Query=WARN, Console
+log4j.logger.DataNucleus.Cache=WARN, Console
+log4j.logger.DataNucleus.MetaData=WARN, Console
+log4j.logger.DataNucleus.Datastore=WARN, Console
+log4j.logger.DataNucleus.Datastore.Persist=WARN, Console
+log4j.logger.DataNucleus.Datastore.Retrieve=WARN, Console
+log4j.logger.DataNucleus.General=WARN, Console
+log4j.logger.DataNucleus.Lifecycle=WARN, Console
+log4j.logger.DataNucleus.ValueGeneration=WARN, Console
+log4j.logger.DataNucleus.Enhancer=WARN, Console
+log4j.logger.DataNucleus.SchemaTool=ERROR, Console
+log4j.logger.DataNucleus.JDO=WARN, Console
+log4j.logger.DataNucleus.JPA=ERROR, Console
+log4j.logger.DataNucleus.JCA=WARN, Console
+log4j.logger.DataNucleus.IDE=ERROR, Console
+
+log4j.additivity.DataNucleus.Datastore.Native=false
+log4j.additivity.DataNucleus.Datastore.Schema=false
+log4j.additivity.DataNucleus.Datastore.Persistence=false
+log4j.additivity.DataNucleus.Datastore.Transaction=false
+log4j.additivity.DataNucleus.Datastore.Connection=false
+log4j.additivity.DataNucleus.Datastore.Query=false
+log4j.additivity.DataNucleus.Datastore.Cache=false
+log4j.additivity.DataNucleus.Datastore.MetaData=false
+log4j.additivity.DataNucleus.Datastore.Datastore=false
+log4j.additivity.DataNucleus.Datastore.Datastore.Persist=false
+log4j.additivity.DataNucleus.Datastore.Datastore.Retrieve=false
+log4j.additivity.DataNucleus.Datastore.General=false
+log4j.additivity.DataNucleus.Datastore.Lifecycle=false
+log4j.additivity.DataNucleus.Datastore.ValueGeneration=false
+log4j.additivity.DataNucleus.Datastore.Enhancer=false
+log4j.additivity.DataNucleus.Datastore.SchemaTool=false
+log4j.additivity.DataNucleus.Datastore.JDO=false
+log4j.additivity.DataNucleus.Datastore.JPA=false
+log4j.additivity.DataNucleus.Datastore.JCA=false
+log4j.additivity.DataNucleus.Datastore.IDE=false
+
+
+
+
+${symbol_pound} if using log4jdbc-remix as JDBC driver
+${symbol_pound}log4j.logger.jdbc.sqlonly=DEBUG, sql, Console
+${symbol_pound}log4j.additivity.jdbc.sqlonly=false
+${symbol_pound}log4j.logger.jdbc.resultsettable=DEBUG, jdbc, Console
+${symbol_pound}log4j.additivity.jdbc.resultsettable=false
+
+${symbol_pound}log4j.logger.jdbc.audit=WARN,jdbc, Console
+${symbol_pound}log4j.additivity.jdbc.audit=false
+${symbol_pound}log4j.logger.jdbc.resultset=WARN,jdbc
+${symbol_pound}log4j.additivity.jdbc.resultset=false
+${symbol_pound}log4j.logger.jdbc.sqltiming=WARN,sqltiming
+${symbol_pound}log4j.additivity.jdbc.sqltiming=false
+${symbol_pound}log4j.logger.jdbc.connection=FATAL,connection
+${symbol_pound}log4j.additivity.jdbc.connection=false
+
+
+log4j.logger.org.apache.isis.core.runtime.services.i18n.po.PoWriter=INFO,translations-po
+log4j.additivity.org.apache.isis.core.runtime.services.i18n.po.PoWriter=false
+
+log4j.logger.org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder=WARN,Console
+log4j.additivity.org.apache.isis.core.metamodel.specloader.specimpl.FacetedMethodsBuilder=false
+
+log4j.logger.org.apache.isis.core.integtestsupport.IntegrationBootstrapAbstract=DEBUG,Console
+log4j.additivity.org.apache.isis.core.integtestsupport.IntegrationBootstrapAbstract=false
+
+log4j.logger.com.mchange.v2.c3p0.SQLWarnings=WARN,Console
+log4j.additivity.com.mchange.v2.c3p0.SQLWarnings=false
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/pom.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/pom.xml
new file mode 100644
index 0000000..1322159
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/pom.xml
@@ -0,0 +1,202 @@
+<?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>${groupId}</groupId>
+        <artifactId>${rootArtifactId}</artifactId>
+        <version>${version}</version>
+    </parent>
+
+    <artifactId>${artifactId}</artifactId>
+    <name>Apache Isis App - SimpleApp Simple Module</name>
+
+    <properties>
+        <isis-maven-plugin.validate.appManifest>domainapp.modules.simple.SimpleModuleManifest</isis-maven-plugin.validate.appManifest>
+
+        <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>
+                <directory>src/main/resources</directory>
+            </resource>
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**</include>
+                </includes>
+                <excludes>
+                    <exclude>**/*.java</exclude>
+                </excludes>
+            </resource>
+        </resources>
+        <testResources>
+            <testResource>
+                <directory>src/test/resources</directory>
+            </testResource>
+            <testResource>
+                <directory>src/test/java</directory>
+                <includes>
+                    <include>**</include>
+                </includes>
+                <excludes>
+                    <exclude>**/*.java</exclude>
+                </excludes>
+            </testResource>
+        </testResources>
+        <plugins>
+            <plugin>
+                <groupId>com.github.odavid.maven.plugins</groupId>
+                <artifactId>mixin-maven-plugin</artifactId>
+                <version>0.1-alpha-39</version>
+                <extensions>true</extensions>
+                <configuration>
+                    <mixins>
+                        <mixin>
+                            <groupId>com.danhaywood.mavenmixin</groupId>
+                            <artifactId>standard</artifactId>
+                        </mixin>
+                        <mixin>
+                            <groupId>com.danhaywood.mavenmixin</groupId>
+                            <artifactId>datanucleusenhance</artifactId>
+                        </mixin>
+                        <mixin>
+                            <groupId>com.danhaywood.mavenmixin</groupId>
+                            <artifactId>enforcerrelaxed</artifactId>
+                        </mixin>
+                        <mixin>
+                            <groupId>com.danhaywood.mavenmixin</groupId>
+                            <artifactId>sourceandjavadoc</artifactId>
+                        </mixin>
+                        <mixin>
+                            <groupId>com.danhaywood.mavenmixin</groupId>
+                            <artifactId>staticanalysis</artifactId>
+                        </mixin>
+                        <mixin>
+                            <groupId>com.danhaywood.mavenmixin</groupId>
+                            <artifactId>surefire</artifactId>
+                        </mixin>
+                    </mixins>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+    
+    	<!-- ISIS API -->
+    	
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-applib</artifactId>
+        </dependency>
+        
+        <!-- ISIS CORE PLUGINS -->
+
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-plugins-eventbus-axon</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-plugins-codegen-bytebuddy</artifactId>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-plugins-discovery-reflections</artifactId>
+        </dependency>
+    
+      	<dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-plugins-jdo-datanucleus-5</artifactId>
+        </dependency>
+        
+
+    	<dependency>
+            <groupId>org.apache.isis.core</groupId>
+            <artifactId>isis-core-plugins-jaxrs-resteasy-3</artifactId>
+        </dependency>
+
+        <!-- TESTS -->
+
+        <dependency>
+            <groupId>org.apache.isis.mavendeps</groupId>
+            <artifactId>isis-mavendeps-testing</artifactId>
+            <type>pom</type>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.hsqldb</groupId>
+            <artifactId>hsqldb</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+
+    <profiles>
+        <profile>
+            <id>isis-validate</id>
+            <activation>
+                <property>
+                    <name>!skip.isis-validate</name>
+                </property>
+            </activation>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.isis.tool</groupId>
+                        <artifactId>isis-maven-plugin</artifactId>
+                        <version>${isis.version}</version>
+                        <executions>
+                            <execution>
+                                <phase>test</phase>
+                                <goals>
+                                    <goal>validate</goal>
+                                </goals>
+                                <configuration>
+                                    <appManifest>${isis-maven-plugin.validate.appManifest}</appManifest>
+                                </configuration>
+                            </execution>
+                        </executions>
+                        <dependencies>
+                            <dependency>
+                                <groupId>${project.groupId}</groupId>
+                                <artifactId>${project.artifactId}</artifactId>
+                                <version>${project.version}</version>
+                            </dependency>
+                            <dependency>
+                                <groupId>org.hsqldb</groupId>
+                                <artifactId>hsqldb</artifactId>
+                                <version>2.3.1</version>
+                            </dependency>
+                        </dependencies>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/META-INF/persistence.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/META-INF/persistence.xml
new file mode 100644
index 0000000..c5d8e78
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/META-INF/persistence.xml
@@ -0,0 +1,29 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
new file mode 100644
index 0000000..10ca1bf
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/SimpleModule.java
@@ -0,0 +1,51 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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 javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.isis.applib.ModuleAbstract;
+import org.apache.isis.applib.fixturescripts.FixtureScript;
+import org.apache.isis.applib.fixturescripts.teardown.TeardownFixtureAbstract2;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+
+@XmlRootElement(name = "module")
+public class SimpleModule extends ModuleAbstract {
+
+    @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/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java
new file mode 100644
index 0000000..49294a8
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/SimpleModuleManifest.java
@@ -0,0 +1,41 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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.apache.isis.applib.AppManifestAbstract2;
+
+/**
+ * Used by <code>isis-maven-plugin</code> (build-time validation of the module) and also by module-level integration tests.
+ */
+public class SimpleModuleManifest extends AppManifestAbstract2 {
+
+    public static final Builder BUILDER = Builder.forModule(new SimpleModule())
+            .withConfigurationProperty("isis.persistor.datanucleus.impl.datanucleus.schema.autoCreateAll","true")
+            .withConfigurationProperty("isis.persistor.datanucleus.impl.datanucleus.identifier.case","MixedCase")
+            ;
+
+    public SimpleModuleManifest() {
+        super(BUILDER);
+    }
+
+
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
new file mode 100644
index 0000000..c329fc8
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.java
@@ -0,0 +1,111 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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 javax.jdo.annotations.IdGeneratorStrategy;
+import javax.jdo.annotations.IdentityType;
+import javax.jdo.annotations.VersionStrategy;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import com.google.common.collect.ComparisonChain;
+
+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.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 domainapp.modules.simple.dom.types.Name;
+import domainapp.modules.simple.dom.types.Notes;
+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;
+
+@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
+@lombok.RequiredArgsConstructor
+@XmlJavaTypeAdapter(PersistentEntityAdapter.class)
+public class SimpleObject implements Comparable<SimpleObject> {
+
+    public String title() {
+        return "Object: " + getName();
+    }
+
+    @lombok.Getter @lombok.Setter @lombok.NonNull
+    @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();
+    }
+
+    @Override
+    public int compareTo(final SimpleObject other) {
+        return ComparisonChain.start()
+                .compare(this.getName(), other.getName())
+                .result();
+    }
+
+
+    @javax.inject.Inject
+    @javax.jdo.annotations.NotPersistent
+    RepositoryService repositoryService;
+
+    @javax.inject.Inject
+    @javax.jdo.annotations.NotPersistent
+    TitleService titleService;
+
+    @javax.inject.Inject
+    @javax.jdo.annotations.NotPersistent
+    MessageService messageService;
+
+}
\ No newline at end of file
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.layout.xml b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.layout.xml
new file mode 100644
index 0000000..b785e72
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.layout.xml
@@ -0,0 +1,71 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+<?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/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.png b/example/archetype/simpleapp/src/main/resources/archetype-resources/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/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObject.png differ
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java
new file mode 100644
index 0000000..6e6ed6f
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/impl/SimpleObjects.java
@@ -0,0 +1,100 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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.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.jdosupport.IsisJdoSupport_v3_2;
+import org.apache.isis.applib.services.repository.RepositoryService;
+
+import domainapp.modules.simple.dom.types.Name;
+
+@DomainService(
+        nature = NatureOfService.VIEW_MENU_ONLY,
+        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(new SimpleObject(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();
+    }
+
+    @javax.inject.Inject
+    RepositoryService repositoryService;
+
+    @javax.inject.Inject
+    IsisJdoSupport_v3_2 isisJdoSupport;
+
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java
new file mode 100644
index 0000000..d7a1115
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/types/Name.java
@@ -0,0 +1,39 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+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/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/types/Notes.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/types/Notes.java
new file mode 100644
index 0000000..40e7874
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/dom/types/Notes.java
@@ -0,0 +1,28 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+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/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java
new file mode 100644
index 0000000..39bbfa6
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObjectBuilder.java
@@ -0,0 +1,53 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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.fixturescripts.BuilderScriptAbstract;
+
+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 BuilderScriptAbstract<SimpleObject, SimpleObjectBuilder> {
+
+    @Getter @Setter
+    private String name;
+
+    @Getter
+    private SimpleObject object;
+
+    @Override
+    protected void execute(final ExecutionContext ec) {
+
+        checkParam("name", ec, String.class);
+
+        object = wrap(simpleObjects).create(name);
+    }
+
+    @javax.inject.Inject
+    SimpleObjects simpleObjects;
+
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
new file mode 100644
index 0000000..613c586
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/main/java/domainapp/modules/simple/fixture/SimpleObject_persona.java
@@ -0,0 +1,66 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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.fixturescripts.PersonaWithBuilderScript;
+import org.apache.isis.applib.fixturescripts.PersonaWithFinder;
+import org.apache.isis.applib.fixturescripts.setup.PersonaEnumPersistAll;
+import org.apache.isis.applib.services.registry.ServiceRegistry;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.dom.impl.SimpleObjects;
+import lombok.AllArgsConstructor;
+
+@AllArgsConstructor
+public enum SimpleObject_persona implements PersonaWithBuilderScript<SimpleObject, 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;
+
+    public SimpleObjectBuilder builder() {
+        return new SimpleObjectBuilder().setName(name);
+    }
+
+    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, SimpleObjectBuilder> {
+        public PersistAll() {
+            super(SimpleObject_persona.class);
+        }
+    }
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObject_Test.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObject_Test.java
new file mode 100644
index 0000000..c56ae78
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObject_Test.java
@@ -0,0 +1,53 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/**
+ *  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 static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+public class SimpleObject_Test {
+
+    SimpleObject simpleObject;
+
+    @BeforeEach
+    public void setUp() throws Exception {
+        simpleObject = new SimpleObject("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/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjects_Test.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjects_Test.java
new file mode 100644
index 0000000..3b75ad1
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/dom/impl/SimpleObjects_Test.java
@@ -0,0 +1,119 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/**
+ *  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.apache.isis.commons.internal.collections._Lists;
+
+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.core.unittestsupport.jmocking.JMockActions;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2.Mode;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+//TODO [ahuber] this test is still on JUnit 4 because it uses org.junit.Rule, 
+//which no longer exists with JUnit 5
+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());
+                }
+
+                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/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java
new file mode 100644
index 0000000..c1c6bd3
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/SimpleModuleIntegTestAbstract.java
@@ -0,0 +1,35 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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 org.apache.isis.core.integtestsupport.IntegrationTestJupiter;
+
+import domainapp.modules.simple.SimpleModule;
+
+public abstract class SimpleModuleIntegTestAbstract extends IntegrationTestJupiter {
+
+    public SimpleModuleIntegTestAbstract() {
+        super(new SimpleModule().withConfigurationProperty("isis.objects.editing", "false"));
+    }
+
+
+}
diff --git a/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java
new file mode 100644
index 0000000..95e454f
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObject_IntegTest.java
@@ -0,0 +1,153 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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.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.core.metamodel.services.jdosupport.Persistable_datanucleusIdLong;
+import org.apache.isis.core.metamodel.services.jdosupport.Persistable_datanucleusVersionTimestamp;
+
+import domainapp.modules.simple.dom.impl.SimpleObject;
+import domainapp.modules.simple.fixture.SimpleObject_persona;
+import domainapp.modules.simple.integtests.SimpleModuleIntegTestAbstract;
+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;
+
+public class SimpleObject_IntegTest extends SimpleModuleIntegTestAbstract {
+
+    SimpleObject simpleObject;
+
+    @BeforeEach
+    public void setUp() {
+        // given
+        simpleObject = fixtureScripts.runBuilderScript(SimpleObject_persona.FOO.builder());
+    }
+
+    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.nextTransaction();
+
+            // 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/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java
new file mode 100644
index 0000000..66d6d48
--- /dev/null
+++ b/example/archetype/simpleapp/src/main/resources/archetype-resources/module-simple/src/test/java/domainapp/modules/simple/integtests/tests/SimpleObjects_IntegTest.java
@@ -0,0 +1,133 @@
+#set( $symbol_pound = '#' )
+#set( $symbol_dollar = '$' )
+#set( $symbol_escape = '\' )
+/*
+ *  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 static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import java.sql.SQLIntegrityConstraintViolationException;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.hamcrest.MatcherAssert;
+import org.hamcrest.TypeSafeMatcher;
+import org.junit.jupiter.api.Test;
+
+import com.google.common.base.Throwables;
+
+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;
+
+public class SimpleObjects_IntegTest extends SimpleModuleIntegTestAbstract {
+
+    @Inject
+    SimpleObjects menu;
+
+    public static class ListAll extends SimpleObjects_IntegTest {
+
+        @Test
+        public void happyCase() {
+
+            // given
+            fixtureScripts.runFixtureScript(new SimpleObject_persona.PersistAll());
+            transactionService.nextTransaction();
+
+            // 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
... 4070 lines suppressed ...


[isis] 04/04: ISIS-1811: bumps revision property across all ...

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

danhaywood pushed a commit to branch release-2.0.0-M2-RC1
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 32a4d24851282d4b9591bf6c7bae1f27d447e1dc
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sat Jan 12 14:23:47 2019 +0000

    ISIS-1811: bumps revision property across all ...
    
    ... pom.xml's up to 2.0.0-M3-SNAPSHOT
---
 core/pom.xml                           | 2 +-
 example/application/helloworld/pom.xml | 2 +-
 example/application/simpleapp/pom.xml  | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/core/pom.xml b/core/pom.xml
index b954437..8c3060bb 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -46,7 +46,7 @@
     <inceptionYear>2010</inceptionYear>
 
     <properties>
-        <revision>2.0.0-M2</revision>
+        <revision>2.0.0-M3-SNAPSHOT</revision>
         <isis.version>${revision}</isis.version>
 
         <isis.skipTests>false</isis.skipTests>
diff --git a/example/application/helloworld/pom.xml b/example/application/helloworld/pom.xml
index a837ebe..b9df0b8 100644
--- a/example/application/helloworld/pom.xml
+++ b/example/application/helloworld/pom.xml
@@ -36,7 +36,7 @@
     <packaging>war</packaging>
 
     <properties>
-        <revision>2.0.0-M2</revision>
+        <revision>2.0.0-M3-SNAPSHOT</revision>
         <isis.version>${revision}</isis.version>
 
         <compiler-plugin.source>1.8</compiler-plugin.source>
diff --git a/example/application/simpleapp/pom.xml b/example/application/simpleapp/pom.xml
index 5a0c3ad..632dc40 100644
--- a/example/application/simpleapp/pom.xml
+++ b/example/application/simpleapp/pom.xml
@@ -36,7 +36,7 @@
     <packaging>pom</packaging>
 
     <properties>
-        <revision>2.0.0-M2</revision>
+        <revision>2.0.0-M3-SNAPSHOT</revision>
         <isis.version>${revision}</isis.version>
 
         <!-- bumping to 1.18.4 causes a conflict with DataNucleus' annotation processor. -->