You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2020/09/09 04:16:10 UTC

[isis] branch master updated: ISIS-2336: fixing broken links and anchors

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 <al...@gmx.net>
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: