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

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

commit a3b5b9530741cdd294b7caefe742403dbb0fdb78
Author: danhaywood <d...@haywood-associates.co.uk>
AuthorDate: Sun Aug 5 19:32:25 2018 +0100

    ISIS-1810: working on migration notes for 2.0.0-M1
---
 adocs/documentation/pom.xml                        |  11 +-
 .../guides/cgcom/_cgcom_cutting-a-release.adoc     |   7 +-
 ...cgcom_release-process-for-interim-releases.adoc |   4 +-
 .../guides/rgant/_rgant-Collection_editing.adoc    |   5 +-
 .../main/asciidoc/guides/rgant/_rgant-Column.adoc  |  12 +-
 .../guides/rgant/_rgant-Property_editing.adoc      |   6 +-
 .../main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc |   6 +-
 .../main/asciidoc/guides/rgsvc/_rgsvc_intro.adoc   | 135 ++---
 adocs/documentation/src/main/asciidoc/index.html   |  69 ++-
 .../_migration-notes_1.16.0-to-2.0.0-M1.adoc       | 541 +++++++++++++++++++++
 .../_migration-notes_1.16.0-to-2.0.0.adoc          | 223 ---------
 .../release-notes/_release-notes_2.0.0-M1.adoc     | 139 ++++++
 .../release-notes/_release-notes_2.0.0.adoc        |   9 -
 .../main/asciidoc/release-notes/release-notes.adoc |   9 +
 core/applib/pom.xml                                |  36 --
 scripts/verify-isis-release.sh                     | 108 ----
 todo-deprecation-list.txt                          | 144 +-----
 17 files changed, 855 insertions(+), 609 deletions(-)

diff --git a/adocs/documentation/pom.xml b/adocs/documentation/pom.xml
index 8da6604..ef23534 100644
--- a/adocs/documentation/pom.xml
+++ b/adocs/documentation/pom.xml
@@ -53,9 +53,10 @@
         <build.dir>${project.basedir}/target/site</build.dir>
 
        <!-- expected isis-site to be checked out to /c/ASF/isis/isis-site, vs 
/c/github/apache/isis -->
-        
<isis-site-latest.dir>../../../../../ASF/isis/isis-site/latest</isis-site-latest.dir>
-        
<isis-site-content.dir>../../../../../ASF/isis/isis-site/content</isis-site-content.dir>
-        
<isis-site-search.dir>../../../../../ASF/isis/isis-site/search</isis-site-search.dir>
+        <isis-site.dir>../../../../../ASF/isis/isis-site</isis-site.dir>
+        <isis-site-latest.dir>${isis-site.dir}/latest</isis-site-latest.dir>
+        <isis-site-content.dir>${isis-site.dir}/content</isis-site-content.dir>
+        <isis-site-search.dir>${isis-site.dir}/search</isis-site-search.dir>
         <message>updating content (built from adocs/documentation in isis.git 
repo)</message>
     </properties>
 
@@ -224,7 +225,7 @@
                                         <delete includeemptydirs="true">
                                             <fileset 
dir="${isis-site-latest.dir}" includes="**/*"/>
                                         </delete>
-
+p
                                         <echo message=""/>
                                         <echo message=""/>
                                         <mkdir 
@@ -415,7 +416,7 @@
                                         <echo message=""/>
                                         <echo message="TO COMPLETE:"/>
                                         <echo message=""/>
-                                        <echo message="   cd 
../../../isis-site"/>
+                                        <echo message="   cd 
${isis-site.dir}"/>
                                         <echo message="   sh preview.sh"/>
                                         <echo message="   git commit -am 'some 
message'"/>
                                         <echo message="   git push"/>
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_cutting-a-release.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_cutting-a-release.adoc
index 638b343..291ee95 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_cutting-a-release.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_cutting-a-release.adoc
@@ -823,9 +823,12 @@ Once the artifacts have been uploaded, you can call a vote.
 In all cases, votes last for 72 hours and require a +3 (binding) vote from 
members.
 
 [[__cgcom_cutting-a-release_voting-start-voting-thread]]
-=== Start voting thread on 
link:mailto:&#100;e&#118;&#x40;&#x69;&#x73;&#x69;&#115;&#x2e;&#x61;p&#97;&#x63;&#104;e&#46;&#111;&#114;g[&#100;e&#118;&#x40;&#x69;&#x73;&#x69;&#115;&#x2e;&#x61;p&#97;&#x63;&#104;e&#46;&#111;&#114;g]
+=== Start voting thread on dev mailing list
 
-The following boilerplate is for a release of the Apache Isis Core. Adapt as 
required:
+That is, link:mailto:d...@apache.isis.org[]
+
+The following boilerplate is for a release of the Apache Isis Core.
+Adapt as required:
 
 Use the following subject, eg:
 
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-for-interim-releases.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-for-interim-releases.adoc
index 8f6e891..d59a787 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-for-interim-releases.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/cgcom/_cgcom_release-process-for-interim-releases.adoc
@@ -9,8 +9,8 @@
 The intent of an "interim" release is to allow a developer team to release 
their application based on a `-SNAPSHOT` version of the framework.
 Since `-SNAPSHOT` changes on a day-to-day basis, the idea is to tag a 
particular revision and to release this, thereby providing 
stability/traceability for the application being developed.
 
-Whereas xref:../cgcom/cgcom.adoc#_cgcom_cutting-a-release.adoc[formal 
release]s and 
xref:../cgcom/cgcom.adoc#_cgcom_release-process-for-snapshots.adoc[snapshot 
release]s are public (released through the Maven repository maintained by 
Apache Software Foundation), interim releases are non-public and rely on 
infrastructure provided by a developer team.
-The tagged release resides _not_ in the 
xref:../../downloads.adoc#__downloads_source_code[official Apache Isis git 
repository], but instead in a fork/clone maintained by the developer team.
+Whereas xref:../cgcom/cgcom.adoc#\_cgcom_cutting-a-release.adoc[formal 
release]s and 
xref:../cgcom/cgcom.adoc#\_cgcom_release-process-for-snapshots.adoc[snapshot 
release]s are public (released through the Maven repository maintained by 
Apache Software Foundation), interim releases are non-public and rely on 
infrastructure provided by a developer team.
+The tagged release resides __not__ in the 
xref:../../downloads.adoc#\__downloads_source_code[official Apache Isis git 
repository], but instead in a fork/clone maintained by the developer team.
 
 [NOTE]
 ====
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Collection_editing.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Collection_editing.adoc
index c578545..ab7d6f6 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Collection_editing.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Collection_editing.adoc
@@ -21,11 +21,12 @@ Whether a collection is enabled or disabled depends upon 
these factors:
 
 * whether the domain object has been configured as immutable through the 
xref:../rgant/rgant.adoc#_rgant-DomainObject_editing[`@DomainObject#editing()`] 
attribute
 
-* else (that is, if the domain object's editability is specified as being 
`AS_CONFIGURED`), then the value of the 
xref:../rgcfg/rgcfg.adoc#_rgcfg_configuring-core[configuration property] 
`isis.objects.editing`.  If set to `false`, then the object's collections (and 
properties) are *not* editable
+* else (that is, if the domain object's editability is specified as being 
`AS_CONFIGURED`), then the value of the 
xref:../rgcfg/rgcfg.adoc#\_rgcfg_configuring-core[configuration property] 
`isis.objects.editing`.
+If set to `false`, then the object's collections (and properties) are *not* 
editable
 
 * else, then the value of the `@Collection(editing=...)` attribute itself.
 
-* else, the result of invoking any supporting 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_disable[`disable...()`] 
supporting methods
+* else, the result of invoking any supporting 
xref:../rgcms/rgcms.adoc#\_rgcms_methods_prefixes_disable[`disable...()`] 
supporting methods
 
 
 Thus, to make a collection read-only even if the object would otherwise be 
editable, use:
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column.adoc 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column.adoc
index 08451f0..3691d6a 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Column.adoc
@@ -19,7 +19,7 @@ Moreover, while JDO/DataNucleus will recognize annotations on 
either the field o
 This section identifies which attributes of `@Column` are recognized and used 
by Apache Isis.
 
 
-
+[[_rgant-Column_allowsNull]]
 == Nullability
 
 The `allowsNull()` attribute is used to specify if a property is mandatory or 
is optional.
@@ -42,6 +42,7 @@ In the vast majority of cases you should be fine just to add 
the `@Column#allows
 
 
 
+[[_rgant-Column_length]]
 == Length for ``String``s
 
 The `length()` attribute is used to specify the length of `java.lang.String` 
property types as they map to `varchar(n)` columns.
@@ -66,6 +67,7 @@ Isis also provides 
xref:../rgant/rgant.adoc#_rgant-Property_maxLength[`@Property
 
 
 
+[[_rgant-Column_length-scale]]
 == Length/scale for ``BigDecimal``s
 
 
@@ -81,18 +83,21 @@ public class Customer {
     public void setTotalOrdersToDate(BigDecimal totalOrdersToDate) { ... }
 ----
 
-For ``BigDecimal``s it is also possible to specify the 
xref:../rgant/rgant.adoc#_rgant-Digits[`@Digits`] annotation, whose form is 
`@Digits(integer, fraction)`.  There is a subtle difference here: while 
`@Column#scale()` corresponds to `@Digits#fraction()`, the value of 
`@Column#length()` (ie the precision) is actually the _sum_ of the `@Digits`' 
`integer()` and `fraction()` parts.
+For ``BigDecimal``s it is also possible to specify the 
xref:../rgant/rgant.adoc#\_rgant-Digits[`@Digits`] annotation, whose form is 
`@Digits(integer, fraction)`.
+There is a subtle difference here: while `@Column#scale()` corresponds to 
`@Digits#fraction()`, the value of `@Column#length()` (ie the precision) is 
actually the __sum__ of the `@Digits`' `integer()` and `fraction()` parts.
 
 If both are specified, Apache Isis will check when it initializes for any 
contradictions, and will fail-fast with an appropriate error message in the log 
if there are.
 
 
 
 
+[[_rgant-Column_hints-and-tips]]
 == Hints and Tips
 
 This seems to be a good place to describe some additional common mappings that 
use `@Column`.  Unlike the sections above, the attributes specified in these 
hints and tips aren't actually part of Apache Isis metamodel.
 
 
+[[_rgant-Column_hints-and-tips_mapping-foreign-keys]]
 === Mapping foreign keys
 
 The `name()` attribute can be used to override the name of the column.  
References to other objects are generally mapped as foreign key columns.  If 
there are multiple references to a given type, then you will want to override 
the name that JDO/DataNucleus would otherwise default.
@@ -114,7 +119,8 @@ public class PartyRelationship {
 
 
 
-== Mapping ``Blob``s and ``Clob``s
+[[_rgant-Column_hints-and-tips_mapping-blobs-and-clobs]]
+=== Mapping ``Blob``s and ``Clob``s
 
 Isis provides custom value types for 
xref:../rgcms/rgcms.adoc#_rgcms_classes_value-types_Blob[`Blob`]s and 
xref:../rgcms/rgcms.adoc#_rgcms_classes_value-types_Clob[`Clob`]s.  These value 
types have multiple internal fields, meaning that they corresponding to 
multiple columns in the database.  Mapping this correctly requires using  
`@Column` within JDO's `@Persistent` annotation.
 
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Property_editing.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Property_editing.adoc
index 2740d17..e565f7e 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Property_editing.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant-Property_editing.adoc
@@ -11,13 +11,13 @@ The related `editingDisabledReason()` attribute specifies 
the a hard-coded reaso
 
 Whether a property is enabled or disabled depends upon these factors:
 
-* whether the domain object has been configured as immutable through the 
xref:../rgant/rgant.adoc#_rgant-DomainObject_editing[`@DomainObject#editing()`] 
attribute
+* whether the domain object has been configured as immutable through the 
xref:../rgant/rgant.adoc#\_rgant-DomainObject_editing[`@DomainObject#editing()`]
 attribute
 
-* else (that is, if the domain object's editability is specified as being 
`AS_CONFIGURED`), then the value of the 
xref:../rgcfg/rgcfg.adoc#_rgcfg_configuring-core[configuration property] 
`isis.objects.editing`.  If set to `false`, then the object's properties (and 
collections) are _not_ editable
+* else (that is, if the domain object's editability is specified as being 
`AS_CONFIGURED`), then the value of the 
xref:../rgcfg/rgcfg.adoc#\_rgcfg_configuring-core[configuration property] 
`isis.objects.editing`.  If set to `false`, then the object's properties (and 
collections) are __not__ editable
 
 * else, then the value of the `@Property(editing=...)` attribute itself
 
-* else, the result of invoking any supporting 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_disable[`disable...()`] 
supporting methods
+* else, the result of invoking any supporting 
xref:../rgcms/rgcms.adoc#\_rgcms_methods_prefixes_disable[`disable...()`] 
supporting methods
 
 
 Thus, to make a property read-only even if the object would otherwise be 
editable, use:
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc 
b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc
index 2b8ea74..ad03819 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgant/_rgant_aaa_jdo.adoc
@@ -54,15 +54,15 @@ Note that the discriminator overrides the object type that 
may otherwise be infe
 
 |xref:../rgant/rgant.adoc#_rgant-PersistenceCapable[`@javax.jdo.annotations.` +
 `PersistenceCapable`]
-|Used to build Apache Isis' own internal identifier for objects. +
+|Used to build Apache Isis' own internal identifier for objects.
 
-If the `schema()` attribute is specified (and if 
xref:../rgant/rgant.adoc#_rgant-Discriminator[`@Discriminator`] _hasn't_ been 
specified), is also used to derive the object type, as used in `Bookmark`s, 
URLs for xref:../ugvro/ugvro.adoc#[RestfulObjects viewer] and elsewhere.
+If the `schema()` attribute is specified (and if 
xref:../rgant/rgant.adoc#\_rgant-Discriminator[`@Discriminator`] __hasn't__ 
been specified), is also used to derive the object type, as used in 
`Bookmark`s, URLs for xref:../ugvro/ugvro.adoc#[RestfulObjects viewer] and 
elsewhere.
 
 |Domain / persistence
 |Class
 
 
-|xref:../rgant/rgant.adoc#_rgant-PrimaryKey[`@javax.jdo.annotations.` +
+|xref:../rgant/rgant.adoc#\_rgant-PrimaryKey[`@javax.jdo.annotations.` +
 `PrimaryKey`]
 |Used to ensure Apache Isis does not overwrite application-defined primary 
keys, and to ensure is read-only in the UI.
 
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_intro.adoc 
b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_intro.adoc
index 407a933..b67dfc8 100644
--- a/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_intro.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/rgsvc/_rgsvc_intro.adoc
@@ -10,40 +10,36 @@
 [[__rgsvc_intro_types-of-domain-services]]
 == Types of Domain Service
 
-The domain services also group into various broad categories.  Many support 
functionality of the various layers of the
-system (presentation layer, application layer, core domain, persistence 
layer); others exist to allow the domain objects
-to integrate with other bounded contexts, or provide various metadata (eg for 
development-time tooling).  The diagram
-below shows these categories:
+The domain services also group into various broad categories.
+Many support functionality of the various layers of the system (presentation 
layer, application layer, core domain, persistence layer); others exist to 
allow the domain objects to integrate with other bounded contexts, or provide 
various metadata (eg for development-time tooling).
+The diagram below shows these categories:
 
 
image::{_imagesdir}reference-services/categories.png[width="600px",link="{_imagesdir}reference-services/categories.png"]
 
 
-A small number of domain services can be considered both API and SPI; a good 
example is the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_EmailService[`EmailService`] 
that is of direct use for domain objects wishing to send out emails,
-but is also used by the framework to support the 
xref:../ugvw/ugvw.adoc#_ugvw_features_user-registration[user registration]
-functionality supported by the xref:../ugvw/ugvw.adoc#[Wicket viewer].   The 
same is true of the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`];
 this can be used by domain objects to broadcast arbitrary events,
-but is also used by the framework to automatically emit events for
+A small number of domain services can be considered both API and SPI; a good 
example is the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_integration-api_EmailService[`EmailService`] 
that is of direct use for domain objects wishing to send out emails, but is 
also used by the framework to support the 
xref:../ugvw/ugvw.adoc#_ugvw_features_user-registration[user registration]
+functionality supported by the xref:../ugvw/ugvw.adoc#[Wicket viewer].
+The same is true of the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_EventBusService[`EventBusService`];
 this can be used by domain objects to broadcast arbitrary events, but is also 
used by the framework to automatically emit events for
 xref:../rgant/rgant.adoc#_rgant-Action_domainEvent[`@Action#domainEvent()`] 
etc.
 
-For these hybrid services we have categorized the service as an "API" service. 
 This chapter therefore contains only
-the strictly SPI services.
+For these hybrid services we have categorized the service as an "API" service.
+This chapter therefore contains only the strictly SPI services.
 
-This rest of this guide is broken out into several chapters, one for each of 
the various types/categories of domain
-service.
+This rest of this guide is broken out into several chapters, one for each of 
the various types/categories of domain service.
 
 
 
 [[__rgsvc_intro_public-api]]
 == Public API vs Internal Services
 
-The vast majority of Apache Isis' domain services are defined in Apache Isis' 
applib (`o.a.i.core:isis-core-applib`
-module) as stable, public classes.  Importantly, this also minimizes the 
coupling between your code and Apache Isis,
-allowing you to easily mock out these services in your unit tests.
+The vast majority of Apache Isis' domain services are defined in Apache Isis' 
applib (`o.a.i.core:isis-core-applib` module) as stable, public classes.
+Importantly, this also minimizes the coupling between your code and Apache 
Isis, allowing you to easily mock out these services in your unit tests.
 
 
-The framework also defines a number of "internal" services.  These are not 
part of the framework's formal API, in that
-they use classes that are outside of the applib.  These internal framework 
services should be thought of as part of the
-internal design of the framework, and are liable to change from release to 
release.  The internal framework services 
-are documented in the xref:../rgfis/rgfis.adoc#[Framework Internal Services] 
guide.
+The framework also defines a number of "internal" services.
+These are not part of the framework's formal API, in that they use classes 
that are outside of the applib.
+These internal framework services should be thought of as part of the internal 
design of the framework, and are liable to change from release to release.
+The internal framework services are documented in the 
xref:../rgfis/rgfis.adoc#[Framework Internal Services] guide.
 
 
 
@@ -51,8 +47,7 @@ are documented in the xref:../rgfis/rgfis.adoc#[Framework 
Internal Services] gui
 [[__rgsvc_intro_using-the-services]]
 == Using the services
 
-Apache Isis includes an extensive number of domain services for your domain 
objects to use; simply define the service
-as an annotated field and Apache Isis will inject the service into your object.
+Apache Isis includes an extensive number of domain services for your domain 
objects to use; simply define the service as an annotated field and Apache Isis 
will inject the service into your object.
 
 For example:
 
@@ -78,13 +73,9 @@ public class Customer {
 For objects that are already persisted, the service is automatically injected 
just after the object is rehydrated by
 JDO/DataNucleus.
 
-For transient objects (instantiated programmatically), the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_FactoryService[`FactoryService`]'s
-``instantiate()`` method (or the deprecated 
xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_DomainObjectContainer[`DomainObjectContainer`]'s
-``newTransientInstance()`` method) will automatically inject the services.
+For transient objects (instantiated programmatically), the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_FactoryService[`FactoryService`]'s
 ``instantiate()`` method (or the deprecated 
xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_DomainObjectContainer[`DomainObjectContainer`]'s
 ``newTransientInstance()`` method) will automatically inject the services.
 
-Alternatively the object can be instantiated simply using `new`, then services 
injected using
-xref:../rgsvc/rgsvc.adoc#_rgsvc_metadata-api_ServiceRegistry[`ServiceRegistry`]'s
 ``injectServicesInto(...)`` method (or the deprecated
-xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_DomainObjectContainer[`DomainObjectContainer`]'s
 ``injectServicesInto(...)`` method).
+Alternatively the object can be instantiated simply using `new`, then services 
injected using 
xref:../rgsvc/rgsvc.adoc#_rgsvc_metadata-api_ServiceRegistry[`ServiceRegistry`]'s
 ``injectServicesInto(...)`` method (or the deprecated 
xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_DomainObjectContainer[`DomainObjectContainer`]'s
 ``injectServicesInto(...)`` method).
 
 
 
@@ -92,23 +83,23 @@ 
xref:../rgsvc/rgsvc.adoc#_rgsvc_core-domain-api_DomainObjectContainer[`DomainObj
 [[__rgsvc_intro_overriding-the-services]]
 == Overriding the services
 
-The framework provides default implementations for many of the domain 
services.  This is convenient, but sometimes you
-will want to replace the default implementation with your own service 
implementation.
+The framework provides default implementations for many of the domain services.
+This is convenient, but sometimes you will want to replace the default 
implementation with your own service implementation.
 
 The trick is to use the 
xref:../rgant/rgant.adoc#_rgant-DomainServiceLayout_menuOrder[`@DomainServiceLayout#menuOrder()`]
 attribute, specifying a low number (typically `"1"`).
 
 [NOTE]
 ====
-For a small number of domain services, all implementations are used (following 
the chain-of-responsibility pattern),
-not just the first one.  The services in question are:
+For a small number of domain services, all implementations are used (following 
the chain-of-responsibility pattern), not just the first one.
+The services in question are:
 
xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-layer-spi_ContentMappingService[`ContentMappingService`],
 
xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-layer-spi_GridSystemService[`GridSystemService`],
 and
 
xref:../rgsvc/rgsvc.adoc#_rgsvc_presentation-layer-spi_RoutingService[`RoutingService`].
 ====
 
-For example, suppose you wanted to provide your own implementation of
-xref:../rgsvc/rgsvc.adoc#_rgsvc_api_LocaleProvider[`LocaleProvider`].  Here's 
how:
+For example, suppose you wanted to provide your own implementation of 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_LocaleProvider[`LocaleProvider`].
+Here's how:
 
 [source,java]
 ----
@@ -128,9 +119,8 @@ public class MyLocaleProvider implements LocaleProvider {
 <1> takes precedence over the default implementation.
 
 
-It's also quite common to want to decorate the existing implementation (ie 
have your own implementation delegate to the
-default); this is also possible and quite easy (if using `1.10.0` or later).  
The idea is to have the framework
-inject all implementations of the service, and then to delegate to the first 
one that isn't "this" one:
+It's also quite common to want to decorate the existing implementation (ie 
have your own implementation delegate to the default); this is also possible 
and quite easy (if using `1.10.0` or later).
+The idea is to have the framework inject all implementations of the service, 
and then to delegate to the first one that isn't "this" one:
 
 [source,java]
 ----
@@ -162,14 +152,11 @@ The above code could be improved by caching the 
delegateLocaleProvider once loca
 [[__rgsvc_intro_commands-and-events]]
 == Command and Events
 
-A good number of the domain services manage the execution of action 
invocations/property edits, along with the state
-of domain objects that are modified as a result of these.  These services 
capture information which can then be used
-for various purposes, most notably for auditing or for publishing events, or 
for deferring execution such that the
-execution be performed in the background at some later date.
+A good number of the domain services manage the execution of action 
invocations/property edits, along with the state of domain objects that are 
modified as a result of these.
+These services capture information which can then be used for various 
purposes, most notably for auditing or for publishing events, or for deferring 
execution such that the execution be performed in the background at some later 
date.
 
-The diagram below shows how these services fit together.  The outline boxes 
are services while the coloured boxes
-represent data structures - defined in the applib and therefore accessible to 
domain applications - which hold various
-information about the executions.
+The diagram below shows how these services fit together.
+The outline boxes are services while the coloured boxes represent data 
structures - defined in the applib and therefore accessible to domain 
applications - which hold various information about the executions.
 
 
image::{_imagesdir}reference-services/commands-and-events.png[width="960px",link="{_imagesdir}reference-services/commands-and-events.png"]
 
@@ -179,67 +166,49 @@ To explain:
 * the (request-scoped) 
xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_CommandContext[`CommandContext`]
 captures the user's intention to
 invoke an action or edit a property; this is held by the `Command` object.
 
-* if a 
xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-spi_CommandService[`CommandService`]
 has been configured, then this will be used to
-create the `Command` object implementation, generally so that it can then also 
be persisted. +
+* if a 
xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-spi_CommandService[`CommandService`]
 has been configured, then this will be used to create the `Command` object 
implementation, generally so that it can then also be persisted.
 +
-If the action or property is annotated to be invoked in the background (using
-xref:../rgant/rgant.adoc#_rgant-Action_command[`@Action#command...()`] or
-xref:../rgant/rgant.adoc#_rgant-Property_command[`@Property#command...()`]) 
then no further work is done. But,
-if the action/property is to be executed in the foreground, then the 
interaction continues.
-
-* the (request-scoped) 
xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_InteractionContext[`InteractionContext`]
 domain service acts as a
-factory for the ``Interaction`` object, which keeps track of the call-graph of 
executions (``Interaction.Execution``)
-of either action invocations or property edits.  In the majority of cases 
there is likely to be just a single top-level
-node of this graph, but for applications that use the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_WrapperFactory[`WrapperFactory`]
-extensively each successive call results in a new child execution.
-
-* before and after each action invocation/property edit, a 
xref:../rgcms/rgcms.adoc#_rgcms_classes_domainevent[domain event] is
-may be broadcast to all subscribers.  Whether this occurs depends on whether 
the action/property has been annotated
-(using 
xref:../rgant/rgant.adoc#_rgant-Action_domainEvent[`@Action#domainEvent()`] or
-xref:../rgant/rgant.adoc#_rgant-Property_domainEvent[`@Property#domainEvent()`]).
 +
+If the action or property is annotated to be invoked in the background (using 
xref:../rgant/rgant.adoc#_rgant-Action_command[`@Action#command...()`] or 
xref:../rgant/rgant.adoc#_rgant-Property_command[`@Property#command...()`]) 
then no further work is done.
+But, if the action/property is to be executed in the foreground, then the 
interaction continues.
+
+* the (request-scoped) 
xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_InteractionContext[`InteractionContext`]
 domain service acts as a factory for the ``Interaction`` object, which keeps 
track of the call-graph of executions (``Interaction.Execution``) of either 
action invocations or property edits.
+In the majority of cases there is likely to be just a single top-level node of 
this graph, but for applications that use the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_WrapperFactory[`WrapperFactory`]
 extensively each successive call results in a new child execution.
+
+* before and after each action invocation/property edit, a 
xref:../rgcms/rgcms.adoc#_rgcms_classes_domainevent[domain event] is may be 
broadcast to all subscribers.
+Whether this occurs depends on whether the action/property has been annotated 
(using 
xref:../rgant/rgant.adoc#_rgant-Action_domainEvent[`@Action#domainEvent()`] or 
xref:../rgant/rgant.adoc#_rgant-Property_domainEvent[`@Property#domainEvent()`]).
 +
 (Note that susbcribers will also receive events for vetoing the 
action/property; this is not shown on the diagram).
 
-* As each execution progresses, and objects that are modified are "enlisted" 
into the (internal)
-xref:../rgfis/rgfis.adoc#_rgfis_persistence-layer_ChangedObjectsServiceInternal[`ChangedObjectsServiceInternal`]
 domain service.  Metrics as
-to which objects are merely loaded into memory are also captured using the
-xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-api_MetricsService[`MetricsService`]
 (not shown on the diagram).
+* As each execution progresses, and objects that are modified are "enlisted" 
into the (internal) 
xref:../rgfis/rgfis.adoc#_rgfis_persistence-layer_ChangedObjectsServiceInternal[`ChangedObjectsServiceInternal`]
 domain service.
+Metrics as to which objects are merely loaded into memory are also captured 
using the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-api_MetricsService[`MetricsService`]
 (not shown on the diagram).
 
 * At the end of each execution, details of that execution are published 
through the (internal)
-xref:../rgfis/rgfis.adoc#_rgfis_spi_PublisherServiceInternal[`PublisherServiceInternal`]
 domain service.  This is only done for
-actions/properties annotated appropriate (with 
xref:../rgant/rgant.adoc#_rgant-Action_publishing[`@Action#publishing()`] or
-xref:../rgant/rgant.adoc#_rgant-Property_publishing[`@Property#publishing()`]).
  +
+xref:../rgfis/rgfis.adoc#_rgfis_spi_PublisherServiceInternal[`PublisherServiceInternal`]
 domain service.  This is only done for actions/properties annotated 
appropriate (with 
xref:../rgant/rgant.adoc#_rgant-Action_publishing[`@Action#publishing()`] or 
xref:../rgant/rgant.adoc#_rgant-Property_publishing[`@Property#publishing()`]).
 +
 The internal service delegates in turn to any registered 
xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`]s
 (there may be more than one).
 
-* At the end of each transaction, details of all changed objects are 
published, again through the (internal)
-xref:../rgfis/rgfis.adoc#_rgfis_spi_PublisherServiceInternal[`PublisherServiceInternal`]
 to any registered `PublisherService` implementations.
+* At the end of each transaction, details of all changed objects are 
published, again through the (internal) 
xref:../rgfis/rgfis.adoc#_rgfis_spi_PublisherServiceInternal[`PublisherServiceInternal`]
 to any registered `PublisherService` implementations.
 Only domain objects specified to be published with
 
xref:../rgant/rgant.adoc#_rgant-DomainObject_publishing[`@DomainObject#publishing()`]
 are published. +
 +
 [NOTE]
 ====
-Note that it's possible for there to be more than one transaction per 
top-level interaction, by virtue of the
-xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_TransactionService[`TransactionService`].
+Note that it's possible for there to be more than one transaction per 
top-level interaction, by virtue of the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-api_TransactionService[`TransactionService`].
 ====
 
 * Also at the end of each transaction, details of all changed properties are 
passed to any registered
-xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_AuditerService[`AuditerService`](s)
 by way of the (internal)
-xref:../rgfis/rgfis.adoc#_rgfis_persistence-layer_AuditingServiceInternal[`AuditingServiceInternal`]
 domain service.
+xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_AuditerService[`AuditerService`](s)
 by way of the (internal) 
xref:../rgfis/rgfis.adoc#_rgfis_persistence-layer_AuditingServiceInternal[`AuditingServiceInternal`]
 domain service.
 
-Implementations of 
xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-spi_CommandService[`CommandService`]
 can use the `Command#getMemento()`
-method to obtain a XML equivalent of that `Command`, reified using the 
xref:../rgcms/rgcms.adoc#_rgcms_schema-cmd[`cmd.xsd`]
-schema. This can be converted back into a `CommandDto` using the 
`CommandDtoUtils` utility class (part of the applib).
+Implementations of 
xref:../rgsvc/rgsvc.adoc#_rgsvc_application-layer-spi_CommandService[`CommandService`]
 can use the `Command#getMemento()` method to obtain a XML equivalent of that 
`Command`, reified using the 
xref:../rgcms/rgcms.adoc#_rgcms_schema-cmd[`cmd.xsd`] schema.
+This can be converted back into a `CommandDto` using the `CommandDtoUtils` 
utility class (part of the applib).
 
-Similarly, implementations of 
xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`]
 can use the
-`InteractionDtoUtils` utility class to obtain a `InteractionDto` representing 
the interaction, either just for a single
-execution or for the entire call-graph.  This can be converted into XML in a 
similar fashion.
+Similarly, implementations of 
xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`]
 can use the `InteractionDtoUtils` utility class to obtain a `InteractionDto` 
representing the interaction, either just for a single execution or for the 
entire call-graph.
+This can be converted into XML in a similar fashion.
 
-Likewise, the `PublishedObjects` class passed to the `PublisherService` at the 
end of the interaction provides the
-`PublishedObjects#getDto()` method which returns a `ChangesDto` instance.  
This can be converted into XML using the
-`ChangesDtoUtils` utility class.
+Likewise, the `PublishedObjects` class passed to the `PublisherService` at the 
end of the interaction provides the `PublishedObjects#getDto()` method which 
returns a `ChangesDto` instance.
+This can be converted into XML using the `ChangesDtoUtils` utility class.
 
 One final point: multiple 
xref:../rgsvc/rgsvc.adoc#_rgsvc_persistence-layer-spi_PublisherService[`PublisherService`]
 implementations are supported because different implementations may have 
different responsibilities.
 For example, the (non-ASF) link:http://platform.incode.org[Incode Platform^]'s 
publishmq module is responsible for publishing messages onto an ActiveMQ event 
bus, for inter-system communication.
 However, the SPI can also be used for profiling; each execution within the 
call-graph contains metrics of the number of objects loaded or modified as a 
result of that execution, and thus could be used for application profiling.
-The framework provides a default `PublisherServiceLogging` implementation that 
logs this using SLF4J.
+The framework provides a default `PublisherServiceLogging` implementation that 
logs this using SLF4J.
\ No newline at end of file
diff --git a/adocs/documentation/src/main/asciidoc/index.html 
b/adocs/documentation/src/main/asciidoc/index.html
index 64a863a..f70bd89 100644
--- a/adocs/documentation/src/main/asciidoc/index.html
+++ b/adocs/documentation/src/main/asciidoc/index.html
@@ -254,10 +254,16 @@ table.CodeRay td.code>pre{padding:0}
     <li class="dropdown"> <a href="#" class="dropdown-toggle" 
data-toggle="dropdown" role="button" aria-haspopup="true" 
aria-expanded="false">Versions<span class="caret"></span></a>
      <ul class="dropdown-menu">
       <li><a href="documentation.html">1.16.2 (current)</a></li>
+      <!--
       <li role="separator" class="divider"></li>
-      <li><a 
href="versions/SNAPSHOT/documentation.html">1.16.3-M1-SNAPSHOT</a></li>
+      <li><a 
href="versions/SNAPSHOT/documentation.html">2.0.0-M2-SNAPSHOT</a></li>
+      -->
+      <li role="separator" class="divider"></li>
+      <li class="dropdown-header">2.0.0 Milestones</li>
+      <li><a href="versions/2.0.0-M1/documentation.html">2.0.0-M1</a></li>
       <li role="separator" class="divider"></li>
       <li class="dropdown-header">Archive</li>
+      <li><a href="versions/1.16.2/documentation.html">1.16.2</a></li>
       <li><a href="versions/1.16.1/documentation.html">1.16.1</a></li>
       <li><a href="versions/1.16.0/documentation.html">1.16.0</a></li>
       <li><a href="versions/1.15.1/documentation.html">1.15.1</a></li>
@@ -628,11 +634,19 @@ table.CodeRay td.code>pre{padding:0}
         <div class="col-sm-12">
          <h4>Getting started</h4>
          <br/>
-         <p>Start developing your own Apache Isis application using either the 
minimal <a 
href="guides/ugfun/ugfun.html#_ugfun_getting-started_helloworld-archetype">helloworld
 archetype</a> or alternatively with the more structured <a 
href="guides/ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">simpleapp
 archetype</a>.  With the *nix bash shell, use:</p>
+         <p>Start developing your own Apache Isis application using either the 
minimal <a 
href="guides/ugfun/ugfun.html#_ugfun_getting-started_helloworld-archetype">helloworld
 archetype</a> or alternatively with the more structured <a 
href="guides/ugfun/ugfun.html#_ugfun_getting-started_simpleapp-archetype">simpleapp
 archetype</a>.
+          </p>
+        </div>
+       </div>
+       <div class="row">
+        <div class="col-sm-12">
+          To use the current production 1.x version (from a *nix bash shell):
+         <br/>
+         <br/>
         </div>
        </div>
        <div class="row">
-        <div class="col-sm-6">
+        <div class="col-sm-5">
          <div class=panel>
                 <pre>
 mvn archetype:generate  \
@@ -645,7 +659,10 @@ mvn archetype:generate  \
     -B</pre>
          </div>
         </div>
-        <div class="col-sm-6">
+        <div class="col-sm-1">
+         <p>or</p>
+        </div>
+        <div class="col-sm-5">
          <div class=panel>
                 <pre>
 mvn archetype:generate  \
@@ -658,10 +675,52 @@ mvn archetype:generate  \
     -B</pre>
          </div>
         </div>
+        <div class="col-sm-1">
+        </div>
+       </div>
+       <div class="row">
+        <div class="col-sm-12">
+         To use the beta 2.x milestone release, use:
+         <br/>
+         <br/>
+        </div>
+       </div>
+       <div class="row">
+        <div class="col-sm-5">
+         <div class=panel>
+                <pre>
+mvn archetype:generate  \
+    -D archetypeGroupId=org.apache.isis.archetype \
+    -D archetypeArtifactId=helloworld-archetype \
+    -D archetypeVersion=2.0.0-M1 \
+    -D groupId=com.mycompany \
+    -D artifactId=myapp \
+    -D version=1.0-SNAPSHOT \
+    -B</pre>
+         </div>
+        </div>
+        <div class="col-sm-1">
+         <p>or</p>
+        </div>
+        <div class="col-sm-5">
+         <div class=panel>
+                <pre>
+mvn archetype:generate  \
+    -D archetypeGroupId=org.apache.isis.archetype \
+    -D archetypeArtifactId=simpleapp-archetype \
+    -D archetypeVersion=2.0.0-M1 \
+    -D groupId=com.mycompany \
+    -D artifactId=myapp \
+    -D version=1.0-SNAPSHOT \
+    -B</pre>
+         </div>
+        </div>
+        <div class="col-sm-1">
+        </div>
        </div>
        <div class="row">
         <div class="col-sm-12">
-          <p>Adjust as necessary if using Windows `cmd.exe` or Powershell.</p>
+          <p>Adjust as necessary if using Windows.</p>
         </div>
        </div>
 
diff --git 
a/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1.adoc
 
b/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1.adoc
new file mode 100644
index 0000000..84f1647
--- /dev/null
+++ 
b/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0-M1.adoc
@@ -0,0 +1,541 @@
+[[_migration-notes_1.15.0-to-1.16.0]]
+= From v1.16.x to 1.16.0
+:Notice: 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 ag [...]
+:_basedir: ../
+:_imagesdir: images/
+
+
+
+
+
+
+
+[[__migration-notes_1.15.0-to-1.16.0_meta-annotations]]
+== Meta annotations
+
+TODO: document
+
+
+
+[[__migration-notes_1.15.0-to-1.16.0_updated-annotations]]
+== Updated annotations
+
+Prior to v2.0.0, several annotation attributes were defined as booleans.
+In order to support 
xref:migration-notes.adoc#__migration-notes_1.15.0-to-1.16.0_meta-annotations[meta
 annotations], these have been replaced by enums which also include a 
`NOT_SPECIFIED` value.
+Other enums have been extended (where necessary) to also have a 
`NOT_SPECIFIED` value.
+In all cases `NOT_SPECIFIED` is the new default.
+
+
+
+[cols="1a,1a,3a", options="header"]
+|===
+
+| Annotation
+| Modified attribute
+| Change
+
+.7+|xref:../guides/rgant/rgant.adoc#_rgant-Action[`@Action`]
+
+|xref:../guides/rgant/rgant.adoc#_rgant-Action_command[`command`]
+| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-Action_hidden[`hidden`]
+| Default changed from `NOWHERE` to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-Action_invokeOn[`invokeOn`]
+| Default changed from `OBJECT_ONLY` to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-Action_publishing[`publishing`]
+| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-Action_publishing[`publishing`]
+| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-Action_restrictTo[`restrictTo`]
+| Default changed from `NO_RESTRICTIONS` to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-Action_semantics[`semantics`]
+| Default changed from `NON_IDEMPOTENT` to `NOT_SPECIFIED`.
+
+
+
+.3+|xref:../guides/rgant/rgant.adoc#_rgant-ActionLayout[`@ActionLayout`]
+
+| 
xref:../guides/rgant/rgant.adoc#_rgant-ActionLayout_bookmarking[`bookmarking`]
+| Default changed from `NEVER` to `NOT_SPECIFIED`.
+
+| 
xref:../guides/rgant/rgant.adoc#_rgant-ActionLayout_contributed[`contributed`]
+| Default changed from `AS_BOTH` to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-ActionLayout_position[`position`]
+| Default changed from `BELOW` to `NOT_SPECIFIED`.
+
+
+.3+|xref:../guides/rgant/rgant.adoc#_rgant-Collection[`@Collection`]
+
+| xref:../guides/rgant/rgant.adoc#_rgant-Collection_hidden[`hidden`]
+| Default changed from `NOWHERE` to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-Collection_editing[`editing`]
+| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
+
+| 
xref:../guides/rgant/rgant.adoc#_rgant-Collection_mementoSerialization[`mementoSerialization`]
+| Replaces `notPersisted`, taking values of `INCLUDED`, `EXCLUDED` or 
`NOT_SPECIFIED`.
+Defaults to `NOT_SPECIFIED`.
+
+
+
+.4+|xref:../guides/rgant/rgant.adoc#_rgant-DomainObject[`@DomainObject`]
+
+
+| xref:../guides/rgant/rgant.adoc#_rgant-DomainObject_auditing[`auditing`]
+| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-DomainObject_bounding[`bounding`]
+| Replaces `bounded`, taking values of `BOUNDED`, `UNBOUNDED` and 
`NOT_SPECIFIED`.
+Defaults to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-DomainObject_editing[`editing`]
+| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-DomainObject_publishing[`publishing`]
+| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
+
+
+
+.1+|xref:../guides/rgant/rgant.adoc#_rgant-DomainObjectLayout[`@DomainObjectLayout`]
+
+| 
xref:../guides/rgant/rgant.adoc#_rgant-DomainObjectLayout_bookmarking[`bookmarking`]
+| Default changed from `NEVER` to `NOT_SPECIFIED`.
+
+
+.1+|xref:../guides/rgant/rgant.adoc#_rgant-Parameter[`@Parameter`]
+[cols="1a,3a", options="header"]
+
+
+| xref:../guides/rgant/rgant.adoc#_rgant-Parameter_optionality[`optionality`]
+| Default changed from `DEFAULT` to `NOT_SPECIFIED`.
+
+
+
+.2+|xref:../guides/rgant/rgant.adoc#_rgant-ParameterLayout[`@ParameterLayout`]
+
+| 
xref:../guides/rgant/rgant.adoc#_rgant-ParameterLayout_labelPosition[`labelPosition`]
+| Default changed from `DEFAULT` to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-ParameterLayout_renderDay[`renderDay`]
+| Replaces `renderedAsDayBefore`, taking values of `AS_DAY`, `AS_DAY_BEFORE` 
or `NOT_SPECIFIED`.
+Defaults to `NOT_SPECIFIED`.
+
+
+.6+|xref:../guides/rgant/rgant.adoc#_rgant-Property[`@Property`]
+
+
+| 
xref:../guides/rgant/rgant.adoc#_rgant-Property_commandReification[`commandReification`]
+| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-Property_editing[`editing`]
+| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-Property_hidden[`hidden`]
+| Default changed from `NOWHERE` to `NOT_SPECIFIED`.
+
+| 
xref:../guides/rgant/rgant.adoc#_rgant-Property_mementoSerialization[`mementoSerialization`]
+| Replaces `notPersisted`, taking values of `INCLUDED`, `EXCLUDED` or 
`NOT_SPECIFIED`.
+Defaults to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-Property_optionality[`optionality`]
+| Default changed from `DEFAULT` to `NOT_SPECIFIED`.
+
+| xref:../guides/rgant/rgant.adoc#_rgant-Property_publishing[`publishing`]
+| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
+
+
+
+.5+|xref:../guides/rgant/rgant.adoc#_rgant-PropertyLayout[`@PropertyLayout`]
+
+| 
xref:../guides/rgant/rgant.adoc#_rgant-PropertyLayout_labelPosition[`labelPosition`]
+| Default changed from `DEFAULT` to `NOT_SPECIFIED`.
+
+
+| 
xref:../guides/rgant/rgant.adoc#_rgant-PropertyLayout_promptStyle[`promptStyle`]
+| Default changed from `DEFAULT` to `NOT_SPECIFIED`.
+
+
+| xref:../guides/rgant/rgant.adoc#_rgant-PropertyLayout_renderDay[`renderDay`]
+| Replaces `notPersisted`, taking values of `AS_DAY`, `AS_DAY_BEFORE` or 
`NOT_SPECIFIED`.
+Defaults to `NOT_SPECIFIED`.
+
+
+| 
xref:../guides/rgant/rgant.adoc#_rgant-PropertyLayout_repainting[`repainting`]
+| Replaces `unchanging`, taking values of `REPAINT`, `NO_REPAINT` or 
`NOT_SPECIFIED`.
+Defaults to `NOT_SPECIFIED`.
+
+
+
+.1+|xref:../guides/rgant/rgant.adoc#_rgant-ViewModelLayout[`@ViewModelLayout`]
+
+| 
xref:../guides/rgant/rgant.adoc#_rgant-ViewModelLayout_bookmarking[`bookmarking`]
+| adds new NOT_SPECIFIED value
+
+
+|===
+
+
+
+
+[[__migration-notes_1.15.0-to-1.16.0_removed-annotations]]
+== Removed annotations/attributes
+
+[cols="1l,1l,3a", options="header"]
+|===
+
+| Annotation
+| Attribute
+| Use instead
+
+|@Action
+|publishingPayloadFactory()
+|Removed, use the simpler 
xref:../guides/rgsvc/rgsvc.adoc#PublisherService[PublisherService] SPI instead.
+
+
+|@ActionInteraction
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_Action_domainEvent[`@Action#domainEvent()`]
+
+|@ActionOrder
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_MemberOrder[`@MemberOrder()`]
+
+|@Aggregated
+|
+|Never implemented internally in Isis 1.x so no replacement.
+
+|@Audited
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_DomainObject_audited[`@DomainObject#auditing()`]
+
+|@AutoComplete
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_DomainObject_autoComplete[`@DomainObject#autoComplete()`]
+
+|@ActionSemantics
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_Action_semantics[`@Action#semantics()`]
+
+|@Bookmarkable
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_DomainObject_bookmarking[`@DomainObject#bookmarking()`]
+
+|@Bounded
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_DomainObject_bounding[`@DomainObject#bounding()`]
+
+|@Bulk
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_Action_invokeOn[`@Action#invokeOn()`]
+
+Similarly, the `Bulk.InteractionContext` domain service is replaced with the 
xref:../guides/rgsvc/rgsvc.adoc#ActionInvocationContext[ActionInvocationContext]
 domain service.
+
+
+|@Collection
+| notPersisted
+| Removed, replaced with 
xref:../guides/rgant/rgant.adoc#_rgant_Collection_mementoSerialization[`@Collection#mementoSerialization()`]
+
+|@CollectionInteraction
+|
+| xref:../guides/rgant/rgant.adoc#_rgant_Collection_domainEvent[`@Collection
+#domainEvent()`]
+
+|@CollectionLayout
+|render()
+|xref:../guides/rgant/rgant.adoc#_rgant_CollectionLayout_defaultView[`@CollectionLayout#defaultView()`]
+
+|@Command
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_Action_command[`@Action#command()`]
+
+|@CssClass
+|
+|Either 
xref:../guides/rgant/rgant.adoc#_rgant_ActionLayout_cssClass[`@ActionLayout#cssClass()`],
 
xref:../guides/rgant/rgant.adoc#_rgant_PropertyLayout_cssClass[`@PropertyLayout#cssClass()`],
 
xref:../guides/rgant/rgant.adoc#_rgant_CollectionLayout_cssClass[`@CollectionLayout#cssClass()`],
 
xref:../guides/rgant/rgant.adoc#_rgant_ParameterLayout_cssClass[`@ParameterLayout#cssClass()`],
 
xref:../guides/rgant/rgant.adoc#_rgant_DomainObjectLayout_cssClass[`@DomainObjectLayout#cssClass()`]
 or xr [...]
+
+|@CssClassFa
+|
+|Either 
xref:../guides/rgant/rgant.adoc#_rgant_ActionLayout_cssClassFa[`@ActionLayout#cssClassFa()`],
 
xref:../guides/rgant/rgant.adoc#_rgant_DomainObjectLayout_cssClassFa[`@DomainObjectLayout#cssClassFa()`]
 or 
xref:../guides/rgant/rgant.adoc#_rgant_ViewModelLayout_cssClassFa[`@ViewModelLayout#cssClassFa()`].
+
+|@Debug
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_Action_restrictTo[`@Action#restrictTo()`]
+
+|@DescribedAs
+|
+|Either 
xref:../guides/rgant/rgant.adoc#_rgant_ActionLayout_describedAs[`@ActionLayout#describedAs()`],
 
xref:../guides/rgant/rgant.adoc#_rgant_PropertyLayout_describedAs[`@PropertyLayout#describedAs()`],
 
xref:../guides/rgant/rgant.adoc#_rgant_CollectionLayout_describedAs[`@CollectionLayout#describedAs()`],
 
xref:../guides/rgant/rgant.adoc#_rgant_ParameterLayout_describedAs[`@ParameterLayout#describedAs()`],
 
xref:../guides/rgant/rgant.adoc#_rgant_DomainObjectLayout_describedAs[`@DomainObje
 [...]
+
+|@Disabled
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_Property_editingDisabledReason[`@Property#editingDisabledReason()`]
+
+.2+|@DomainObject
+|bounded
+|Deleted (was a boolean attribute), replaced by 
xref:../guides/rgant/rgant.adoc#_rgant_DomainObject_bounding[`@Property#bounding`]
+
+|publishingPayloadFactory
+|Removed, use the simpler 
xref:../guides/rgsvc/rgsvc.adoc#PublisherService[PublisherService] SPI instead.
+
+
+
+|@Exploration
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_Action_restrictTo[`@Action#restrictTo()`]
+
+|@FieldOrder
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_MemberOrder[`@MemberOrder()`]
+
+|@Hidden
+|
+|For actions by either 
xref:../guides/rgant/rgant.adoc#_rgant_Action_hidden[`@Action#hidden()`] or 
xref:../guides/rgant/rgant.adoc#_rgant_ActionLayout_hidden[`@ActionLayout#hidden()`],
 for properties by either 
xref:../guides/rgant/rgant.adoc#_rgant_Property_hidden[`@Property#hidden()`] or 
xref:../guides/rgant/rgant.adoc#_rgant_PropertyLayout_hidden[`@PropertyLayout#hidden()`],
 for collections by either 
xref:../guides/rgant/rgant.adoc#_rgant_Collection_hidden[`@Collection#hidden()`]
 or xr [...]
+
+|@Idempotent
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_Action_semantics[`@Action#semantics()`]
+
+|@Ignore
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_Programmatic[`@Programmatic`]
+
+|@Immutable
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_DomainObject_editing[`@DomainObject#editing()`]
+
+|@Mandatory
+|
+|Either 
xref:../guides/rgant/rgant.adoc#_rgant_Property_optionality[`@Property#optionality()`]
 or 
xref:../guides/rgant/rgant.adoc#_rgant_Parameter_optionality[`@Parameter#optionality()`].
+
+For properties, can also use 
xref:../guides/rgant/rgant.adoc#_rgant_Column_allowsNull[`@Column#allowsNull()`]
+Can also use xref:../guides/rgant/rgant.adoc#_rgant_Nullable[`@Nullable`] for 
either properties or parameters.
+
+|@Mask
+|
+|Removed, never implemented internally in Isis 1.x so no replacement.
+
+|@MaxLength
+|
+|Either 
xref:../guides/rgant/rgant.adoc#_rgant_Property_maxLength[`@Property#maxLength()`]
 or 
xref:../guides/rgant/rgant.adoc#_rgant_Parameter_maxLength[`@Parameter#maxLength()`].
+
+For properties, can also use 
xref:../guides/rgant/rgant.adoc#_rgant_Column_length[`@Column#length()`]
+
+|@MemberGroups
+|
+|xref:../guides/ugvw/ugvw.adoc#_ugvw_layout_file-based[.layout.xml] file 
instead.
+
+|@MultiLine
+|
+|Either 
xref:../guides/rgant/rgant.adoc#_rgant_PropertyLayout_multiLine[`@PropertyLayout#multiLine()`]
 or 
xref:../guides/rgant/rgant.adoc#_rgant_ParameterLayout_multiLine[`@ParameterLayout#multiLine()`].
+
+|@MustSatisfy
+|
+|Either 
xref:../guides/rgant/rgant.adoc#_rgant_Property_mustSatisfy[`@Property#mustSatisfy()`]
 or 
xref:../guides/rgant/rgant.adoc#_rgant_Parameter_mustSatisfy[`@Parameter#mustSatisfy()`].
+
+|@NotPersisted
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_Property_notPersisted[`@Property#notPersisted()`].
+
+|@Optional
+|
+|Either 
xref:../guides/rgant/rgant.adoc#_rgant_Property_optionality[`@Property#optionality()`]
 or 
xref:../guides/rgant/rgant.adoc#_rgant_Parameter_optionality[`@Parameter#optionality()`].
+
+For properties, can also use 
xref:../guides/rgant/rgant.adoc#_rgant_Column_allowsNull[`@Column#allowsNull()`]
+Can also use xref:../guides/rgant/rgant.adoc#_rgant_Nullable[`@Nullable`] for 
either properties or parameters.
+
+|@Named
+|
+|Either 
xref:../guides/rgant/rgant.adoc#_rgant_ActionLayout_named[`@ActionLayout#named()`],
 
xref:../guides/rgant/rgant.adoc#_rgant_PropertyLayout_named[`@PropertyLayout#named()`],
 
xref:../guides/rgant/rgant.adoc#_rgant_CollectionLayout_named[`@CollectionLayout#named()`],
 
xref:../guides/rgant/rgant.adoc#_rgant_ParameterLayout_named[`@ParameterLayout#named()`],
 
xref:../guides/rgant/rgant.adoc#_rgant_DomainObjectLayout_named[`@DomainObjectLayout#named()`]
 or xref:../guides/rgant/rgant.adoc# [...]
+
+|@NotInServiceMenu
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_DomainService_nature[`@DomainService#nature()`]
+
+Specify nature of `VIEW_CONTRIBUTIONS_ONLY`.
+Alternatively, use a xref:../guides/rgant/rgant.adoc#_rgant_Mixin[mixin].
+
+|@NotContributed
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_DomainService_nature[`@DomainService#nature()`]
+
+Specify nature of `VIEW_MENU_ONLY`.
+
+|@NotPersistable
+|
+|Never implemented internally in Isis 1.x so no replacement.
+
+|@ObjectType
+|
+|Removed, 
xref:../guides/rgant/rgant.adoc#_rgant_DomainObject_objectType[`@DomainObject#objectType()`]
 or 
xref:../guides/rgant/rgant.adoc#_rgant_DomainService_objectType[`@DomainService#objectType()`]
+
+Alternatively, for domain entities either:
+
+* the xref:../guides/rgant/rgant.adoc#_rgant_Discriminator[`@Discriminator`] 
annotation can be specified; the value is used as the object type, or
+* the 
xref:../guides/rgant/rgant.adoc#_rgant_PersistenceCapable_schema[`@PersistenceCapable#schema()`]
 can be specified; the value is used as the concatenated with the class name to 
create a two part object type.
+
+|@Parameter
+|minLength()
+|Never implemented internally in Isis 1.x so no replacement.
+
+Note that the xref:../guides/rgant/rgant.adoc#_rgant_MinLength[`@MinLength`] 
annotation is for use with autocomplete supporting methods (specifying the 
minimum number of characters to enter before an auto-complete search is 
performed).
+
+
+|@Paged
+|
+|Either 
xref:../guides/rgant/rgant.adoc#_rgant_CollectionLayout_paged[`@CollectionLayout#paged()`]
 (for parented collections), or 
xref:../guides/rgant/rgant.adoc#_rgant_DomainObject_paged[`@DomainObject#paged()`]
 (for standalone collections)
+
+|@ParameterLayout
+| renderedAsDayBefore
+|Deleted (was a boolean attribute), replaced by 
xref:../guides/rgant/rgant.adoc#_rgant_ParameterLayout_renderDay[`@ParameterLayout#renderDay`].
+
+
+|@Plural
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_DomainObjectLayout_plural[`@DomainObjectLayout#plural()`]
+
+|@PostsAction
+InvokedEvent
+|
+| 
xref:../guides/rgant/rgant.adoc#_rgant_Action_domainEvent[`@Action#domainEvent()`]
+
+|@PostsCollection
+AddedToEvent
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_Collection_domainEvent[`@Collection#domainEvent()`]
+
+|@PostsCollection
+RemovedFromEvent
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_Collection_domainEvent[`@Collection#domainEvent()`]
+
+|@PostsProperty
+ChangedEvent
+|
+| 
xref:../guides/rgant/rgant.adoc#_rgant_Property_domainEvent[`@Property#domainEvent()`]
+
+|@Property
+| notPersisted
+| Removed, replaced with 
xref:../guides/rgant/rgant.adoc#_rgant_Collection_mementoSerialization[`@Collection#mementoSerialization()`]
+
+|@PropertyInteraction
+|
+| 
xref:../guides/rgant/rgant.adoc#_rgant_Property_domainEvent[`@Property#domainEvent()`]
+
+.2+|@PropertyLayout
+| renderedAsDayBefore
+|Deleted (was a boolean attribute), replaced by 
xref:../guides/rgant/rgant.adoc#_rgant_PropertyLayout_renderDay[`@PropertyLayout#renderDay`].
+
+| unchanging
+| Deleted (was a boolean attribute), replaced by by 
xref:../guides/rgant/rgant.adoc#_rgant_PropertyLayout_repainting[`@PropertyLayout#repainting`].
+
+
+|@Prototype
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_Action_restrictTo[`@Action#restrictTo()`]
+
+|@PublishedAction
+|
+|Removed, use 
xref:../guides/rgant/rgant.adoc#_rgant-Action_publishing[@Action#publishing()]
+
+|@PublishedObject
+|
+|Removed, use 
xref:../guides/rgant/rgant.adoc#_rgant-DomainObject_publishing[@DomainObject#publishing()]
+
+|@PublishingPayload
+FactoryForAction
+|
+|Removed, use the simpler 
xref:../guides/rgsvc/rgsvc.adoc#PublisherService[PublisherService] SPI instead.
+
+|PublishingPayload
+FactoryForObject
+|
+|Removed, use the simpler 
xref:../guides/rgsvc/rgsvc.adoc#PublisherService[PublisherService] SPI instead.
+
+|@QueryOnly
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_Action_semantics[`@Action#semantics()`]
+
+|@Regex
+|
+|Either 
xref:../guides/rgant/rgant.adoc#_rgant_Property_regexPattern[`@Property#regexPattern()`]
 or 
xref:../guides/rgant/rgant.adoc#_rgant_Parameter_regexPattern[`@Parameter#regexPattern()`].
+
+|@Render
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_CollectionLayout_defaultView[`@CollectionLayout#defaultView()`]
+
+Supporting `RenderType` enum also removed.
+
+|@RenderedAs
+DayBefore
+|
+|Either 
xref:../guides/rgant/rgant.adoc#_rgant_Property_renderDay[`@Property#renderDay()`]
 or 
xref:../guides/rgant/rgant.adoc#_rgant_Parameter_renderDay[`@Parameter#renderDay()`].
+
+|@Resolve
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_CollectionLayout_defaultView[`@CollectionLayout#defaultView()`]
+
+|@SortedBy
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_CollectionLayout_sortedBy[`@CollectionLayout#sortedBy()`]
+
+|@TypeOf
+|
+|Either 
xref:../guides/rgant/rgant.adoc#_rgant_CollectionLayout_typeOf[`@CollectionLayout#typeOf()`]
 (for parented collections), or 
xref:../guides/rgant/rgant.adoc#_rgant_ActionLayout_typeOf[`@ActionLayout#typeOf()`]
 (for actions returning a standalone collection).
+
+|@TypicalLength
+|
+|xref:../guides/rgant/rgant.adoc#_rgant_PropertyLayout_typicalLength[`@PropertyLayout#typicalLength()`].
+
+
+|===
+
+
+[[__migration-notes_1.15.0-to-1.16.0_removed-interfaces]]
+== Removed interfaces
+
+[cols="1a,3a", options="header"]
+|===
+
+| Removed interface
+| Replaced with
+
+|`Auditable` +
+(JDO applib)
+|xref:../guides/rgant/rgant.adoc#_rgant_DomainObject_audited[`@DomainObject#auditing()`]
+
+|`Bounded` +
+(JDO applib)
+|xref:../guides/rgant/rgant.adoc#_rgant_DomainObject_bounding[`@DomainObject#bounding()`]
+
+|`NotPersistable` +
+(JDO applib)
+|Never implemented internally in Isis 1.x so no replacement.
+
+|`ProgramPersistable` +
+(JDO applib)
+|Never implemented fully in Isis 1.x so no replacement.
+
+|`AlwaysImmutable` +
+(JDO applib)
+|Never implemented fully in Isis 1.x so no replacement.
+
+|`ImmutableOncePersisted` +
+(JDO applib)
+|Never implemented fully in Isis 1.x so no replacement.
+
+|`ImmutableUntilPersisted` +
+(JDO applib)
+|Never implemented fully in Isis 1.x so no replacement.
+
+|`NeverImmutable` +
+(JDO applib)
+|Never implemented fully in Isis 1.x so no replacement.
+
+
+|===
+
diff --git 
a/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0.adoc
 
b/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0.adoc
deleted file mode 100644
index 3e073ca..0000000
--- 
a/adocs/documentation/src/main/asciidoc/migration-notes/_migration-notes_1.16.0-to-2.0.0.adoc
+++ /dev/null
@@ -1,223 +0,0 @@
-[[_migration-notes_1.15.0-to-1.16.0]]
-= From v1.16.x to 1.16.0
-:Notice: 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 ag [...]
-:_basedir: ../
-:_imagesdir: images/
-
-
-
-
-
-
-== Removed annotations
-
-TODO: document
-
-== Meta annotations
-
-TODO: document
-
-== Updated annotations
-
-Prior to v2.0.0, several annotation attributes were defined as booleans.
-In order to support meta annotations, these have been replaced by enums which 
also include a `NOT_SPECIFIED` value.
-Other enums have been extended (where necessary) to also have a 
`NOT_SPECIFIED` value.
-In all cases `NOT_SPECIFIED` is the new default.
-
-
-.xref:../guides/rgant/rgant.adoc#_rgant-Action[`@Action`] attributes
-[cols="1a,3a", options="header"]
-|===
-
-| Modified attribute
-| Change
-
-|xref:../guides/rgant/rgant.adoc#_rgant-Action_command[`command`]
-| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
-
-| xref:../guides/rgant/rgant.adoc#_rgant-Action_hidden[`hidden`]
-| Default changed from `NOWHERE` to `NOT_SPECIFIED`.
-
-| xref:../guides/rgant/rgant.adoc#_rgant-Action_invokeOn[`invokeOn`]
-| Default changed from `OBJECT_ONLY` to `NOT_SPECIFIED`.
-
-| xref:../guides/rgant/rgant.adoc#_rgant-Action_publishing[`publishing`]
-| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
-
-| xref:../guides/rgant/rgant.adoc#_rgant-Action_restrictTo[`restrictTo`]
-| Default changed from `NO_RESTRICTIONS` to `NOT_SPECIFIED`.
-
-| xref:../guides/rgant/rgant.adoc#_rgant-Action_semantics[`semantics`]
-| Default changed from `NON_IDEMPOTENT` to `NOT_SPECIFIED`.
-
-|===
-
-.xref:../guides/rgant/rgant.adoc#_rgant-ActionLayout[`@ActionLayout`] 
attributes
-[cols="1a,3a", options="header"]
-|===
-
-| 
xref:../guides/rgant/rgant.adoc#_rgant-ActionLayout_bookmarking[`bookmarking`]
-| Default changed from `NEVER` to `NOT_SPECIFIED`.
-
-| 
xref:../guides/rgant/rgant.adoc#_rgant-ActionLayout_contributed[`contributed`]
-| Default changed from `AS_BOTH` to `NOT_SPECIFIED`.
-
-| xref:../guides/rgant/rgant.adoc#_rgant-ActionLayout_position[`position`]
-| Default changed from `BELOW` to `NOT_SPECIFIED`.
-
-
-|===
-
-.xref:../guides/rgant/rgant.adoc#_rgant-Collection[`@Collection`] attributes
-[cols="1a,3a", options="header"]
-|===
-
-| xref:../guides/rgant/rgant.adoc#_rgant-Collection_hidden[`hidden`]
-| Default changed from `NOWHERE` to `NOT_SPECIFIED`.
-
-| xref:../guides/rgant/rgant.adoc#_rgant-Collection_editing[`editing`]
-| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
-
-| 
xref:../guides/rgant/rgant.adoc#_rgant-Collection_mementoSerialization[`mementoSerialization`]
-| Replaces `notPersisted`, taking values of `INCLUDED`, `EXCLUDED` or 
`NOT_SPECIFIED`.
-Defaults to `NOT_SPECIFIED`.
-
-| `notPersisted`
-| Removed, replaced with `mementoSerialization`
-
-
-|===
-
-.xref:../guides/rgant/rgant.adoc#_rgant-DomainObject[`@DomainObject`] 
attributes
-[cols="1a,3a", options="header"]
-|===
-
-| xref:../guides/rgant/rgant.adoc#_rgant-DomainObject_auditing[`auditing`]
-| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
-
-| `bounded`
-| Deleted (was a boolean attribute), replaced by `bounding` (below)
-
-| xref:../guides/rgant/rgant.adoc#_rgant-DomainObject_bounding[`bounding`]
-| Replaces `bounded`, taking values of `BOUNDED`, `UNBOUNDED` and 
`NOT_SPECIFIED`.
-Defaults to `NOT_SPECIFIED`.
-
-| xref:../guides/rgant/rgant.adoc#_rgant-DomainObject_editing[`editing`]
-| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
-
-| xref:../guides/rgant/rgant.adoc#_rgant-DomainObject_publishing[`publishing`]
-| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
-
-
-|===
-
-.xref:../guides/rgant/rgant.adoc#_rgant-DomainObjectLayout[`@DomainObjectLayout`]
 attributes
-[cols="1a,3a", options="header"]
-|===
-
-| 
xref:../guides/rgant/rgant.adoc#_rgant-DomainObjectLayout_bookmarking[`bookmarking`]
-| Default changed from `NEVER` to `NOT_SPECIFIED`.
-
-
-|===
-
-.xref:../guides/rgant/rgant.adoc#_rgant-Parameter[`@Parameter`] attributes
-[cols="1a,3a", options="header"]
-|===
-
-
-| xref:../guides/rgant/rgant.adoc#_rgant-Parameter_optionality[`optionality`]
-| Default changed from `DEFAULT` to `NOT_SPECIFIED`.
-
-
-|===
-
-.xref:../guides/rgant/rgant.adoc#_rgant-ParameterLayout[`@ParameterLayout`] 
attributes
-[cols="1a,3a", options="header"]
-|===
-
-
-| 
xref:../guides/rgant/rgant.adoc#_rgant-ParameterLayout_labelPosition[`labelPosition`]
-| Default changed from `DEFAULT` to `NOT_SPECIFIED`.
-
-| `renderedAsDayBefore`
-| Deleted (was a boolean attribute), replaced by `renderDay`.
-
-| xref:../guides/rgant/rgant.adoc#_rgant-ParameterLayout_renderDay[`renderBay`]
-| Replaces `notPersisted`, taking values of `AS_DAY`, `AS_DAY_BEFORE` or 
`NOT_SPECIFIED`.
-Defaults to `NOT_SPECIFIED`.
-
-|===
-
-.xref:../guides/rgant/rgant.adoc#_rgant-Property[`@Property`] attributes
-[cols="1a,3a", options="header"]
-|===
-
-
-| 
xref:../guides/rgant/rgant.adoc#_rgant-Property_commandReification[`commandReification`]
-| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
-
-| xref:../guides/rgant/rgant.adoc#_rgant-Property_editing[`editing`]
-| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
-
-| xref:../guides/rgant/rgant.adoc#_rgant-Property_hidden[`hidden`]
-| Default changed from `NOWHERE` to `NOT_SPECIFIED`.
-
-| 
xref:../guides/rgant/rgant.adoc#_rgant-Property_mementoSerialization[`mementoSerialization`]
-| Replaces `notPersisted`, taking values of `INCLUDED`, `EXCLUDED` or 
`NOT_SPECIFIED`.
-Defaults to `NOT_SPECIFIED`.
-
-| `notPersisted`
-| Removed, replaced with `mementoSerialization`
-
-| xref:../guides/rgant/rgant.adoc#_rgant-Property_optionality[`optionality`]
-| Default changed from `DEFAULT` to `NOT_SPECIFIED`.
-
-| xref:../guides/rgant/rgant.adoc#_rgant-Property_publishing[`publishing`]
-| Default changed from `AS_CONFIGURED` to `NOT_SPECIFIED`.
-
-
-|===
-
-.xref:../guides/rgant/rgant.adoc#_rgant-PropertyLayout[`@PropertyLayout`] 
attributes
-[cols="1a,3a", options="header"]
-|===
-
-| 
xref:../guides/rgant/rgant.adoc#_rgant-PropertyLayout_labelPosition[`labelPosition`]
-| Default changed from `DEFAULT` to `NOT_SPECIFIED`.
-
-
-| 
xref:../guides/rgant/rgant.adoc#_rgant-PropertyLayout_promptStyle[`promptStyle`]
-| Default changed from `DEFAULT` to `NOT_SPECIFIED`.
-
-
-| `renderedAsDayBefore`
-| Deleted (was a boolean attribute), replaced by `renderDay`.
-
-| xref:../guides/rgant/rgant.adoc#_rgant-PropertyLayout_renderDay[`renderBay`]
-| Replaces `notPersisted`, taking values of `AS_DAY`, `AS_DAY_BEFORE` or 
`NOT_SPECIFIED`.
-Defaults to `NOT_SPECIFIED`.
-
-
-| `unchanging`
-| Deleted (was a boolean attribute), replaced by `repainting`.
-
-| 
xref:../guides/rgant/rgant.adoc#_rgant-PropertyLayout_repainting[`repainting`]
-| Replaces `unchanging`, taking values of `REPAINT`, `NO_REPAINT` or 
`NOT_SPECIFIED`.
-Defaults to `NOT_SPECIFIED`.
-
-
-|===
-
-.xref:../guides/rgant/rgant.adoc#_rgant-ViewModelLayout[`@ViewModelLayout`] 
attributes
-[cols="1a,3a", options="header"]
-|===
-
-| xref:../guides/rgant/rgant.adoc#_rgant-ViewModelLayout[`@ViewModelLayout`]
-| 
xref:../guides/rgant/rgant.adoc#_rgant-ViewModelLayout_bookmarking[`bookmarking`]
-| adds new NOT_SPECIFIED value
-
-
-|===
-
-
diff --git 
a/adocs/documentation/src/main/asciidoc/release-notes/_release-notes_2.0.0-M1.adoc
 
b/adocs/documentation/src/main/asciidoc/release-notes/_release-notes_2.0.0-M1.adoc
new file mode 100644
index 0000000..8bcc0c3
--- /dev/null
+++ 
b/adocs/documentation/src/main/asciidoc/release-notes/_release-notes_2.0.0-M1.adoc
@@ -0,0 +1,139 @@
+[[_release-notes_2.0.0-M1]]
+= 2.0.0-M1
+:notice: 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 ag [...]
+:_basedir: ../
+:_imagesdir: images/
+:toc: right
+
+
+
+
+This is the first milestone release for Apache Isis 2.0
+
+Apache Isis 2.0 upgrades the framework to require Java 8 and above, and along 
the way upgrades DataNucleus ORM to 5.1 and Wicket to 8.0.
+
+Notable new features include support for meta-annotations (both Apache Isis 
annotations and DataNucleus).
+
+Features deprecated in Apache Isis 1.x (most notably, domain services and 
annotations) have been removed.
+The most significant domain service removed is `DomainObjectContainer`.
+
+
+
+== New Feature
+
+* link:https://issues.apache.org/jira/browse/ISIS-1969[ISIS-1969] - Distribute 
Isis as a Docker image, with the libraries in Tomcat's lib/ folder (skinny wars)
+* link:https://issues.apache.org/jira/browse/ISIS-1809[ISIS-1809] - 
Convenience adapter implementations of UrlEncodingService
+* link:https://issues.apache.org/jira/browse/ISIS-1740[ISIS-1740] - New 
Feature: Where am I
+* link:https://issues.apache.org/jira/browse/ISIS-1726[ISIS-1726] - Support 
DataNucleus meta annotations for @PersistenceCapable.
+* link:https://issues.apache.org/jira/browse/ISIS-1632[ISIS-1632] - Support 
meta annotations for @Property/@Collection/@Action + @XxxLayout
+* link:https://issues.apache.org/jira/browse/ISIS-1056[ISIS-1056] - 
[DUPLICATE] Support user-defined annotations (as per Spring and JSR-303 etc).
+
+
+== Improvement
+
+* link:https://issues.apache.org/jira/browse/ISIS-1961[ISIS-1961] - 
ResourceCachingFilter: Suppress 'client connection abort' exceptions.
+* link:https://issues.apache.org/jira/browse/ISIS-1959[ISIS-1959] - Update to 
Wicket 8
+* link:https://issues.apache.org/jira/browse/ISIS-1958[ISIS-1958] - 
Integration Tests: HSQL-DB is forced upon users
+* link:https://issues.apache.org/jira/browse/ISIS-1956[ISIS-1956] - Remove 
dependencies on guava from unittestsupport
+* link:https://issues.apache.org/jira/browse/ISIS-1955[ISIS-1955] - Allow for 
ErrorReportingService Tickets to render arbitrary HTML
+* link:https://issues.apache.org/jira/browse/ISIS-1954[ISIS-1954] - JUnit 5 
support
+* link:https://issues.apache.org/jira/browse/ISIS-1950[ISIS-1950] - Add a 
ByteBuddy plugin implementing proxy-factory mechanics
+* link:https://issues.apache.org/jira/browse/ISIS-1949[ISIS-1949] - Make 
proxy-factory mechanics a plugin (Javassist)
+* link:https://issues.apache.org/jira/browse/ISIS-1948[ISIS-1948] - Remove 
Javassist as a dependency
+* link:https://issues.apache.org/jira/browse/ISIS-1942[ISIS-1942] - New Facet: 
XmlAccessorTypeFacet
+* link:https://issues.apache.org/jira/browse/ISIS-1935[ISIS-1935] - Remove the 
requirement for event-bus plugins to implement QueryResultCacheControl
+* link:https://issues.apache.org/jira/browse/ISIS-1932[ISIS-1932] - 
Consolidation of Collection Utility classes
+* link:https://issues.apache.org/jira/browse/ISIS-1931[ISIS-1931] - 
ServicesInjector: Reduce Heap Pollution
+* link:https://issues.apache.org/jira/browse/ISIS-1930[ISIS-1930] - 
PersistenceSession: Reduce Heap Pollution
+* link:https://issues.apache.org/jira/browse/ISIS-1928[ISIS-1928] - Don't log 
ERROR if fail to authenticate (INFO is enough)
+* link:https://issues.apache.org/jira/browse/ISIS-1911[ISIS-1911] - 
TranslationServicePo: new config option to disable the service
+* link:https://issues.apache.org/jira/browse/ISIS-1910[ISIS-1910] - Rename 
IsisJdoSupport0 back to its original name
+* link:https://issues.apache.org/jira/browse/ISIS-1906[ISIS-1906] - 
Programming Model: @Parent needs replacement
+* link:https://issues.apache.org/jira/browse/ISIS-1904[ISIS-1904] - gitlab 
setup, supporting CI/CD builds with externalized version
+* link:https://issues.apache.org/jira/browse/ISIS-1897[ISIS-1897] - applib: 
the new ObjectContracts needs backward compatibility
+* link:https://issues.apache.org/jira/browse/ISIS-1896[ISIS-1896] - 
Swagger-UI: provide a link for convenient login to restful API
+* link:https://issues.apache.org/jira/browse/ISIS-1891[ISIS-1891] - Make 
jax-rs provider (resteasy) a plugin
+* link:https://issues.apache.org/jira/browse/ISIS-1881[ISIS-1881] - Package 
swagger-ui web-content with metamodel module
+* link:https://issues.apache.org/jira/browse/ISIS-1846[ISIS-1846] - Code 
deduplication (new Internal API)
+* link:https://issues.apache.org/jira/browse/ISIS-1844[ISIS-1844] - API 
cleanup: make any unchecked casts explicit
+* link:https://issues.apache.org/jira/browse/ISIS-1843[ISIS-1843] - remove 
occurences of Thread.currentThread().getContextClassLoader()
+* link:https://issues.apache.org/jira/browse/ISIS-1842[ISIS-1842] - API 
cleanup: add generic type arguments where missing
+* link:https://issues.apache.org/jira/browse/ISIS-1830[ISIS-1830] - Eliminate 
dependence on any JDK internal APIs (jdeps JDK 9)
+* link:https://issues.apache.org/jira/browse/ISIS-1827[ISIS-1827] - Remove 
dependencies on guava from isis-core-applib (public API)
+* link:https://issues.apache.org/jira/browse/ISIS-1823[ISIS-1823] - Config 
property for disabling footer entirly
+* link:https://issues.apache.org/jira/browse/ISIS-1818[ISIS-1818] - new config 
property: max navigable parent chain length
+* link:https://issues.apache.org/jira/browse/ISIS-1817[ISIS-1817] - new config 
property that allows to disable the where-am-i feature
+* link:https://issues.apache.org/jira/browse/ISIS-1779[ISIS-1779] - Transition 
to JAX-RS 2.0 Client API
+* link:https://issues.apache.org/jira/browse/ISIS-1775[ISIS-1775] - 
Context-Path support for SwaggerService
+* link:https://issues.apache.org/jira/browse/ISIS-1763[ISIS-1763] - Change 
@DomainObject#bounded (a boolean) to @DomainObject#bounding (an enum)
+* link:https://issues.apache.org/jira/browse/ISIS-1762[ISIS-1762] - Java 8+ 
Miscellaneous Utilities
+* link:https://issues.apache.org/jira/browse/ISIS-1756[ISIS-1756] - JEE 
Support - proper life-cycling
+* link:https://issues.apache.org/jira/browse/ISIS-1755[ISIS-1755] - JEE 
Support - let CDI ignore certain beans
+* link:https://issues.apache.org/jira/browse/ISIS-1753[ISIS-1753] - Plugable 
support for guava and axon event bus implementation.
+* link:https://issues.apache.org/jira/browse/ISIS-1744[ISIS-1744] - Update 
DataNucleus to the latest version (5.1.5 or later)
+* link:https://issues.apache.org/jira/browse/ISIS-1742[ISIS-1742] - Remove 
deprecated annotations, methods etc.
+* link:https://issues.apache.org/jira/browse/ISIS-1727[ISIS-1727] - Minor 
internal refactorings from upgrade to JDK 8
+* link:https://issues.apache.org/jira/browse/ISIS-1725[ISIS-1725] - Simplify 
bootstrapping logic by requiring an AppManifest to be supplied, remoev cfg 
property
+* link:https://issues.apache.org/jira/browse/ISIS-1724[ISIS-1724] - Remove JDO 
applib's IsisJdoSupport
+* link:https://issues.apache.org/jira/browse/ISIS-1723[ISIS-1723] - Remove JDO 
applib's Auditable interface and @Auditable annotation
+* link:https://issues.apache.org/jira/browse/ISIS-1683[ISIS-1683] - Move 
org.apache.isis.applib.services.timestamp.Timestampable to mixins.timestamp
+* link:https://issues.apache.org/jira/browse/ISIS-1682[ISIS-1682] - Move 
org.apache.isis.applib.services.layout.Object_downloadLayoutXml mixins out of 
services.layout and into mixins.layout
+* link:https://issues.apache.org/jira/browse/ISIS-1681[ISIS-1681] - Move 
wrapper factory events (eg org.apache.isis.applib.events.AccessEvent) to 
subpackage of services.wrapper
+* link:https://issues.apache.org/jira/browse/ISIS-1680[ISIS-1680] - Move event 
classes (eg org.apache.isis.applib.services.eventbus.AbstractDomainEvent) out 
of services.eventbus and into applib.events (subpackages thereof)
+* link:https://issues.apache.org/jira/browse/ISIS-1679[ISIS-1679] - Move 
org.apache.isis.applib.services.dto.Dto to org.apache.isis.applib.mixins
+
+
+== Bug
+
+* link:https://issues.apache.org/jira/browse/ISIS-1963[ISIS-1963] - Wicket UI: 
IllegalArgumentExceptions after persistent field update using AJAX
+* link:https://issues.apache.org/jira/browse/ISIS-1957[ISIS-1957] - 
ServiceInjector fails to handle Generic Types in target fields of type List
+* link:https://issues.apache.org/jira/browse/ISIS-1946[ISIS-1946] - Running 
with o.a.i.WebServer throws exception due to empty context path.
+* link:https://issues.apache.org/jira/browse/ISIS-1941[ISIS-1941] - [NOT A 
PROBLEM] Metamodel: XmlJavaTypeAdapterFacetFactory broken somehow
+* link:https://issues.apache.org/jira/browse/ISIS-1940[ISIS-1940] - 
MultiSelect Action Invocation throws IllegalArgumentException
+* link:https://issues.apache.org/jira/browse/ISIS-1939[ISIS-1939] - Internal 
API: Memento deserialization requires proper class-loader
+* link:https://issues.apache.org/jira/browse/ISIS-1929[ISIS-1929] - Skinny WAR 
Redeployment: Isis Core Plugins might not be resolved
+* link:https://issues.apache.org/jira/browse/ISIS-1887[ISIS-1887] - Metamodel: 
restore java.sql.Timestamp support
+* link:https://issues.apache.org/jira/browse/ISIS-1880[ISIS-1880] - 
LocalResourcePath: new value type for local URLs
+* link:https://issues.apache.org/jira/browse/ISIS-1870[ISIS-1870] - Fix JUnit 
Tests previously not picked up by surefire
+* link:https://issues.apache.org/jira/browse/ISIS-1869[ISIS-1869] - Surefire 
does not pick up all relevant tests
+* link:https://issues.apache.org/jira/browse/ISIS-1868[ISIS-1868] - Eclipse 
fails to build the schema module
+* link:https://issues.apache.org/jira/browse/ISIS-1866[ISIS-1866] - Metamodel: 
38 JUnit Test Failures
+* link:https://issues.apache.org/jira/browse/ISIS-1865[ISIS-1865] - 
Wicket-Impl: Some JUnit tests are failing
+* link:https://issues.apache.org/jira/browse/ISIS-1852[ISIS-1852] - Iterating 
over query result list with parallelStream produces next exception
+* link:https://issues.apache.org/jira/browse/ISIS-1821[ISIS-1821] - Metadata 
validation failure when no @Nullable is present
+* link:https://issues.apache.org/jira/browse/ISIS-1736[ISIS-1736] - 
ConfigurationServiceDefault is inconsistent
+* link:https://issues.apache.org/jira/browse/ISIS-1721[ISIS-1721] - Isis 
should optionally not override the default values of entities.
+* link:https://issues.apache.org/jira/browse/ISIS-1599[ISIS-1599] - "Set" 
interface does not work as an action parameter's collection type
+* link:https://issues.apache.org/jira/browse/ISIS-1531[ISIS-1531] - Possible 
memory leak
+* link:https://issues.apache.org/jira/browse/ISIS-1506[ISIS-1506] - tomcat 
shutdown - threads in PARK state
+* link:https://issues.apache.org/jira/browse/ISIS-1172[ISIS-1172] - Logo in 
wicket viewer should be calculated relative to context root
+
+
+== Dependency upgrade
+
+* link:https://issues.apache.org/jira/browse/ISIS-1276[ISIS-1276] - Update DN 
to 5.1.x (from DN 4.1.x)
+
+== Task
+
+* link:https://issues.apache.org/jira/browse/ISIS-1903[ISIS-1903] - Update 
helloworld/simpleapp for Isis version 2
+* link:https://issues.apache.org/jira/browse/ISIS-1871[ISIS-1871] - Pull 
changes, that do not conflict with DN-4, from M2 into M1
+* link:https://issues.apache.org/jira/browse/ISIS-1828[ISIS-1828] - Jdeps 
analysis of core code-base In preparation for Java 9+
+* link:https://issues.apache.org/jira/browse/ISIS-1810[ISIS-1810] - Release 
tasks for 2.0.0-M1
+
+== Sub-task
+
+* link:https://issues.apache.org/jira/browse/ISIS-1951[ISIS-1951] - Move 
objenesis dependency to plugin codegen-javassist
+* link:https://issues.apache.org/jira/browse/ISIS-1915[ISIS-1915] - Migration 
Notes: We have core plugins now
+* link:https://issues.apache.org/jira/browse/ISIS-1909[ISIS-1909] - Migration 
Notes: Moved and Deprecated Classes
+* link:https://issues.apache.org/jira/browse/ISIS-1908[ISIS-1908] - Mirgation 
Notes: swagger-ui is now packed with metamodel
+* link:https://issues.apache.org/jira/browse/ISIS-1907[ISIS-1907] - Migration 
Notes: Apply workaround for DN plugins
+* link:https://issues.apache.org/jira/browse/ISIS-1893[ISIS-1893] - fix mvn 
build issues
+* link:https://issues.apache.org/jira/browse/ISIS-1890[ISIS-1890] - configure 
surefire for all new plugins
+* link:https://issues.apache.org/jira/browse/ISIS-1889[ISIS-1889] - Backport 
datanucleus specific commits from M2 into M1.
+* link:https://issues.apache.org/jira/browse/ISIS-1886[ISIS-1886] - Port 
QueryResultCache back into applib
+* link:https://issues.apache.org/jira/browse/ISIS-1885[ISIS-1885] - Re-invent 
ObjectContracts' JUnit Tests
+* link:https://issues.apache.org/jira/browse/ISIS-1819[ISIS-1819] - 
Documentation (guide) of where-am-i feature
+* link:https://issues.apache.org/jira/browse/ISIS-1816[ISIS-1816] - Specify 
framework's behavior if multiple @Parent annotations or parent() methods are 
resolved in the object's hierarchy
+* link:https://issues.apache.org/jira/browse/ISIS-1754[ISIS-1754] - JEE 
Support - Investigate Class Loading on Payara 4.1.2
+
+
diff --git 
a/adocs/documentation/src/main/asciidoc/release-notes/_release-notes_2.0.0.adoc 
b/adocs/documentation/src/main/asciidoc/release-notes/_release-notes_2.0.0.adoc
deleted file mode 100644
index 913436e..0000000
--- 
a/adocs/documentation/src/main/asciidoc/release-notes/_release-notes_2.0.0.adoc
+++ /dev/null
@@ -1,9 +0,0 @@
-[[_release-notes_2.0.0]]
-= 2.0.0
-:notice: 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 ag [...]
-:_basedir: ../
-:_imagesdir: images/
-:toc: right
-
-
-
diff --git 
a/adocs/documentation/src/main/asciidoc/release-notes/release-notes.adoc 
b/adocs/documentation/src/main/asciidoc/release-notes/release-notes.adoc
index 9766c86..622762e 100644
--- a/adocs/documentation/src/main/asciidoc/release-notes/release-notes.adoc
+++ b/adocs/documentation/src/main/asciidoc/release-notes/release-notes.adoc
@@ -21,6 +21,14 @@ This table summarises all releases of Apache Isis to date.
 | Bugs
 | JIRA relnotes
 
+| xref:release-notes.adoc#_release-notes_2.0.0-M1[2.0.0-M1]
+| 31-07-2018
+| First milestone release for Apache Isis 2.0.0: Java 8 support, DataNucleus 
5.1, Wicket 8, meta-annotations, breadcrumbs
+| XXX
+| XXX
+| XXX
+| 
https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12311171&version=XXXXXX[Release
 notes for 2.0.0-M1]
+
 | xref:release-notes.adoc#_release-notes_1.16.2[1.16.2]
 | 05-03-2018
 | RO viewer support, performance improvement, fix of severe bug for parented 
checkboxes
@@ -321,6 +329,7 @@ This table summarises all releases of Apache Isis to date.
 
 
 
+include::_release-notes_2.0.0-M1.adoc[leveloffset=+1]
 include::_release-notes_1.16.2.adoc[leveloffset=+1]
 include::_release-notes_1.16.1.adoc[leveloffset=+1]
 include::_release-notes_1.16.0.adoc[leveloffset=+1]
diff --git a/core/applib/pom.xml b/core/applib/pom.xml
index f0c797e..c5d2360 100644
--- a/core/applib/pom.xml
+++ b/core/applib/pom.xml
@@ -56,42 +56,6 @@
                 </excludes>
             </resource>
         </resources>
-<!--  [ahuber] possibly no longer required -->
-<!--         <pluginManagement> -->
-<!--             <plugins> -->
-<!--                 This plugin's configuration is used to store Eclipse m2e 
settings only. It has no influence on the Maven build itself. -->
-<!--                 <plugin> -->
-<!--                     <groupId>org.eclipse.m2e</groupId> -->
-<!--                     <artifactId>lifecycle-mapping</artifactId> -->
-<!--                     <version>1.0.0</version> -->
-<!--                     <configuration> -->
-<!--                         <lifecycleMappingMetadata> -->
-<!--                             <pluginExecutions> -->
-<!--                                 <pluginExecution> -->
-<!--                                     <pluginExecutionFilter> -->
-<!--                                         <groupId> -->
-<!--                                             org.datanucleus -->
-<!--                                         </groupId> -->
-<!--                                         <artifactId> -->
-<!--                                             datanucleus-maven-plugin -->
-<!--                                         </artifactId> -->
-<!--                                         <versionRange> -->
-<!--                                             [4.0.0-release,) -->
-<!--                                         </versionRange> -->
-<!--                                         <goals> -->
-<!--                                             <goal>enhance</goal> -->
-<!--                                         </goals> -->
-<!--                                     </pluginExecutionFilter> -->
-<!--                                     <action> -->
-<!--                                         <ignore /> -->
-<!--                                     </action> -->
-<!--                                 </pluginExecution> -->
-<!--                             </pluginExecutions> -->
-<!--                         </lifecycleMappingMetadata> -->
-<!--                     </configuration> -->
-<!--                 </plugin> -->
-<!--             </plugins> -->
-<!--         </pluginManagement> -->
     </build>
 
     <dependencies>
diff --git a/scripts/verify-isis-release.sh b/scripts/verify-isis-release.sh
deleted file mode 100755
index 0d7d95f..0000000
--- a/scripts/verify-isis-release.sh
+++ /dev/null
@@ -1,108 +0,0 @@
-#!/bin/bash
-# Instructions:
-# -Create an empty directory
-# -Put a url.txt file in it containing a list of all the urls of the zip files
-# -Run this script
-
-_execmustpass(){
-    echo $@
-    $@
-    status=$?
-    if [ $status -eq 0 ] || [ $? -eq 0 ]; then
-        return;
-    fi
-    echo "Command $@ failed! [error $status] Exiting..."
-    exit 10
-}
-
-_execmayfail(){
-    echo $@
-    $@
-    status=$?
-    if [ $status -eq 0 ] || [ $? -eq 0 ]; then
-        return;
-    fi
-    echo "Command $@ failed! [error $status] But continuing anyway..."
-}
-
-_download(){
-    for fil in `cat *.txt`
-    do
-        echo 'Downloading '$fil
-        _execmustpass $download_cmd $fil
-        _execmustpass $download_cmd $fil.asc
-    done
-}
-
-_verify(){
-    for zip in *.zip
-    do 
-        echo 'Verifying '$zip   
-        _execmustpass gpg --verify $zip.asc $zip 
-    done
-}
-
-_unpack(){
-    echo 'Unpacking '
-    set -f
-    _execmustpass unzip -q '*.zip'
-    set +f
-}
-
-_fetch_dependencies(){
-    _execmayfail mvn dependency:go-offline
-}
-
-_build(){
-    echo 'Removing Isis from local repo '$module
-    rm -rf ~/.m2/repository/org/apache/isis
-    for module in ./isis*/ ./*archetype*/
-    do
-        cd $module
-        grep -q "Isis Core" pom.xml
-        retcode=$?
-        if [  $retcode -eq 0 ]
-        then
-            echo 'Building Core '$module
-            _fetch_dependencies
-            _execmustpass mvn clean install -o
-        else
-            echo 'Building Module '$module
-            _execmustpass mvn clean install $offline
-        fi
-               cd ..
-    done
-}
-
-if [[ $@ == *online* ]]
-then
-    echo "Enabling online mode."
-       offline=
-else
-    echo "Enabling offline mode. Use '$0 --online' to use online mode."
-       offline=-o
-fi
-
-# check the environment
-# Check for curl or wget
-download_cmd=
-curl --version > /dev/null 2>&1
-if [[ $? -eq 0 ]]; then
-    download_cmd=curl -L -O
-fi 
-if [[ -z "$download_cmd" ]]; then
-    wget --version > /dev/null 2>&1
-    if [[ $? -eq 0 ]]; then
-        download_cmd=wget
-    else
-        echo "No downloader found.. exitting.."
-        exit 11
-    fi 
-fi
-
-# The work starts here 
-_download
-_verify
-_unpack
-_build
-
diff --git a/todo-deprecation-list.txt b/todo-deprecation-list.txt
index 1d54d15..909b44d 100644
--- a/todo-deprecation-list.txt
+++ b/todo-deprecation-list.txt
@@ -1,6 +1,21 @@
 
+for 2.0.0-M2
 
 
+remove:
+- @MemberGroupLayout
+- contributed domain services (use mixins instead)
+
+to change:
+- automatically wrap domain services (perhaps behind a config property)
+- automatically infer \@Programmatic for all \@DomainService(nature=DOMAIN)
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+the stuff below here was working notes for 2.0.0-M1, not necessarily up to 
date.
+
 
 TO REMOVE:
 
@@ -25,13 +40,10 @@ org.apache.isis.applib.services.memento  (19 usages found)
 
 
 Also for 2.0.0, new features/deprecations:
-    automatically wrap domain services (perhaps behind a config property)
-    automatically infer \@Programmatic for all \@DomainService(nature=DOMAIN)
     deprecate use of guava predicates, but don't remove (too big a change, 
weren't deprecated previously)
     deprecate FixtureScripts service with view to removing from applib ... the 
framework provides an implementation by default
     get rid of automatic initialization of fields (perhaps behind a config 
property)
     deprecate the Apache Isis' DateTime classes for removal in the future) ... 
and probably all of the custom value types, subclasses of Magnitude
-    flag to make @Action mandatory, @Programmatic the default
     merge metamodel and runtime
     remove *Installer
 
@@ -39,6 +51,10 @@ Also for 2.0.0, new features/deprecations:
 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
+1.16.2
+- flag to make @Action mandatory, @Programmatic the default
+
+
 OTHER STUFF:
 
 
@@ -190,128 +206,6 @@ org.apache.isis.applib
 
 
 
-org.apache.isis.applib.annotation
-
-    ActionInteraction.java  - entire annotation, use @Action(domainEvent=...)
-    CollectionInteraction.java - entire annotation, use 
@Collection(domainEvent=...)
-    PostsActionInvokedEvent.java - entire annotation, use 
@Action(domainEvent=...) instead
-    PostsCollectionAddedToEvent.java - entire annotation, use 
@Collection(domainEvent=...) instead.
-    PostsCollectionRemovedFromEvent.java - entire annotation, use 
@Collection(domainEvent=...) instead.
-    PostsPropertyChangedEvent.java - entire annotation, use 
@Property(domainEvent=...) instead.
-    PropertyInteraction.java - entire annotation, use 
@Property(domainEvent=...) instead.
-
-    Action.java
-        publishingPayloadFactory()  - attribute; use the simpler 
PublisherService SPI instead
-    DomainObject.java
-        publishingPayloadFactory() - attribute, use the simpler 
PublisherService SPI instead
-    PublishedAction.java - entire annotation, use @Action(publishing=...) 
instead
-    PublishedObject.java - entire annotation, use 
@DomainObject(publishing=...) instead
-    PublishingPayloadFactoryForAction.java - entire annotation, replaced with 
simpler PublisherService SPI
-    PublishingPayloadFactoryForObject.java - entire annotation, replaced with 
simpler PublisherService SPI
-
-
-    AutoComplete.java - entire annotation, use 
@DomainObject(autoComplete...=...)
-
-    Bookmarkable.java - entire annotation, use 
@DomainObjectLayout(bookmarking=...)
-
-    Bulk.java - entire annotation, use @Action(invokeOn=...)
-    Bulk.InteractionContext - entire service, use ActionInvocationContext 
service instead
-
-    Command.java - entire annotation, use @Action(command=...) instead
-
-    Disabled.java - entire annotation, use 
@Property(editingDisabledReason=...) instead
-    Hidden.java - entire annotation, use @Property(hidden=...), 
@Collection(hidden=...), @Action(hidden=...)
-
-    ActionSemantics.java  - entire annotation, use @Action(semantics=...)
-    Idempotent.java - entire annotation, use @Action(semantics=...) instead.
-    QueryOnly.java - entire annotation, use @Action(semantics=...) instead.
-
-    ActionOrder.java - entire annotation, use @MemberOrder instead
-    FieldOrder.java - entire annotation, use @MemberOrder instead
-
-    Aggregated.java - entire annotation, not supported internally
-
-    Audited.java - entire annotation, use @DomainObject(audited=...)
-
-    Bounded.java - entire annotation, use @DomainObject(bounded=...)
-
-    CollectionLayout.java
-        render() - use @CollectionLayout(defaultView=...) instead
-    RenderType.java - supporting enum for @Render annotation
-    Render.java - entire annotation, use @CollectionLayout(defaultView=...) 
instead
-    Resolve.java - entire annotation, use @CollectionLayout(defaultView=...) 
instead
-
-    CssClass.java - entire annotation, use @XxxLayout(cssClass=...) instead, 
where Xxx is Property, Collection, Action, Parameter, DomainObject, ViewModel
-    CssClassFa.java - entire annotation, use @XxxLayout(cssClass=...) instead, 
where Xxx is Property, Collection, Action, Parameter, DomainObject, ViewModel
-
-    Debug.java - entire annotation, use @Action#(restrictTo=...) instead
-    Exploration.java - entire annotation, use @Action(restrictTo=....) instead
-    Prototype.java  - entire annotation, use @Action(restrictTo=....) instead
-
-    DescribedAs.java - entire annotation, use @XxxLayout(describedAs=...) 
instead
-
-    Ignore.java - entire annotation, use @Programmatic instead.
-
-    Immutable.java - entire annotation, use @DomainObject(editing=...) instead
-
-    Mask.java - entire annotation, not supported by either Wicket viewer or RO 
viewer
-    MaxLength.java - entire annotation, use @Property(maxLength=...) and 
@Parameter(maxLength=...)
-    MultiLine.java - entire annotation, use @PropertyLayout(multiLine=...) and 
@ParameterLayout(multiLine=...) instead.
-    Named.java - entire annotation, use @XxxLayout(named=...) instead, where 
Xxx is Property, Collection, Action, Parameter, DomainObject, ViewModel
-    Plural.java - entire annotation, use @DomainObjectLayout(plural=...) 
instead
-
-    MemberGroups.java - entire annotation, use Xxx.layout.xml instead
-
-    MustSatisfy.java - entire annotation, use @Property(mustSatisfy=....) or 
@Parameter(mustSatisfy=...) instead
-
-    RegEx.java - entire annotation, use @Property(regexPatternFlags=...) or 
@Parameter(regexPatternFlags=...) instead;
-
-
-    RenderedAsDayBefore.java - entire annotation, use 
@PropertyLayout(renderedAsDayBefore=...) and 
@ParameterLayout(renderedAsDayBefore=...)
-
-    Paged.java - entire annotation, use @DomainObjectLayout(paged=...) or 
@CollectionLayout(paged=...) instead.
-    SortedBy.java - entire annotation, use @CollectionLayout(sortedBy=...) 
instead
-
-    TypicalLength.java - entire annotation, use 
@PropertyLayout(typicalLength=...) instead.
-
-
-    TypeOf.java - entire annotation, use @Collection(typeOf=...) or 
@Action(typeOf=...) instead.
-
-
-    Mandatory.java - entire annotation, use @Property(optionality=...) and 
@Parameter(optionality=...), or @javax.annotations.Nullable
-    Optional.java - entire annotation, use @Property(optionality=...) and 
@Parameter(optionality=...), or @javax.annotations.Nullable
-
-
-    NotInServiceMenu.java - entire annotation, use @DomainService(nature=...) 
or mixins instead.
-
-    NotContributed.java - entire annotation, use @DomainService(nature=...) or 
mixins instead.
-
-    NotPersisted.java - entire annotation, use @Property(notPersisted=...) 
instead
-
-    NotPersistable.java - entire annotation, not supported and does nothing
-
-    Parameter.java
-        minLength() attribute; not supported.  For autocomplete, use 
@MinLength annotation.
-
-    ObjectType.java - entire annotation, use @DomainObject(objectType=...) or 
@javax.jdo.annotations.Discriminator instead.
-
-    When.java - entire enum, no replacement (believe is unused within the 
framwork)
-
-
-
-org.apache.isis.applib.marker - remove these marker interfaces (tend to use 
annotations in preference)
-
-    Auditable.java
-    Bounded.java
-
-    NotPersistable.java
-    ProgramPersistable.java
-
-    AlwaysImmutable.java
-    ImmutableOncePersisted.java
-    ImmutableUntilPersisted.java
-    NeverImmutable.java
-
 
 
 

Reply via email to