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

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 39f0e89  ISIS-2336: fixing broken links and anchors
     new 1207644  Merge pull request #184 from ahus1/ISIS-2336-fix-broken-links
39f0e89 is described below

commit 39f0e89eb3f20fda4b181994ad1bdf9ea4609160
Author: Alexander Schwartz <[email protected]>
AuthorDate: Tue Sep 8 23:19:54 2020 +0200

    ISIS-2336: fixing broken links and anchors
---
 .../comguide/modules/ROOT/pages/cutting-a-release.adoc       |  4 ++--
 antora/components/conguide/modules/ROOT/nav.adoc             |  2 +-
 .../components/conguide/modules/ROOT/pages/contributing.adoc |  6 +++---
 .../docs/modules/ROOT/pages/going-deeper/books.adoc          |  4 ++--
 .../docs/modules/ROOT/pages/more-thanks/more-thanks.adoc     |  2 +-
 .../ROOT/pages/what-is-apache-isis/powered-by/commapp.adoc   |  4 ++--
 .../ROOT/pages/what-is-apache-isis/powered-by/cqnz.adoc      |  2 +-
 .../ROOT/pages/what-is-apache-isis/powered-by/estatio.adoc   |  2 +-
 .../what-is-apache-isis/powered-by/gesconsultor-grc.adoc     |  8 ++++----
 .../{plantuml-stereotypes.adoc => plantuml-stereotypes.puml} |  0
 api/adoc/userguide/modules/fun/pages/modules.adoc            |  2 +-
 .../modules/fun/pages/object-members/collections.adoc        |  2 +-
 api/adoc/userguide/modules/fun/pages/overview/modules.adoc   |  4 ++--
 .../modules/fun/pages/overview/types-of-domain-objects.adoc  |  2 +-
 api/adoc/userguide/modules/fun/pages/ui/menubars-layout.adoc |  2 +-
 api/adoc/userguide/modules/fun/pages/ui/object-layout.adoc   |  8 ++++----
 .../src/main/adoc/modules/applib-ant/pages/Column.adoc       |  3 ++-
 .../src/main/adoc/modules/applib-ant/pages/DomainObject.adoc |  2 +-
 .../pages/DomainObject/persistingLifecycleEvent.adoc         |  2 +-
 .../pages/DomainObject/removingLifecycleEvent.adoc           |  2 +-
 .../pages/DomainObject/updatingLifecycleEvent.adoc           |  2 +-
 .../src/main/adoc/modules/applib-ant/pages/Nullable.adoc     |  4 ++--
 .../src/main/adoc/modules/applib-ant/pages/Parameter.adoc    |  4 ++--
 .../adoc/modules/applib-ant/pages/Parameter/fileAccept.adoc  |  4 ++--
 .../src/main/adoc/modules/applib-ant/pages/Property.adoc     |  4 ++--
 .../adoc/modules/applib-ant/pages/Property/fileAccept.adoc   |  2 +-
 .../adoc/modules/applib-classes/pages/layout/menubars.adoc   |  4 ++--
 .../pages/roles-mixins-contributees/mixins.adoc              |  2 +-
 .../main/adoc/modules/applib-svc/pages/AuditerService.adoc   |  2 +-
 .../main/adoc/modules/applib-svc/pages/CommandService.adoc   |  2 +-
 .../adoc/modules/applib-svc/pages/GridLoaderService.adoc     |  2 +-
 .../src/main/adoc/modules/applib-svc/pages/GridService.adoc  |  4 ++--
 .../adoc/modules/applib-svc/pages/InteractionContext.adoc    |  2 +-
 .../src/main/adoc/modules/applib-svc/pages/JaxbService.adoc  |  2 +-
 .../main/adoc/modules/applib-svc/pages/LayoutService.adoc    |  2 +-
 .../main/adoc/modules/applib-svc/pages/PublisherService.adoc |  4 ++--
 api/applib/src/main/adoc/modules/applib-svc/pages/about.adoc |  4 ++--
 .../src/main/adoc/modules/metamodel/pages/class-diagram.adoc |  2 +-
 .../pages/InteractionDtoServiceInternal.adoc                 |  2 +-
 .../audit-trail/adoc/modules/audit-trail/pages/about.adoc    |  4 ++--
 .../secman/adoc/modules/secman/pages/shiro-realm.adoc        |  4 ++--
 .../secman/adoc/modules/secman/partials/module-nav.adoc      | 12 ++++++------
 .../shiro/pages/about/enhanced-wildcard-permission.adoc      |  2 +-
 .../src/main/adoc/modules/shiro/pages/about/ini-realm.adoc   |  2 +-
 .../ROOT/pages/hints-and-tips/restful-image-property.adoc    |  2 +-
 .../adoc/modules/ROOT/pages/features/blob-attachments.adoc   |  2 +-
 46 files changed, 73 insertions(+), 72 deletions(-)

diff --git 
a/antora/components/comguide/modules/ROOT/pages/cutting-a-release.adoc 
b/antora/components/comguide/modules/ROOT/pages/cutting-a-release.adoc
index 4f929ad..1190121 100644
--- a/antora/components/comguide/modules/ROOT/pages/cutting-a-release.adoc
+++ b/antora/components/comguide/modules/ROOT/pages/cutting-a-release.adoc
@@ -8,12 +8,12 @@ The release process consists of:
 
 * the release manager cutting the release (documented below)
 * Members of the Apache Isis PMC 
xref:comguide:ROOT:verifying-releases.adoc[verifying] and voting on the release
-* the release manager performing post-release tasks, for either a 
xref:comguide:ROOT:post-release-successful.adoc.adoc[successful] or an 
xref:comguide:ROOT:post-release-unsuccessful[unsuccessful] vote.
+* the release manager performing post-release tasks, for either a 
xref:comguide:ROOT:post-release-successful.adoc[successful] or an 
xref:comguide:ROOT:post-release-unsuccessful.adoc[unsuccessful] vote.
 
 Apache Isis itself is released in one go, everything is ultimately a child of 
`core-parent/pom.xml` (relative to the 
link:https://github.com/apache/isis[source code root]).
 This section details the process for formally releasing this module.
 
-The subsequent sections describe how other committers can 
xref:comguide:ROOT:verifying-releases.adoc.adoc[verify a release] and how the 
release manager can then perform xref:comguide:ROOT:post-release[post-release] 
activities and set up for the next development iteration.
+The subsequent sections describe how other committers can 
xref:comguide:ROOT:verifying-releases.adoc[verify a release] and how the 
release manager can then perform 
xref:comguide:ROOT:post-release-successful.adoc[post-release] activities and 
set up for the next development iteration.
 
 If you've not performed a release before, then note that there are some 
configuration xref:comguide:ROOT:release-process-prereqs.adoc[prerequisites] 
that must be configured first.
 In particular, you'll need signed public/private keys, and the ASF Nexus 
staging repo inlocal `~/.m2/settings.xml` file.
diff --git a/antora/components/conguide/modules/ROOT/nav.adoc 
b/antora/components/conguide/modules/ROOT/nav.adoc
index 9f7fa37..c007a66 100644
--- a/antora/components/conguide/modules/ROOT/nav.adoc
+++ b/antora/components/conguide/modules/ROOT/nav.adoc
@@ -4,5 +4,5 @@
 * xref:contributing.adoc[Contributing]
 * xref:building-apache-isis.adoc[Building Apache Isis]
 * xref:building-docs-and-website.adoc[Building Docs and Website]
-* xref:asciidoc-syntax.adoc[Asciidoc Syntax]
+* xref:documentation:asciidoc-syntax.adoc[Asciidoc Syntax]
 * xref:agilej.adoc[AgileJ]
diff --git a/antora/components/conguide/modules/ROOT/pages/contributing.adoc 
b/antora/components/conguide/modules/ROOT/pages/contributing.adoc
index b7c9671..20e8ec5 100644
--- a/antora/components/conguide/modules/ROOT/pages/contributing.adoc
+++ b/antora/components/conguide/modules/ROOT/pages/contributing.adoc
@@ -8,7 +8,7 @@
 
 
 This page explains how you can contribute to Apache Isis.
-You'll probably also want xref:setupguide:ROOT:ide.adoc[set up your IDE] and 
learn xref:conguide:ROOT:building-apache-isis.adoc[how to build Apache Isis].
+You'll probably also want xref:setupguide:ROOT:about.adoc[set up your IDE] and 
learn xref:conguide:ROOT:building-apache-isis.adoc[how to build Apache Isis].
 
 Thanks for considering to help out, your contributions are appreciated!
 
@@ -32,7 +32,7 @@ That is:
 * note the asymmetry here: the `upstream` repo (the Apache github repo) is 
*not* the same as the `origin` repo (your fork).
 . you work on your changes locally; when done, you push them to your github 
fork
 . to contribute back a change, raise a 
https://issues.apache.org/jira/browse/ISIS[JIRA] ticket, and ensure your commit 
message is in the form: `ISIS-nnnn: ...` so that changes can be tracked (more 
discussion on this point below).
-In any case, before you decide to start hacking with Apache Isis, it's always 
worth creating a ticket in JIRA and then have a discussion about it on the 
xref:docs:support:mailing-list.adoc#mailing-lists#[mailing lists].
+In any case, before you decide to start hacking with Apache Isis, it's always 
worth creating a ticket in JIRA and then have a discussion about it on the 
xref:docs:support:mailing-list.adoc[mailing lists].
 . Use github to raise a 
https://help.github.com/articles/using-pull-requests/[pull request] for your 
feature
 . An Apache Isis committer will review your change, and apply it if suitable.
 
@@ -200,7 +200,7 @@ This will create a corresponding branch in the remote 
github repo.
 If you use `gitk --all`, you'll also see a `remotes/origin/ISIS-123-blobs` 
branch.
 
 Then, use github to raise a 
https://help.github.com/articles/using-pull-requests/[pull request].
-Pull requests sent to the Apache GitHub repositories will forward a pull 
request e-mail to the xref:docs:support:mailing-list.adoc#mailing-lists#[dev 
mailing list].
+Pull requests sent to the Apache GitHub repositories will forward a pull 
request e-mail to the xref:docs:support:mailing-list.adoc[dev mailing list].
 You'll probably want to sign up to the dev mailing list first before issuing 
your first pull request (though that isn't mandatory).
 
 The process to raise the pull request, broadly speaking:
diff --git a/antora/components/docs/modules/ROOT/pages/going-deeper/books.adoc 
b/antora/components/docs/modules/ROOT/pages/going-deeper/books.adoc
index dbd53df..7a7fb26 100644
--- a/antora/components/docs/modules/ROOT/pages/going-deeper/books.adoc
+++ b/antora/components/docs/modules/ROOT/pages/going-deeper/books.adoc
@@ -16,7 +16,7 @@ If the idea of naked objects is of interest, then there are a 
couple of books on
 Richard Pawson and Robert Matthews, Wiley 2002
 
 
-image::books/nakedobjects-book.jpg[width="159px",link="{imagesdir}/books/nakedobjects-book.jpg"]
+image::going-deeper/books/nakedobjects-book.jpg[width="159px",link="{imagesdir}/books/nakedobjects-book.jpg"]
 
 
 This book describes the original ideas of Naked Objects.
@@ -38,7 +38,7 @@ The book is freely available online 
http://www.nakedobjects.org/book/[here]. Or,
 
 Dan Haywood, Pragmatic Bookshelf 2009
 
-image::books/dhnako.jpg[width="167px",link="{imagesdir}/books/dhnako.jpg"]
+image::going-deeper/books/dhnako.jpg[width="167px",link="{imagesdir}/books/dhnako.jpg"]
 
 This more recent book draws the parallel between domain-driven design and 
Naked Objects (4.0).
 In the spirit of the Pragmatic Bookshelf, it's a practical, hands-on sort of 
book, building up a case study as it goes and encouraging you to build your own 
app as you go.
diff --git 
a/antora/components/docs/modules/ROOT/pages/more-thanks/more-thanks.adoc 
b/antora/components/docs/modules/ROOT/pages/more-thanks/more-thanks.adoc
index 6e99f17..76c7c68 100644
--- a/antora/components/docs/modules/ROOT/pages/more-thanks/more-thanks.adoc
+++ b/antora/components/docs/modules/ROOT/pages/more-thanks/more-thanks.adoc
@@ -12,7 +12,7 @@ In addition to the 
http://www.apache.org/foundation/thanks.html[support given to
 
 
 |image::more-thanks/ecp.png[link="http://www.eurocommercialproperties.com";]
-|Eurocommercial Properties, for sponsoring the development of Apache Isis in 
support of the link:./powered-by.html[Estatio] estate management application.  
Our heart-felt thanks.
+|Eurocommercial Properties, for sponsoring the development of Apache Isis in 
support of the xref:ROOT:what-is-apache-isis/powered-by/estatio.adoc[Estatio] 
estate management application.  Our heart-felt thanks.
 
 
 |image::more-thanks/s101_170.png[link="http://structure101.com";]
diff --git 
a/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/commapp.adoc
 
b/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/commapp.adoc
index ec3d8ec..68ef1c2 100644
--- 
a/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/commapp.adoc
+++ 
b/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/commapp.adoc
@@ -1,14 +1,14 @@
 = CommApp
 
 :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 [...]
-:page-partial:r
+:page-partial:
 
 // TODO: V2: need to update these, they are getting stale.
 
 CommApp is an application whose domain is that of managing businesses 
themselves, specifically the commercial aspects of a business.
 You can get a feel for it from this screenshot:
 
-image::powered-by/commapp/screenshot-1.png[width="900px",link="{imagesdir}/powered-by/commapp/screenshot-1.png"]
+image::what-is-apache-isis/powered-by/commapp/screenshot-1.png[width="900px",link="{imagesdir}/what-is-apache-isis/powered-by/commapp/screenshot-1.png"]
 
 which shows how the app integrates a number of the (non-ASF) 
link:https://platform.incode.org[Incode Platform^] components (excel, 
fullcalendar2, gmap3 and wickedcharts).
 
diff --git 
a/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/cqnz.adoc
 
b/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/cqnz.adoc
index 2f3f49e..49f811c 100644
--- 
a/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/cqnz.adoc
+++ 
b/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/cqnz.adoc
@@ -12,7 +12,7 @@ ____
 enables people like you and me to express our lives and experiences in the 
form of stories, streams or CQNZs, sharing the most exciting, thrilling and 
contemplative moments using photographs as the core element of interaction with 
others.
 ____
 
-image::powered-by/cqnz/cqnz-advert.png[width="900px",link="{imagesdir}/powered-by/cqnz/cqnz-advert.png"]
+image::what-is-apache-isis/powered-by/cqnz/cqnz-advert.png[width="900px",link="{imagesdir}/what-is-apache-isis/powered-by/cqnz/cqnz-advert.png"]
 
 == Underlying Technology
 
diff --git 
a/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/estatio.adoc
 
b/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/estatio.adoc
index 2487513..6aa88c1 100644
--- 
a/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/estatio.adoc
+++ 
b/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/estatio.adoc
@@ -19,7 +19,7 @@ It would also be able to expand its scope over time to 
support more of the compa
 
 The application developed, and deployed initially in Italy, is called Estatio:
 
-image::powered-by/estatio/estatio-1.png[width="900px",link="{imagesdir}/powered-by/estatio/estatio-1.png"]
+image::what-is-apache-isis/powered-by/estatio/estatio-1.png[width="900px",link="{imagesdir}/what-is-apache-isis/powered-by/estatio/estatio-1.png"]
 
 The development team for the original implementation consisted of just two 
developers (both of whom are Apache Isis committers); the first version of the 
application was developed over 2 years and 2 man-years effort.
 Since the initial release - as the scope of the application has grown - the 
team has expanded to take on a further part-time developer and also some 
interns.
diff --git 
a/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/gesconsultor-grc.adoc
 
b/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/gesconsultor-grc.adoc
index 378fdb2..c7e2945 100644
--- 
a/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/gesconsultor-grc.adoc
+++ 
b/antora/components/docs/modules/ROOT/pages/what-is-apache-isis/powered-by/gesconsultor-grc.adoc
@@ -38,11 +38,11 @@ viewer.  More on this below.
 Allows a company to model its _Business_, __IT Asset__s and their 
dependencies.  The custom viewer in this case exposes a
 classical form-like interface:
 
-image::powered-by/gesconsultor-grc/fig-1-custom-viewer.png[width="800px",link="{imagesdir}/powered-by/gesconsultor-grc/fig-1-custom-viewer.png"]
+image::what-is-apache-isis/powered-by/gesconsultor-grc/fig-1-custom-viewer.png[width="800px",link="{imagesdir}/what-is-apache-isis/powered-by/gesconsultor-grc/fig-1-custom-viewer.png"]
 
 Alternatively, a custom drag-n-drop visual interface can be used:
 
-image::powered-by/gesconsultor-grc/fig-2-custom-drag-n-drop-interface.png[width="800px",link="{imagesdir}/powered-by/gesconsultor-grc/fig-2-custom-drag-n-drop-interface.png"]
+image::what-is-apache-isis/powered-by/gesconsultor-grc/fig-2-custom-drag-n-drop-interface.png[width="800px",link="{imagesdir}/what-is-apache-isis/powered-by/gesconsultor-grc/fig-2-custom-drag-n-drop-interface.png"]
 
 This is implemented with the Dojo javascript library, interfacing to Apache 
Isis-managed domain objects.
 
@@ -53,7 +53,7 @@ This is implemented with the Dojo javascript library, 
interfacing to Apache Isis
 Allows a company to manage __Risk Scenario__s through a _Risk Register_, and 
execute a full ISO 31000 compliant _Risk Assessment_.
 A custom UI visualizes these risks as a heatmap:
 
-image::powered-by/gesconsultor-grc/fig-3-custom-ui-analyzing-risk-scenarios.png[width="800px",link="{imagesdir}/powered-by/gesconsultor-grc/fig-3-custom-ui-analyzing-risk-scenarios.png"]
+image::what-is-apache-isis/powered-by/gesconsultor-grc/fig-3-custom-ui-analyzing-risk-scenarios.png[width="800px",link="{imagesdir}/what-is-apache-isis/powered-by/gesconsultor-grc/fig-3-custom-ui-analyzing-risk-scenarios.png"]
 
 
 === Project Management
@@ -61,7 +61,7 @@ 
image::powered-by/gesconsultor-grc/fig-3-custom-ui-analyzing-risk-scenarios.png[
 Allows users to visually manage their projects and tasks through a KanBan-like 
interface.
 Again, the viewer provides drag-n-drop capabilities:
 
-image::powered-by/gesconsultor-grc/fig-4-managing-projects.png[width="400px",link="{imagesdir}/powered-by/gesconsultor-grc/fig-4-managing-projects.png"]
+image::what-is-apache-isis/powered-by/gesconsultor-grc/fig-4-managing-projects.png[width="400px",link="{imagesdir}/what-is-apache-isis/powered-by/gesconsultor-grc/fig-4-managing-projects.png"]
 
 
 === Dashboard and Indicators
diff --git 
a/antora/components/docs/modules/resources/partials/plantuml-stereotypes.adoc 
b/antora/components/docs/modules/resources/partials/plantuml-stereotypes.puml
similarity index 100%
rename from 
antora/components/docs/modules/resources/partials/plantuml-stereotypes.adoc
rename to 
antora/components/docs/modules/resources/partials/plantuml-stereotypes.puml
diff --git a/api/adoc/userguide/modules/fun/pages/modules.adoc 
b/api/adoc/userguide/modules/fun/pages/modules.adoc
index a5122a8..23931ee 100644
--- a/api/adoc/userguide/modules/fun/pages/modules.adoc
+++ b/api/adoc/userguide/modules/fun/pages/modules.adoc
@@ -42,7 +42,7 @@ We can see this for example in the `testing` module of the 
Excel library (artifa
 [plantuml]
 .Testing submodule depends upon Applib submodule
 ----
-include::docs:resources:partial$plantuml-stereotypes.adoc[]
+include::docs:resources:partial$plantuml-stereotypes.puml[]
 
 package excel-applib {
 }
diff --git 
a/api/adoc/userguide/modules/fun/pages/object-members/collections.adoc 
b/api/adoc/userguide/modules/fun/pages/object-members/collections.adoc
index f22e362..d7b4894 100644
--- a/api/adoc/userguide/modules/fun/pages/object-members/collections.adoc
+++ b/api/adoc/userguide/modules/fun/pages/object-members/collections.adoc
@@ -41,7 +41,7 @@ Bidirectional one-to-many collections are one of the most 
common types of associ
 [plantuml]
 .Parent has many Children, each Child has one Parent.
 ----
-include::docs:resources:partial$plantuml-stereotypes.adoc[]
+include::docs:resources:partial$plantuml-stereotypes.puml[]
 
 class ParentObject
 class ChildObject
diff --git a/api/adoc/userguide/modules/fun/pages/overview/modules.adoc 
b/api/adoc/userguide/modules/fun/pages/overview/modules.adoc
index 55623e5..25a45f4 100644
--- a/api/adoc/userguide/modules/fun/pages/overview/modules.adoc
+++ b/api/adoc/userguide/modules/fun/pages/overview/modules.adoc
@@ -78,7 +78,7 @@ We could surface the set of invoices for a customer using a 
`Customer_invoices`
 [plantuml]
 .`invoices` module contributes to `customers`
 ----
-include::docs:resources:partial$plantuml-stereotypes.adoc[]
+include::docs:resources:partial$plantuml-stereotypes.puml[]
 
 package invoice {
     class Customer_invoices <<mixin>>
@@ -102,7 +102,7 @@ We can therefore attach documents to a `Customer` by having 
`Customer` implement
 [plantuml]
 .`customers` depends upon contributions of `documents`
 ----
-include::docs:resources:partial$plantuml-stereotypes.adoc[]
+include::docs:resources:partial$plantuml-stereotypes.puml[]
 
 package documents {
     interface DocumentHolder <<role>>
diff --git 
a/api/adoc/userguide/modules/fun/pages/overview/types-of-domain-objects.adoc 
b/api/adoc/userguide/modules/fun/pages/overview/types-of-domain-objects.adoc
index 26f8327..3e83470 100644
--- a/api/adoc/userguide/modules/fun/pages/overview/types-of-domain-objects.adoc
+++ b/api/adoc/userguide/modules/fun/pages/overview/types-of-domain-objects.adoc
@@ -218,7 +218,7 @@ These DTOs are still usable as "regular" view models; they 
will render in the xr
 In fact (as the xref:userguide:fun:view-models.adoc#jaxb[programming model] 
section below makes clear), these JAXB-annotated view models are in many 
regards the most powerful of all the alternative ways of writing view models.
 
 It's also worth noting that it is also possible to download the XML (or XSD) 
straight from the UI, useful during development.
-The view model simply needs to implement the 
xref:refguide:applib-cm:classes/mixins.adoc#Dto[`Dto`] marker interface; the 
framework has xref:refguide:applib-cm:classes/mixins.adoc#Dto[mixins] that 
contribute the download actions to the view model.
+The view model simply needs to implement the 
xref:refguide:applib-cm:roles-mixins-contributees/mixins.adoc#Dto[`Dto`] marker 
interface; the framework has 
xref:refguide:applib-cm:roles-mixins-contributees/mixins.adoc#Dto[mixins] that 
contribute the download actions to the view model.
 
 === For REST Clients
 
diff --git a/api/adoc/userguide/modules/fun/pages/ui/menubars-layout.adoc 
b/api/adoc/userguide/modules/fun/pages/ui/menubars-layout.adoc
index e6129f3..751ba45 100644
--- a/api/adoc/userguide/modules/fun/pages/ui/menubars-layout.adoc
+++ b/api/adoc/userguide/modules/fun/pages/ui/menubars-layout.adoc
@@ -97,7 +97,7 @@ There are some disadvantages to using file-based layouts:
 
 * they also suffer from syntactic fragility: an invalid XML document could 
result in no metadata for the entire class.
 
-The `menubars.layout.xml` file is just the serialized form of a 
xref:refguide:applib-cm:classes/layout.adoc[`MenuBars`] layout class defined 
within Apache Isis' applib.
+The `menubars.layout.xml` file is just the serialized form of a 
xref:refguide:applib-cm:layout.adoc[`MenuBars`] layout class defined within 
Apache Isis' applib.
 These are JAXB-annotated classes with corresponding XSD schemas; the upshot of 
that
 is that IDEs such as IntelliJ and Eclipse can provide "intellisense", making 
it easy to author such layout files.
 
diff --git a/api/adoc/userguide/modules/fun/pages/ui/object-layout.adoc 
b/api/adoc/userguide/modules/fun/pages/ui/object-layout.adoc
index 7c9324f..5038dba 100644
--- a/api/adoc/userguide/modules/fun/pages/ui/object-layout.adoc
+++ b/api/adoc/userguide/modules/fun/pages/ui/object-layout.adoc
@@ -14,7 +14,7 @@ File-based layouts offer a number of benefits:
 
 * UI hints can be provided for xref:userguide:fun:mixins.adoc[mixin] 
contributions that are synthesised at runtime.
 
-It is also possible to download an initial `.layout.xml` - capturing any 
existing layout metadata - using the 
xref:refguide:applib-svc:LayoutService.adoc[`LayoutService`] (exposed on the 
prototyping menu) or using a 
xref:refguide:applib-cm:classes/mixins.adoc#Object[mixin action] contributed to 
every domain object.
+It is also possible to download an initial `.layout.xml` - capturing any 
existing layout metadata - using the 
xref:refguide:applib-svc:LayoutService.adoc[`LayoutService`] (exposed on the 
prototyping menu) or using a 
xref:refguide:applib-cm:roles-mixins-contributees/mixins.adoc#Object[mixin 
action] contributed to every domain object.
 
 There are some downsides, though:
 
@@ -24,7 +24,7 @@ There are some downsides, though:
 
 * there is no notion of inheritance, so a `.layout.xml` is required for all 
concrete classes and also for any abstract classes (if used as a collection 
type).
 
-The `Xxx.layout.xml` file is just the serialized form of a 
xref:refguide:applib-cm:classes/layout.adoc[`Grid`] layout class defined within 
Apache Isis' applib.
+The `Xxx.layout.xml` file is just the serialized form of a 
xref:refguide:applib-cm:layout.adoc[`Grid`] layout class defined within Apache 
Isis' applib.
 These are JAXB-annotated classes with corresponding XSD schemas; the upshot of 
that is that IDEs such as IntelliJ and Eclipse can provide "intellisense", 
making iteasy to author such layout files.
 
 == Grids vs Components
@@ -36,7 +36,7 @@ The layout file distinguishes between two types of element:
 
 * those that define common components, of: fieldsets (previously called member 
groups or property groups), properties, collections, actions and also the 
title/icon of the domain object itself.
 
-More information about these classes can be found in 
xref:refguide:applib-cm:classes/layout.adoc[the reference guide].
+More information about these classes can be found in 
xref:refguide:applib-cm:layout.adoc[the reference guide].
 More information on Bootstrap 3's grid system can be found 
link:http://getbootstrap.com/css/#grid[here].
 
 == By Example
@@ -269,5 +269,5 @@ You can then remove the `@MemberOrder` and 
`@Action#associateWith` annotations f
 * if you want to use layout XML file ONLY to describe the grid, then download 
the "minimal" version.
 The grid regions will be empty in this version, and the framework will use the 
`@MemberOrder` and `@Action#associateWith` annotations to bind object members 
to those regions.
 
-If you want to adjust the layout XML for a single domain object, then you can 
use the xref:refguide:applib-cm:classes/mixins.adoc#downloadlayoutxml[mixin 
action] (contributed to every domain object).
+If you want to adjust the layout XML for a single domain object, then you can 
use the 
xref:refguide:applib-cm:roles-mixins-contributees/mixins.adoc#downloadlayoutxml[mixin
 action] (contributed to every domain object).
 
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages/Column.adoc 
b/api/applib/src/main/adoc/modules/applib-ant/pages/Column.adoc
index b2d82ac..9df3feb 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages/Column.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages/Column.adoc
@@ -19,6 +19,7 @@ Therefore ensure that the annotation is placed there.
 
 This section identifies which attributes of `@Column` are recognized and used 
by Apache Isis.
 
+[#nullability]
 == Nullability
 
 The `allowsNull` attribute is used to specify if a property is mandatory or is 
optional.
@@ -117,7 +118,7 @@ public class PartyRelationship {
 
 === Mapping ``Blob``s and ``Clob``s
 
-Isis provides custom value types for 
xref:applib-classes:classes/value-types.adoc#Blob[`Blob`]s and 
xref:applib-classes:classes/value-types.adoc#Clob[`Clob`]s.
+Isis provides custom value types for 
xref:applib-classes:value-types.adoc#Blob[`Blob`]s and 
xref:applib-classes:value-types.adoc#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/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject.adoc 
b/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject.adoc
index e0806ed..35fbd1a 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject.adoc
@@ -87,7 +87,7 @@ The event type to be posted whenever an instance has just 
been loaded from the d
 +
 The event type to be posted whenever an instance is about to be deleted
 
-<.> 
xref:refguide:applib-ant:DomainObject.adoc#updatedlifecycleevent[`updatedLifecycleEvent()`]
+<.> 
xref:refguide:applib-ant:DomainObject.adoc#updatedLifecycleEvent[`updatedLifecycleEvent()`]
 +
 The event type to be posted whenever an instance has just been updated
 
diff --git 
a/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject/persistingLifecycleEvent.adoc
 
b/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject/persistingLifecycleEvent.adoc
index 74cc41b..68637ef 100644
--- 
a/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject/persistingLifecycleEvent.adoc
+++ 
b/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject/persistingLifecycleEvent.adoc
@@ -14,7 +14,7 @@ One possible application is to maintain a full-text search 
database using link:h
 [NOTE]
 ====
 Another use case is to maintain "last updated by"/"last updated at" properties.
-While you can roll your own, note that the framework provides built-in support 
for this use case through the 
xref:applib-classes:classes/roles.adoc#Timestampable[`Timestampable`] role 
interface.
+While you can roll your own, note that the framework provides built-in support 
for this use case through the 
xref:applib-classes:roles-mixins-contributees/roles.adoc#Timestampable[`Timestampable`]
 role interface.
 ====
 
 By default the event raised is `ObjectPersistingEvent.Default`.
diff --git 
a/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject/removingLifecycleEvent.adoc
 
b/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject/removingLifecycleEvent.adoc
index c47298c..f6de85f 100644
--- 
a/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject/removingLifecycleEvent.adoc
+++ 
b/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject/removingLifecycleEvent.adoc
@@ -14,7 +14,7 @@ One possible application is to maintain a full-text search 
database using link:h
 [NOTE]
 ====
 Another use case is to maintain "last updated by"/"last updated at" properties.
-While you can roll your own, note that the framework provides built-in support 
for this use case through the 
xref:applib-classes:classes/roles.adoc#Timestampable[`Timestampable`] role 
interface.
+While you can roll your own, note that the framework provides built-in support 
for this use case through the 
xref:applib-classes:roles-mixins-contributees/roles.adoc#Timestampable[`Timestampable`]
 role interface.
 ====
 
 By default the event raised is `ObjectRemovingEvent.Default`.
diff --git 
a/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject/updatingLifecycleEvent.adoc
 
b/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject/updatingLifecycleEvent.adoc
index 6525726..d3d6fc2 100644
--- 
a/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject/updatingLifecycleEvent.adoc
+++ 
b/api/applib/src/main/adoc/modules/applib-ant/pages/DomainObject/updatingLifecycleEvent.adoc
@@ -15,7 +15,7 @@ One possible application is to maintain a full-text search 
database using link:h
 ====
 Another use case is to maintain "last updated by"/"last updated at" properties.
 While you can roll your own, note that the framework provides built-in support 
for this use case through the
-xref:applib-classes:classes/roles.adoc#Timestampable[`Timestampable`] role 
interface.
+xref:applib-classes:roles-mixins-contributees/roles.adoc#Timestampable[`Timestampable`]
 role interface.
 ====
 
 By default the event raised is `ObjectUpdatingEvent.Default`.
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages/Nullable.adoc 
b/api/applib/src/main/adoc/modules/applib-ant/pages/Nullable.adoc
index 0dc5992..7d87a37 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages/Nullable.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages/Nullable.adoc
@@ -33,13 +33,13 @@ public Customer updateName(@javax.annotation.Nullable final 
String name) {
 Apache Isis does provide several other ways to specify optionality: using the
 xref:refguide:applib-ant:Property.adoc#optionality[`@Property#optionality()`] /
 
xref:refguide:applib-ant:Parameter.adoc#optionality[`@Parameter#optionality()`] 
annotation.
-For properties, the optionality can also be inferred from the 
xref:refguide:applib-ant:Column#allowsNull.adoc[`@Column#allowsNull()`] 
attribute.
+For properties, the optionality can also be inferred from the 
xref:refguide:applib-ant:Column.adoc#nullability[`@Column#allowsNull()`] 
attribute.
 
 [TIP]
 ====
 See the
 xref:refguide:applib-ant:Property.adoc#optionality[`@Property#optionality()`] 
documentation for a much fuller discussion on the relationship between using 
the Apache Isis annotations vs
-xref:refguide:applib-ant:Column#allowsNull.adoc[`@Column#allowsNull()`].
+xref:refguide:applib-ant:Column.adoc#nullability[`@Column#allowsNull()`].
 ====
 
 If more than one method is specified then the framework will validate that 
there are no incompatibilities (and fail to boot otherwise).
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages/Parameter.adoc 
b/api/applib/src/main/adoc/modules/applib-ant/pages/Parameter.adoc
index afa8dda..4fc8b03 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages/Parameter.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages/Parameter.adoc
@@ -12,8 +12,8 @@ 
include::refguide:applib-ant:example$annotation/Parameter.java[tags="refguide"]
 ----
 <.> xref:refguide:applib-ant:Parameter.adoc#fileAccept[`fileAccept()`]
 +
-Hints the file type (media type or file extension) to be uploaded for 
xref:applib-classes:classes/value-types.adoc#Blob[`Blob`]
-or xref:applib-classes:classes/value-types.adoc#Clob[`Clob`]. +
+Hints the file type (media type or file extension) to be uploaded for 
xref:applib-classes:value-types.adoc#Blob[`Blob`]
+or xref:applib-classes:value-types.adoc#Clob[`Clob`]. +
  +
 Note that this does not prevent the user from uploading some other file type; 
rather it merely defaults the file type in the file open dialog.
 
diff --git 
a/api/applib/src/main/adoc/modules/applib-ant/pages/Parameter/fileAccept.adoc 
b/api/applib/src/main/adoc/modules/applib-ant/pages/Parameter/fileAccept.adoc
index ebb5f7f..677dee5 100644
--- 
a/api/applib/src/main/adoc/modules/applib-ant/pages/Parameter/fileAccept.adoc
+++ 
b/api/applib/src/main/adoc/modules/applib-ant/pages/Parameter/fileAccept.adoc
@@ -6,8 +6,8 @@
 
 
 
-The `fileAccept` attribute applies only to 
xref:applib-classes:classes/value-types.adoc#Blob[`Blob`]
-or xref:applib-classes:classes/value-types.adoc#Clob[`Clob`] parameters, 
indicating the type of file to accept when uploading a new value.
+The `fileAccept` attribute applies only to 
xref:applib-classes:value-types.adoc#Blob[`Blob`]
+or xref:applib-classes:value-types.adoc#Clob[`Clob`] parameters, indicating 
the type of file to accept when uploading a new value.
 The attribute is also supported on 
xref:refguide:applib-ant:Property.adoc#fileAccept[properties].
 
 For example:
diff --git a/api/applib/src/main/adoc/modules/applib-ant/pages/Property.adoc 
b/api/applib/src/main/adoc/modules/applib-ant/pages/Property.adoc
index 2e34087..7df9341 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages/Property.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages/Property.adoc
@@ -43,8 +43,8 @@ The reason that this property cannot be modified.
 
 <.> xref:refguide:applib-ant:Property.adoc#fileAccept[`fileAccept()`]
 +
-Hints the file type (media type or file extension) to be uploaded to a 
xref:applib-classes:classes/value-types.adoc#Blob[`Blob`]
- or xref:applib-classes:classes/value-types.adoc#Clob[`Clob`]. +
+Hints the file type (media type or file extension) to be uploaded to a 
xref:applib-classes:value-types.adoc#Blob[`Blob`]
+ or xref:applib-classes:value-types.adoc#Clob[`Clob`]. +
 +
 Note that this does not prevent the user from uploading some other file type; 
rather it merely defaults the file type in the file open dialog.
 
diff --git 
a/api/applib/src/main/adoc/modules/applib-ant/pages/Property/fileAccept.adoc 
b/api/applib/src/main/adoc/modules/applib-ant/pages/Property/fileAccept.adoc
index 32384da..0ede56b 100644
--- a/api/applib/src/main/adoc/modules/applib-ant/pages/Property/fileAccept.adoc
+++ b/api/applib/src/main/adoc/modules/applib-ant/pages/Property/fileAccept.adoc
@@ -5,7 +5,7 @@
 :page-partial:
 
 
-The `fileAccept` attribute applies only to 
xref:applib-classes:classes/value-types.adoc#Blob[`Blob`] or 
xref:applib-classes:classes/value-types.adoc#Clob[`Clob`] parameters, 
indicating the type of file to accept when uploading a new value.
+The `fileAccept` attribute applies only to 
xref:applib-classes:value-types.adoc#Blob[`Blob`] or 
xref:applib-classes:value-types.adoc#Clob[`Clob`] parameters, indicating the 
type of file to accept when uploading a new value.
 The attribute is also supported on 
xref:refguide:applib-ant:Parameter.adoc#fileAccept[parameters].
 
 For example:
diff --git 
a/api/applib/src/main/adoc/modules/applib-classes/pages/layout/menubars.adoc 
b/api/applib/src/main/adoc/modules/applib-classes/pages/layout/menubars.adoc
index 91fffdc..99cd82f 100644
--- a/api/applib/src/main/adoc/modules/applib-classes/pages/layout/menubars.adoc
+++ b/api/applib/src/main/adoc/modules/applib-classes/pages/layout/menubars.adoc
@@ -8,7 +8,7 @@
 The `org.apache.isis.applib.layout.menubars` package and subpackages define a 
number of interfaces classes that allow the layout of domain service actions to 
be organised across menu bars, menus and menu sections.
 
 The classes define a hierarchical structure of menu bars, menus and menu 
sections.
-Similar to the xref:applib-classes:classes/layout.adoc[object layout] classes, 
the concrete menu classes support bootstrap3; support for other layout systems 
is possible.
+Similar to the xref:applib-classes:layout.adoc[object layout] classes, the 
concrete menu classes support bootstrap3; support for other layout systems is 
possible.
 
 The component class `ServiceActionLayoutData` defines action metadata, being 
broadly equivalent to the "layout" annotations for actions, ie 
xref:refguide:applib-ant:ActionLayout.adoc[`@ActionLayout`].
 This is similar to the `ActionLayoutData` component class used for object 
layouts, but also captures the identity of the "owning" domain service.
@@ -59,7 +59,7 @@ The service action class reside in the 
`org.apache.isis.applib.layout.component`
 +
 which correspond to the 
xref:refguide:applib-ant:ActionLayout.adoc[`@ActionLayout`] annotation.
 
-This is similar to `ActionLayoutData` (of the 
xref:applib-classes:classes/layout.adoc[object layout] classes), however it 
also identifies the domain service to which it belongs.
+This is similar to `ActionLayoutData` (of the 
xref:applib-classes:layout.adoc[object layout] classes), however it also 
identifies the domain service to which it belongs.
 (This isn't required for the object layouts because the owner in that case is 
implicit).
 
 
diff --git 
a/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/mixins.adoc
 
b/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/mixins.adoc
index f32630c..158d569 100644
--- 
a/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/mixins.adoc
+++ 
b/api/applib/src/main/adoc/modules/applib-classes/pages/roles-mixins-contributees/mixins.adoc
@@ -4,7 +4,7 @@
 :page-partial:
 
 
-This section defines a number of role interfaces that definea contract for 
some framework-defined mixins.
+This section defines a number of role interfaces that define a contract for 
some framework-defined mixins.
 
 [TIP]
 ====
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/pages/AuditerService.adoc 
b/api/applib/src/main/adoc/modules/applib-svc/pages/AuditerService.adoc
index ed4a634..8a9a561 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/pages/AuditerService.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/pages/AuditerService.adoc
@@ -66,5 +66,5 @@ As its name implies, it uses 
xref:pjdo:ROOT:about.adoc[JDO/DataNucleus] to do th
 The services provided by this module combines very well with the 
xref:refguide:applib-svc:CommandService.adoc[`CommandService`].
 The `CommandService` captures the __cause__ of an interaction (an action was 
invoked, a property was edited), while the `AuditerService` captures the 
__effect__ of that interaction in terms of changed state.
 You may also want to configure the 
xref:refguide:applib-svc:PublisherService.adoc[`PublisherService`], which also 
captures the effect of the interaction but as an event.
-All three of these services collaborate implicitly by way of the 
xref:applib-classes:classes/mixins.adoc#HasUniqueId[`HasUniqueId`] interface.
+All three of these services collaborate implicitly by way of the 
xref:applib-classes:roles-mixins-contributees/contributee.adoc#HasUniqueId[`HasUniqueId`]
 interface.
 
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/pages/CommandService.adoc 
b/api/applib/src/main/adoc/modules/applib-svc/pages/CommandService.adoc
index 5e83704..2b8d4bf 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/pages/CommandService.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/pages/CommandService.adoc
@@ -51,5 +51,5 @@ As discussed above, this service supports the 
xref:refguide:applib-svc:CommandCo
 The services provided by this module combines very well with the 
xref:refguide:applib-svc:AuditerService.adoc[`AuditerService`].
 The `CommandService` captures the __cause__ of an interaction (an action was 
invoked, a property was edited), while the `AuditerService` captures the 
__effect__ of that interaction in terms of changed state.
 You may also want to configure the 
xref:refguide:applib-svc:PublisherService.adoc[`PublisherService`], which also 
captures the effect of the interaction but as an event.
-All three of these services collaborate implicitly by way of the 
xref:applib-classes:classes/mixins.adoc#HasUniqueId[`HasUniqueId`] interface.
+All three of these services collaborate implicitly by way of the 
xref:applib-classes:roles-mixins-contributees/contributee.adoc#HasUniqueId[`HasUniqueId`]
 interface.
 
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/pages/GridLoaderService.adoc 
b/api/applib/src/main/adoc/modules/applib-svc/pages/GridLoaderService.adoc
index 15bc15a..7a2c7eb 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/pages/GridLoaderService.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/pages/GridLoaderService.adoc
@@ -18,7 +18,7 @@ 
include::refguide:applib-svc:example$services/grid/GridLoaderService.java[tags="
 <.> whether dynamic reloading of layouts is enabled.  The default 
implementation enables reloading for prototyping, disables in production
 <.> support metamodel invalidation/rebuilding of spec, eg as called by this 
xref:applib-classes:about.adoc#rebuildMetamodel[Object mixin] action.
 <.> whether any persisted layout metadata (eg a `.layout.xml` file) exists for 
this domain class.
-<.> returns a new instance of a 
xref:applib-classes:classes/layout.adoc#component[`Grid`] for the specified 
domain class, eg as loaded from a `layout.xml` file.
+<.> returns a new instance of a 
xref:applib-classes:layout.adoc#component[`Grid`] for the specified domain 
class, eg as loaded from a `layout.xml` file.
 If none exists, will return null (and the calling 
xref:refguide:applib-svc:GridService.adoc[`GridService`] will use 
xref:refguide:applib-svc:GridSystemService.adoc[`GridSystemService`] to obtain 
a default grid for the domain class).
 <.> Load a specific layout alternative, eg if specified through a `layout()` 
supporting method of the domain object itself.
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/pages/GridService.adoc 
b/api/applib/src/main/adoc/modules/applib-svc/pages/GridService.adoc
index cd4d133..16b134e 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/pages/GridService.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/pages/GridService.adoc
@@ -33,7 +33,7 @@ The default implementation enables reloading for prototyping, 
disables in produc
 <.> support metamodel invalidation/rebuilding of spec, eg as called by this 
xref:applib-classes:about.adoc#rebuildMetamodel[Object mixin] action.
 <.> whether any persisted layout metadata (eg a `.layout.xml` file) exists for 
this domain class.
 Just delegates to corresponding method in 
xref:refguide:applib-svc:GridLoaderService.adoc[`GridLoaderService`].
-<.> returns a new instance of a 
xref:applib-classes:classes/layout.adoc#component[`Grid`] for the specified 
domain class, eg as loaded from a `layout.xml` file.
+<.> returns a new instance of a 
xref:applib-classes:layout.adoc#component[`Grid`] for the specified domain 
class, eg as loaded from a `layout.xml` file.
 If none exists, will return null (and the calling 
xref:refguide:applib-svc:GridService.adoc[`GridService`] will use 
xref:refguide:applib-svc:GridSystemService.adoc[`GridSystemService`] to obtain 
a default grid for the domain class).
 <.> returns a layout alternative, eg if specified through a `layout()` 
supporting method of the domain object itself.
 <.> returns a default grid, eg two columns in ratio 4:8.
@@ -60,5 +60,5 @@ The framework provides a default implementation of this 
service, namely `o.a.i.c
 
 This service calls 
xref:refguide:applib-svc:GridLoaderService.adoc[`GridLoaderService`] and 
xref:refguide:applib-svc:GridSystemService.adoc[`GridSystemService`].
 
-This service is called by 
xref:refguide:applib-svc:LayoutService.adoc[`LayoutService`], exposed in the UI 
through `LayoutServiceMenu` (to download the layout XML as a zip file for all 
domain objects) and the 
xref:applib-classes:classes/mixins.adoc#Object[`downloadLayoutXml()`] mixin (to 
download the layout XML for a single domain
+This service is called by 
xref:refguide:applib-svc:LayoutService.adoc[`LayoutService`], exposed in the UI 
through `LayoutServiceMenu` (to download the layout XML as a zip file for all 
domain objects) and the 
xref:applib-classes:roles-mixins-contributees/mixins.adoc#Object[`downloadLayoutXml()`]
 mixin (to download the layout XML for a single domain
 object).
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/pages/InteractionContext.adoc 
b/api/applib/src/main/adoc/modules/applib-svc/pages/InteractionContext.adoc
index b656dd3..4ceccde 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/pages/InteractionContext.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/pages/InteractionContext.adoc
@@ -21,7 +21,7 @@ Persistent``Interaction``s support several use cases:
 * they enable profiling of the running application (which actions are invoked 
then most often, what is their response time)
 
 * if auditing is configured (using 
xref:refguide:applib-svc:AuditerService.adoc[`AuditerService`]), they provide 
better audit information, since the
-`Interaction.Execution` captures the 'cause' of an interaction and can be 
correlated to the audit records (the "effect" of the interaction) by way of the 
xref:applib-classes:classes/mixins.adoc#HasUniqueId[`transactionId`]
+`Interaction.Execution` captures the 'cause' of an interaction and can be 
correlated to the audit records (the "effect" of the interaction) by way of the 
xref:applib-classes:roles-mixins-contributees/contributee.adoc#HasUniqueId[`transactionId`]
 
 == API
 
diff --git a/api/applib/src/main/adoc/modules/applib-svc/pages/JaxbService.adoc 
b/api/applib/src/main/adoc/modules/applib-svc/pages/JaxbService.adoc
index cb8a05a..7356c51 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/pages/JaxbService.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/pages/JaxbService.adoc
@@ -38,5 +38,5 @@ Apache Isis provides a default implementation of the service, 
`o.a.i.applib.serv
 
 This service is provided as a convenience for applications, but is also used 
internally by the framework to marshall 
xref:refguide:applib-ant:XmlRootElement.adoc[`@XmlRootElement`]-annotated
 xref:userguide:fun:overview.adoc#view-models[view models].
-The functionality to download XML and XSD schemas is also exposed in the UI 
through mixins of the xref:applib-classes:classes/mixins.adoc#Dto[`Dto`] 
interface.
+The functionality to download XML and XSD schemas is also exposed in the UI 
through mixins of the 
xref:applib-classes:roles-mixins-contributees/mixins.adoc#Dto[`Dto`] interface.
 
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/pages/LayoutService.adoc 
b/api/applib/src/main/adoc/modules/applib-svc/pages/LayoutService.adoc
index e655f09..891f3af 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/pages/LayoutService.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/pages/LayoutService.adoc
@@ -77,7 +77,7 @@ The framework provides a default implementation, 
`o.a.i.core.metamodel.services.
 
 The service's functionality is exposed in the UI through a mixin (per object) 
and a menu action (for all objects):
 
-* the xref:applib-classes:classes/mixins.adoc#Object[`Object` mixin] provides 
the ability to download the XML layout for any domain object (entity or view 
model).
+* the 
xref:applib-classes:roles-mixins-contributees/mixins.adoc#Object[`Object` 
mixin] provides the ability to download the XML layout for any domain object 
(entity or view model).
 
 * the `LayoutServiceMenu` provides the ability to download all XML layouts as 
a single ZIP file (in any of the three styles).
 
diff --git 
a/api/applib/src/main/adoc/modules/applib-svc/pages/PublisherService.adoc 
b/api/applib/src/main/adoc/modules/applib-svc/pages/PublisherService.adoc
index 1387554..3350cf2 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/pages/PublisherService.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/pages/PublisherService.adoc
@@ -98,7 +98,7 @@ To indicate that:
 * a changed object should be published is to annotate it with the 
xref:refguide:applib-ant:DomainObject.adoc#publishing[`@DomainObject#publishing()`]
 annotation.
 
 The module also provide services that contribute to the UI.
-If contributions are not required in the UI, these can be suppressed either 
using security or by implementing a 
xref:userguide:btb:about.adoc#vetoing-visibility[vetoing subscriber].
+If contributions are not required in the UI, these can be suppressed either 
using security or by implementing a 
xref:userguide:btb:hints-and-tips/vetoing-visibility.adoc[vetoing subscriber].
 
 
 
@@ -129,7 +129,7 @@ To support these use cases several other services are 
involved:
 The services provided by this module combine very well with the 
xref:refguide:applib-svc:CommandService.adoc[`CommandService`] and with 
xref:refguide:applib-svc:AuditerService.adoc[`AuditerService`].
 The `CommandService` captures the __cause__ of an interaction (an action was 
invoked, a property was edited), while the `PublisherService` captures the 
__effect__ of that interaction in terms of events, and the `AuditerService` 
captures the effect of the interaction in terms of changed state.
 You may also want to configure the 
xref:refguide:applib-svc:PublisherService.adoc[`PublisherService`], which also 
captures the effect of the interaction but as an event.
-All three of these services collaborate implicitly by way of the 
xref:applib-classes:classes/mixins.adoc#HasUniqueId[`HasUniqueId`] interface.
+All three of these services collaborate implicitly by way of the 
xref:applib-classes:roles-mixins-contributees/contributee.adoc#HasUniqueId[`HasUniqueId`]
 interface.
 
 The xref:refguide:applib-svc:EventBusService.adoc[`EventBusService`] differs 
from the `PublisherService` in that it is intended for fine-grained 
publish/subscribe for object-to-object interactions within an Apache Isis 
domain object model.
 The event propagation is strictly in-memory, and there are no restrictions on 
the object acting as the event; it need not be serializable, for example.
diff --git a/api/applib/src/main/adoc/modules/applib-svc/pages/about.adoc 
b/api/applib/src/main/adoc/modules/applib-svc/pages/about.adoc
index 67b042e..c226739 100644
--- a/api/applib/src/main/adoc/modules/applib-svc/pages/about.adoc
+++ b/api/applib/src/main/adoc/modules/applib-svc/pages/about.adoc
@@ -161,12 +161,12 @@ But, if the action/property is to be executed in the 
foreground, then the intera
 * the (request-scoped) 
xref:refguide:applib-svc:InteractionContext.adoc[`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:refguide:applib-svc:WrapperFactory.adoc[`WrapperFactory`] extensively each 
successive call results in a new child execution.
 
-* before and after each action invocation/property edit, a 
xref:applib-classes:classes/domainevent.adoc[domain event] is may be broadcast 
to all subscribers.
+* before and after each action invocation/property edit, a 
xref:applib-classes:events/domainevent.adoc[domain event] is may be broadcast 
to all subscribers.
 Whether this occurs depends on whether the action/property has been annotated 
(using 
xref:refguide:applib-ant:Action.adoc#domainEvent[`@Action#domainEvent()`] or 
xref:refguide:applib-ant:Property.adoc#domainEvent[`@Property#domainEvent()`]).
 +
 (Note that subscribers 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:core:runtime-services:ChangedObjectsServiceInternal.adoc[`ChangedObjectsServiceInternal`]
 domain service.
+* As each execution progresses, and objects that are modified are "enlisted" 
into the (internal) 
xref:core:runtime-services:ChangedObjectsService.adoc[`ChangedObjectsServiceInternal`]
 domain service.
 Metrics as to which objects are merely loaded into memory are also captured 
using the xref:refguide:applib-svc:MetricsService.adoc[`MetricsService`] (not 
shown on the diagram).
 
 * At the end of each execution, details of that execution are published 
through the (internal)
diff --git 
a/core/metamodel/src/main/adoc/modules/metamodel/pages/class-diagram.adoc 
b/core/metamodel/src/main/adoc/modules/metamodel/pages/class-diagram.adoc
index 60359fe..42f95d0 100644
--- a/core/metamodel/src/main/adoc/modules/metamodel/pages/class-diagram.adoc
+++ b/core/metamodel/src/main/adoc/modules/metamodel/pages/class-diagram.adoc
@@ -10,7 +10,7 @@ The diagram below shows a simplified version of Apache Isis' 
internal metamodel.
 
 [plantuml]
 ----
-include::docs:resources:partial$plantuml-stereotypes.adoc[]
+include::docs:resources:partial$plantuml-stereotypes.puml[]
 
 package metamodel {
 
diff --git 
a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/InteractionDtoServiceInternal.adoc
 
b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/InteractionDtoServiceInternal.adoc
index 14d221f..0429061 100644
--- 
a/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/InteractionDtoServiceInternal.adoc
+++ 
b/core/runtimeservices/src/main/adoc/modules/runtime-services/pages/InteractionDtoServiceInternal.adoc
@@ -5,7 +5,7 @@
 WARNING: TODO: this content has not yet been reviewed/updated for v2.0
 
 
-The `InteractionDtoServiceInternal` internal domain service is used by the 
framework to create and update DTOs representing member executions, ie the 
invocation of an action or the editing of a property.  The DTO is in all cases 
a subclass of `MemberExecutionDto`, from the xref:refguide:schema:ixn["ixn" 
schema], and subsequently accessible from the `Interaction` object (per the 
xref:refguide:applib-svc:InteractionContext.adoc.adoc[`InteractionContext`] 
service).
+The `InteractionDtoServiceInternal` internal domain service is used by the 
framework to create and update DTOs representing member executions, ie the 
invocation of an action or the editing of a property.  The DTO is in all cases 
a subclass of `MemberExecutionDto`, from the xref:refguide:schema:ixn["ixn" 
schema], and subsequently accessible from the `Interaction` object (per the 
xref:refguide:applib-svc:InteractionContext.adoc[`InteractionContext`] service).
 
 
 == SPI & Implementation
diff --git 
a/extensions/security/audit-trail/adoc/modules/audit-trail/pages/about.adoc 
b/extensions/security/audit-trail/adoc/modules/audit-trail/pages/about.adoc
index 05dbfcd..72e3818 100644
--- a/extensions/security/audit-trail/adoc/modules/audit-trail/pages/about.adoc
+++ b/extensions/security/audit-trail/adoc/modules/audit-trail/pages/about.adoc
@@ -15,12 +15,12 @@ The module also provides:
 * `AuditingServiceRepository` service to to search for persisted 
`AuditEntry``s.
 None of its actions are visible in the user interface (they are all 
`@Programmatic`).
 
-* `AuditingServiceContributions` which contributes collections to the 
xref:refguide:applib-cm:classes/mixins.adoc#HasUniqueId[ `HasUniqueId`] 
interface.
+* `AuditingServiceContributions` which contributes collections to the 
xref:refguide:applib-cm:roles-mixins-contributees/contributee.adoc#HasUniqueId[`HasUniqueId`]
 interface.
 This will therefore display all audit entries that occurred in a given 
request/transaction, in other words whenever a command, a published event or 
another audit entry is displayed.
 
 These services can be activated by updating the `pom.xml` and updating the 
`AppManifest#getModules()` method.
 
-If menu items or contributions are not required in the UI, these can be 
suppressed either using security or by implementing a 
xref:userguide:btb:about.adoc#vetoing-visibility[vetoing subscriber].
+If menu items or contributions are not required in the UI, these can be 
suppressed either using security or by implementing a 
xref:userguide:btb:hints-and-tips/vetoing-visibility.adoc[vetoing subscriber].
 
 == Usage
 
diff --git 
a/extensions/security/secman/adoc/modules/secman/pages/shiro-realm.adoc 
b/extensions/security/secman/adoc/modules/secman/pages/shiro-realm.adoc
index 2b62a42..8a52d92 100644
--- a/extensions/security/secman/adoc/modules/secman/pages/shiro-realm.adoc
+++ b/extensions/security/secman/adoc/modules/secman/pages/shiro-realm.adoc
@@ -8,7 +8,7 @@ The SecMan extension includes a Shiro realm, which fits in as 
follows:
 
 The general configuration is as follows:
 
-image::configure-shiro-to-use-isisaddons-security-module-realm.PNG[width="600px",link="{imagesdir}/configure-shiro-to-use-isisaddons-security-module-realm.PNG"]
+image::shiro-realm/configure-shiro-to-use-isisaddons-security-module-realm.PNG[width="600px",link="{imagesdir}/configure-shiro-to-use-isisaddons-security-module-realm.PNG"]
 
 where the `IsisModuleSecurityRealm` realm is the implementation provided by 
the module.
 
@@ -21,7 +21,7 @@ Most organizations use LDAP for user credentials, and 
maintaining two separate u
 The `IsisModuleSecurityRealm` can therefore be configured with a subsidiary 
"delegate" realm that is responsible for performing the primary authentication 
of the user; if that passes then a user is created (as a domain entity) 
automatically.
 In most cases this delegate realm will be the LDAP realm, and so the 
architecture becomes:
 
-image::configure-shiro-to-use-isisaddons-security-module-realm-with-delegate-realm.PNG[width="600px",link="{imagesdir}/configure-shiro-to-use-isisaddons-security-module-realm-with-delegate-realm.PNG"]
+image::shiro-realm/configure-shiro-to-use-isisaddons-security-module-realm-with-delegate-realm.PNG[width="600px",link="{imagesdir}/configure-shiro-to-use-isisaddons-security-module-realm-with-delegate-realm.PNG"]
 
 
 The xref:security:ROOT:about.adoc[SecMan extension] has many more features 
than are described here, all of which are described in the module's README.
diff --git 
a/extensions/security/secman/adoc/modules/secman/partials/module-nav.adoc 
b/extensions/security/secman/adoc/modules/secman/partials/module-nav.adoc
index 9785aa0..6a770a7 100644
--- a/extensions/security/secman/adoc/modules/secman/partials/module-nav.adoc
+++ b/extensions/security/secman/adoc/modules/secman/partials/module-nav.adoc
@@ -1,9 +1,9 @@
 
 
 
-** xref:security:ROOT:about.adoc[Secman]
-*** xref:security:ROOT:api.adoc[API]
-*** xref:security:ROOT:model.adoc[Model]
-*** xref:security:ROOT:jbcrypt-encryption.adoc[JBCrypt Encryption]
-*** xref:security:ROOT:jdo-persistence.adoc[JDO Persistence]
-*** xref:security:ROOT:shiro-realm.adoc[Realm (for Shiro)]
+** xref:security:secman:about.adoc[Secman]
+*** xref:security:secman:api.adoc[API]
+*** xref:security:secman:model.adoc[Model]
+*** xref:security:secman:jbcrypt-encryption.adoc[JBCrypt Encryption]
+*** xref:security:secman:jdo-persistence.adoc[JDO Persistence]
+*** xref:security:secman:shiro-realm.adoc[Realm (for Shiro)]
diff --git 
a/security/shiro/src/main/adoc/modules/shiro/pages/about/enhanced-wildcard-permission.adoc
 
b/security/shiro/src/main/adoc/modules/shiro/pages/about/enhanced-wildcard-permission.adoc
index d698336..af9d9a3 100644
--- 
a/security/shiro/src/main/adoc/modules/shiro/pages/about/enhanced-wildcard-permission.adoc
+++ 
b/security/shiro/src/main/adoc/modules/shiro/pages/about/enhanced-wildcard-permission.adoc
@@ -4,7 +4,7 @@
 :page-partial:
 
 
-If using the text-based xref:security:shiro:ini-realm.adoc[`IniRealm`] or 
xref:security:shiro-realm-ldap:about.adoc[Apache Isis' LDAP realm], then note 
that Shiro also allows the string representation of the permissions to be 
mapped (resolved) to alternative `Permission` instances.
+If using the text-based xref:security:shiro:about/ini-realm.adoc[`IniRealm`] 
or xref:security:shiro-realm-ldap:about.adoc[Apache Isis' LDAP realm], then 
note that Shiro also allows the string representation of the permissions to be 
mapped (resolved) to alternative `Permission` instances.
 Apache Isis provides its own `IsisPermission` which introduces the concept of 
a "veto".
 
 A vetoing permission is one that prevents access to a feature, rather than 
grants it.
diff --git 
a/security/shiro/src/main/adoc/modules/shiro/pages/about/ini-realm.adoc 
b/security/shiro/src/main/adoc/modules/shiro/pages/about/ini-realm.adoc
index 7d007ad..d9f50a1 100644
--- a/security/shiro/src/main/adoc/modules/shiro/pages/about/ini-realm.adoc
+++ b/security/shiro/src/main/adoc/modules/shiro/pages/about/ini-realm.adoc
@@ -110,7 +110,7 @@ com.mycompany.myapp                          # ditto
 
 [TIP]
 ====
-The format of the permissions string is configurable in Shiro, and Apache Isis 
uses this to provide an extended wildcard format, described 
xref:security:ROOT:enhanced-wildcard-permission.adoc[here].
+The format of the permissions string is configurable in Shiro, and Apache Isis 
uses this to provide an extended wildcard format, described 
xref:security:shiro:about/enhanced-wildcard-permission.adoc[here].
 ====
 
 
diff --git 
a/viewers/restfulobjects/adoc/modules/ROOT/pages/hints-and-tips/restful-image-property.adoc
 
b/viewers/restfulobjects/adoc/modules/ROOT/pages/hints-and-tips/restful-image-property.adoc
index ec0c281..82f5a49 100644
--- 
a/viewers/restfulobjects/adoc/modules/ROOT/pages/hints-and-tips/restful-image-property.adoc
+++ 
b/viewers/restfulobjects/adoc/modules/ROOT/pages/hints-and-tips/restful-image-property.adoc
@@ -19,6 +19,6 @@ This is in the form:
 
     (filename):(mime type):(binary data in base64)
 
-This is basically the 
xref:refguide:applib-cm:classes/value-types.adoc#Blob[`Blob`] value type, in 
string form.
+This is basically the xref:refguide:applib-cm:value-types.adoc#Blob[`Blob`] 
value type, in string form.
 
 To use, split the parts then format the mime type and base64 data correctly 
before using as source in an `<img>` tag.
diff --git 
a/viewers/wicket/adoc/modules/ROOT/pages/features/blob-attachments.adoc 
b/viewers/wicket/adoc/modules/ROOT/pages/features/blob-attachments.adoc
index 40e2f09..a1eb412 100644
--- a/viewers/wicket/adoc/modules/ROOT/pages/features/blob-attachments.adoc
+++ b/viewers/wicket/adoc/modules/ROOT/pages/features/blob-attachments.adoc
@@ -5,7 +5,7 @@
 
 
 
-The Apache Isis application library provides the 
xref:refguide:applib-cm:classes/value-types.adoc#Blob[Blob] value type (binary 
large objects) and also the 
xref:refguide:applib-cm:classes/value-types.adoc#Clob[Clob]
+The Apache Isis application library provides the 
xref:refguide:applib-cm:value-types.adoc#Blob[Blob] value type (binary large 
objects) and also the xref:refguide:applib-cm:value-types.adoc#Clob[Clob]
 value type (character large object), each of which also includes metadata 
about the data (specifically the filename and mime type).
 
 A class can define a property using either of these types, for example:

Reply via email to