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

[isis] 34/47: ISIS-2062: fixes xrefs for ugfun

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

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

commit c0686b2bb679f8b935b24065f622e9a2ceb79acc
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Sun Jun 2 12:56:53 2019 +0100

    ISIS-2062: fixes xrefs for ugfun
---
 antora/components/rg/modules/ant/pages/Inject.adoc         |  2 +-
 .../components/rg/modules/cfg/pages/configuring-core.adoc  |  4 ++--
 .../rg/modules/cfg/pages/specifying-components.adoc        |  2 +-
 .../cms/pages/classes/AppManifest-bootstrapping.adoc       |  2 +-
 .../rg/modules/cms/pages/methods/prefixes/choices.adoc     |  2 +-
 .../rg/modules/cms/pages/methods/prefixes/default.adoc     |  2 +-
 antora/components/rg/modules/mvn/pages/intro.adoc          |  4 ++--
 antora/components/rg/modules/mvn/pages/validate.adoc       |  2 +-
 .../pages/testing/FixtureScriptsSpecificationProvider.adoc |  2 +-
 .../cgcom/pages/_partials/_cgcom_verifying-releases.adoc   |  2 +-
 .../_partials/_dg_hints-and-tips_datanucleus-enhancer.adoc |  4 ++--
 .../_partials/_dg_hints-and-tips_enabling-logging.adoc     |  2 +-
 ..._dg_hints-and-tips_how-run-fixtures-on-app-startup.adoc |  2 +-
 .../modules/dg/pages/_partials/_dg_ide_eclipse.adoc        |  4 ++--
 .../ROOT/pages/common-use-cases/common-use-cases.adoc      |  2 +-
 antora/components/toc/modules/ROOT/pages/downloads.adoc    |  2 +-
 .../modules/ROOT/pages/screencasts/screencasts-older.adoc  |  4 ++--
 .../toc/modules/ROOT/pages/screencasts/screencasts.adoc    |  2 +-
 antora/components/toc/modules/ROOT/pages/tg/tg.adoc        | 14 +++++++-------
 .../components/ug/modules/btb/pages/deployment/neo4j.adoc  |  4 ++--
 antora/components/ug/modules/btb/pages/i18n.adoc           |  2 +-
 .../fun/pages/building-blocks/events/lifecycle-events.adoc |  2 +-
 .../fun/pages/building-blocks/events/ui-events.adoc        |  2 +-
 .../pages/building-blocks/identifiers/title-and-icon.adoc  |  2 +-
 .../types-of-domain-objects/domain-entities.adoc           |  2 +-
 .../types-of-domain-objects/domain-services.adoc           |  4 ++--
 .../building-blocks/types-of-domain-objects/mixins.adoc    |  2 +-
 .../types-of-domain-objects/view-models.adoc               |  2 +-
 .../fun/pages/core-concepts/apache-isis-vs/cqrs.adoc       |  2 +-
 .../fun/pages/core-concepts/deployment-options.adoc        |  2 +-
 antora/components/ug/modules/fun/pages/crud/deleting.adoc  |  2 +-
 .../components/ug/modules/fun/pages/crud/persisting.adoc   |  2 +-
 .../ug/modules/fun/pages/programming-model/actions.adoc    |  8 ++++----
 .../modules/fun/pages/programming-model/collections.adoc   |  4 ++--
 .../programming-model/domain-services/contributions.adoc   |  4 ++--
 .../fun/pages/programming-model/domain-services/menu.adoc  |  2 +-
 .../ug/modules/fun/pages/programming-model/properties.adoc |  4 ++--
 .../fun/pages/programming-model/view-models/non-jaxb.adoc  |  2 +-
 .../configuring/disabling-persistence-by-reachability.adoc |  2 +-
 .../ug/modules/odn/pages/configuring/persistence-xml.adoc  |  2 +-
 antora/components/ug/modules/sec/pages/about.adoc          |  2 +-
 .../modules/sec/pages/configuring-isis-to-use-shiro.adoc   |  4 ++--
 .../sec/pages/shiro-realm-implementations/ini-realm.adoc   |  2 +-
 .../tst/pages/bdd-spec-support/maven-configuration.adoc    |  2 +-
 .../tst/pages/bdd-spec-support/writing-a-bdd-spec.adoc     |  4 ++--
 .../modules/tst/pages/fixture-scripts/api-and-usage.adoc   | 10 +++++-----
 .../tst/pages/integ-test-support/bootstrapping.adoc        |  2 +-
 .../tst/pages/integ-test-support/maven-configuration.adoc  |  6 +++---
 .../tst/pages/unit-test-support/maven-configuration.adoc   |  6 +++---
 .../components/ug/modules/vro/pages/layout-resources.adoc  |  4 ++--
 .../components/ug/modules/vw/pages/layout/file-based.adoc  |  4 ++--
 51 files changed, 82 insertions(+), 82 deletions(-)

diff --git a/antora/components/rg/modules/ant/pages/Inject.adoc b/antora/components/rg/modules/ant/pages/Inject.adoc
index 3db2d03..24ec17a 100644
--- a/antora/components/rg/modules/ant/pages/Inject.adoc
+++ b/antora/components/rg/modules/ant/pages/Inject.adoc
@@ -27,7 +27,7 @@ public class Customer {
     OrderRepository orders;                    // <2>
 }
 ----
-<1> an alternative implementation would be to implement `findRecentOrders()` as a xref:ug:fun:ugfun.adoc#_ugfun_how-tos_contributed-members[contributed action].
+<1> an alternative implementation would be to implement `findRecentOrders()` as a xref:ug:fun:how-tos/contributed-members.adoc[contributed action].
 <2> we recommend default (rather than `private`) visibility so that unit tests can easily mock out the service
 
 
diff --git a/antora/components/rg/modules/cfg/pages/configuring-core.adoc b/antora/components/rg/modules/cfg/pages/configuring-core.adoc
index a7d63d1..d642350 100644
--- a/antora/components/rg/modules/cfg/pages/configuring-core.adoc
+++ b/antora/components/rg/modules/cfg/pages/configuring-core.adoc
@@ -569,14 +569,14 @@ To be safe, we recommend that you first run your application using `isis.reflect
 |regex:css1, regex2:css2,...
 |Comma separated list of key:value pairs, where the key is a regex matching action names (eg `delete.*`) and the value is a link:http://getbootstrap.com/css/[Bootstrap] CSS button class (eg `btn-warning) to be applied (as per `@PropertyLayout(cssClass=...)` etc) to all action members matching the regex. +
 
-See xref:ug:fun:ugfun.adoc#_ugfun_ui-hints_action-icons-and-css[UI hints] for more details.
+See xref:ug:fun:ui-hints/action-icons-and-css.adoc[UI hints] for more details.
 
 |`isis.reflector.facet.` +
 `cssClassFa.patterns`
 |regex:fa-icon,regex2:fa-icon2,...
 |Comma separated list of key:value pairs, where the key is a regex matching action names (eg `create.*`) and the value is a link:http://fortawesome.github.io/Font-Awesome/icons/[font-awesome] icon name (eg `fa-plus`) to be applied (as per `@Propertyayout(cssClassFa=...)` etc) to all action members matching the regex. +
 
-See xref:ug:fun:ugfun.adoc#_ugfun_ui-hints_action-icons-and-css[UI hints] for more details.
+See xref:ug:fun:ui-hints/action-icons-and-css.adoc[UI hints] for more details.
 
 
 |===
diff --git a/antora/components/rg/modules/cfg/pages/specifying-components.adoc b/antora/components/rg/modules/cfg/pages/specifying-components.adoc
index e9f9b62..194255b 100644
--- a/antora/components/rg/modules/cfg/pages/specifying-components.adoc
+++ b/antora/components/rg/modules/cfg/pages/specifying-components.adoc
@@ -29,7 +29,7 @@ To specify the `AppManifest` as a configuration property, use:
 |`o.a.i.applib.AppManifest` +
 
 By convention this implementation resides in an `myapp-app` Maven module (as opposed to `myapp-dom` or `myapp-fixture`).
-See the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype] for details.
+See the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype] for details.
 
 |===
 
diff --git a/antora/components/rg/modules/cms/pages/classes/AppManifest-bootstrapping.adoc b/antora/components/rg/modules/cms/pages/classes/AppManifest-bootstrapping.adoc
index a3d60be..3be6bec 100644
--- a/antora/components/rg/modules/cms/pages/classes/AppManifest-bootstrapping.adoc
+++ b/antora/components/rg/modules/cms/pages/classes/AppManifest-bootstrapping.adoc
@@ -255,7 +255,7 @@ In other words these describe how the application chooses to configure the frame
 +
 The classic example here is the JDBC URL.
 
-For example, the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype]'s `AppManifest` is defined as:
+For example, the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype]'s `AppManifest` is defined as:
 
 [source,java]
 ----
diff --git a/antora/components/rg/modules/cms/pages/methods/prefixes/choices.adoc b/antora/components/rg/modules/cms/pages/methods/prefixes/choices.adoc
index 7fb79d3..2e11ac8 100644
--- a/antora/components/rg/modules/cms/pages/methods/prefixes/choices.adoc
+++ b/antora/components/rg/modules/cms/pages/methods/prefixes/choices.adoc
@@ -58,7 +58,7 @@ image::reference-methods/prefixes/choices/dependent.png[width="800px",link="{ima
 
 
 
-This functionality is actually implemented as a xref:ug:fun:ugfun.adoc#_ugfun_how-tos_contributed-members[contributed action], so the code for this is:
+This functionality is actually implemented as a xref:ug:fun:how-tos/contributed-members.adoc[contributed action], so the code for this is:
 
 [source,java]
 ----
diff --git a/antora/components/rg/modules/cms/pages/methods/prefixes/default.adoc b/antora/components/rg/modules/cms/pages/methods/prefixes/default.adoc
index 108112c..49538b9 100644
--- a/antora/components/rg/modules/cms/pages/methods/prefixes/default.adoc
+++ b/antora/components/rg/modules/cms/pages/methods/prefixes/default.adoc
@@ -59,7 +59,7 @@ public class ShoppingCartItem {
 
 
 
-Defaults are also supported (of course) for xref:ug:fun:ugfun.adoc#_ugfun_how-tos_contributed-members[contributed actions].
+Defaults are also supported (of course) for xref:ug:fun:how-tos/contributed-members.adoc[contributed actions].
 For example, here is a contributed action for updating category/subcategory of the (non-ASF) http://github.com/isisaddons/isis-app-todoapp[Isis addons' todoapp]:
 
 [source,java]
diff --git a/antora/components/rg/modules/mvn/pages/intro.adoc b/antora/components/rg/modules/mvn/pages/intro.adoc
index 17ae80d..801aebf 100644
--- a/antora/components/rg/modules/mvn/pages/intro.adoc
+++ b/antora/components/rg/modules/mvn/pages/intro.adoc
@@ -36,7 +36,7 @@ As noted in the introduction, all the goals require an xref:rg:cms:classes/AppMa
 This can be extremely minimal; it isn't necessary to use the main `AppManifest` (in the `app` module) used to bootstrap the application, you can instead use a cut-down one.
 This then allows the plugins to be run during the build of the `dom` module, rather than having to run in the context of the `integtest` module.
 
-For example, the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp]'s
+For example, the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp]'s
 manifest is:
 
 [source,java]
@@ -82,6 +82,6 @@ We recommend the following:
 
 * run the `xsd` plugin in a new `xsd` submodule; contributed actions are irrelevant for this particular goal; having a separate submodule allows the configuration of both the `xsd` goal (to generate the XSD schemas) and any other XSD-related configuration to be kept in a single place.
 
-The xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype] reflects these recommendations for the `validate` and `swagger` goals.
+The xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype] reflects these recommendations for the `validate` and `swagger` goals.
 You can find an example of the `xsd` plugin in the (non-ASF) http://github.com/isisaddons/isis-app-todoapp[Isis addons' todoapp] application.
 
diff --git a/antora/components/rg/modules/mvn/pages/validate.adoc b/antora/components/rg/modules/mvn/pages/validate.adoc
index afb8fd2..2f6cbad 100644
--- a/antora/components/rg/modules/mvn/pages/validate.adoc
+++ b/antora/components/rg/modules/mvn/pages/validate.adoc
@@ -106,7 +106,7 @@ mvn test -Dskip.isis-validate
 
 == Example of failure
 
-In the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp] application the `SimpleObject` defines an `updateName` action.
+In the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp] application the `SimpleObject` defines an `updateName` action.
 This has a supporting method:
 
 
diff --git a/antora/components/rg/modules/svc/pages/testing/FixtureScriptsSpecificationProvider.adoc b/antora/components/rg/modules/svc/pages/testing/FixtureScriptsSpecificationProvider.adoc
index 20b397e..0aaf509 100644
--- a/antora/components/rg/modules/svc/pages/testing/FixtureScriptsSpecificationProvider.adoc
+++ b/antora/components/rg/modules/svc/pages/testing/FixtureScriptsSpecificationProvider.adoc
@@ -49,7 +49,7 @@ The class is immutable but it has a builder (obtained using `FixturescriptsSpeci
 
 == Implementation
 
-The xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype] has a simple implementation of this service:
+The xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype] has a simple implementation of this service:
 
 [source,java]
 ----
diff --git a/antora/components/support/modules/cgcom/pages/_partials/_cgcom_verifying-releases.adoc b/antora/components/support/modules/cgcom/pages/_partials/_cgcom_verifying-releases.adoc
index 3be078b..932a4d1 100644
--- a/antora/components/support/modules/cgcom/pages/_partials/_cgcom_verifying-releases.adoc
+++ b/antora/components/support/modules/cgcom/pages/_partials/_cgcom_verifying-releases.adoc
@@ -131,7 +131,7 @@ Alternatively, you can xref:cgcom.adoc#__cgcom_verifying-releases_casting-a-vote
 
 == (Optional) Verifying binary artifacts
 
-You can verify the binary releases by configuring your local Maven install to point to the Maven staging repository (or repositories) and then using them, eg to run the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_helloworld-archetype[HelloWorld archetype] or the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype] and running the resultant app.
+You can verify the binary releases by configuring your local Maven install to point to the Maven staging repository (or repositories) and then using them, eg to run the xref:ug:fun:getting-started/helloworld-archetype.adoc[HelloWorld archetype] or the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype] and running the resultant app.
 
 Configuring your local Maven install amounts to updating the `~/.m2/settings.xml` file:
 
diff --git a/antora/components/support/modules/dg/pages/_partials/_dg_hints-and-tips_datanucleus-enhancer.adoc b/antora/components/support/modules/dg/pages/_partials/_dg_hints-and-tips_datanucleus-enhancer.adoc
index 50dca3a..135bdd8 100644
--- a/antora/components/support/modules/dg/pages/_partials/_dg_hints-and-tips_datanucleus-enhancer.adoc
+++ b/antora/components/support/modules/dg/pages/_partials/_dg_hints-and-tips_datanucleus-enhancer.adoc
@@ -18,7 +18,7 @@ What this means is that the enhancer -- available as both a Maven plugin and as
 
 If working from the Maven command line, JDO enhancement is done using the `maven-datanucleus-plugin`.
 
-Both the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_helloworld-archetype[HelloWorld] and xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp] Maven archetypes generate applications that have this plugin pre-configured.
+Both the xref:ug:fun:getting-started/helloworld-archetype.adoc[HelloWorld] and xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp] Maven archetypes generate applications that have this plugin pre-configured.
 
 
 
@@ -39,7 +39,7 @@ It's also a good idea to ensure that every domain module(s) containing entities
 ----
 <1> change as required; typically is the name of the domain module.
 
-Again, the applications generated by both the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_helloworld-archetype[HelloWorld] and xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[Simpleapp] Maven archetypes do this.
+Again, the applications generated by both the xref:ug:fun:getting-started/helloworld-archetype.adoc[HelloWorld] and xref:ug:fun:getting-started/simpleapp-archetype.adoc[Simpleapp] Maven archetypes do this.
 
 
 [WARNING]
diff --git a/antora/components/support/modules/dg/pages/_partials/_dg_hints-and-tips_enabling-logging.adoc b/antora/components/support/modules/dg/pages/_partials/_dg_hints-and-tips_enabling-logging.adoc
index c51343b..2c77b1f 100644
--- a/antora/components/support/modules/dg/pages/_partials/_dg_hints-and-tips_enabling-logging.adoc
+++ b/antora/components/support/modules/dg/pages/_partials/_dg_hints-and-tips_enabling-logging.adoc
@@ -16,7 +16,7 @@ As per the http://www.datanucleus.org/products/accessplatform/logging.html[DN lo
 * In the JDBC Driver +
 +
 Configure `log4jdbc` JDBC rather than the vanilla driver (see `WEB-INF/persistor_datanucleus.properties`) and configure log4j logging (see `WEB-INF/logging.properties`).
-There are examples of both in the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype].
+There are examples of both in the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype].
 
 * In the database +
 +
diff --git a/antora/components/support/modules/dg/pages/_partials/_dg_hints-and-tips_how-run-fixtures-on-app-startup.adoc b/antora/components/support/modules/dg/pages/_partials/_dg_hints-and-tips_how-run-fixtures-on-app-startup.adoc
index 1854d91..aca893f 100644
--- a/antora/components/support/modules/dg/pages/_partials/_dg_hints-and-tips_how-run-fixtures-on-app-startup.adoc
+++ b/antora/components/support/modules/dg/pages/_partials/_dg_hints-and-tips_how-run-fixtures-on-app-startup.adoc
@@ -12,7 +12,7 @@ Use events?_
 
 
 The standard approach is to use xref:ug:tst:fixture-scripts.adoc[fixture scripts].
-These can be run in on start-up typically by being specified in the xref:rg:cms:classes/AppManifest-bootstrapping.adoc[`AppManifest`], see for example the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype].
+These can be run in on start-up typically by being specified in the xref:rg:cms:classes/AppManifest-bootstrapping.adoc[`AppManifest`], see for example the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype].
 
 Alternatively just set `isis.fixtures` and `isis.persistor.datanucleus.install-fixtures` properties.
 
diff --git a/antora/components/support/modules/dg/pages/_partials/_dg_ide_eclipse.adoc b/antora/components/support/modules/dg/pages/_partials/_dg_ide_eclipse.adoc
index 212d272..6bed515 100644
--- a/antora/components/support/modules/dg/pages/_partials/_dg_ide_eclipse.adoc
+++ b/antora/components/support/modules/dg/pages/_partials/_dg_ide_eclipse.adoc
@@ -36,7 +36,7 @@ To install, download each XML file, then go to `Windows > Preferences > Java > E
 
 == Install Project Lombok
 
-The xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype] uses link:http://projectlombok.org[Project Lombok] annotations (`@Getter` and `@Setter` and so on) to reduce the boilerplate.
+The xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype] uses link:http://projectlombok.org[Project Lombok] annotations (`@Getter` and `@Setter` and so on) to reduce the boilerplate.
 For Eclipse IDE this requires an link:https://projectlombok.org/setup/eclipse[installation step]:
 
 * Locate the `lombok.jar` jar file:
@@ -118,7 +118,7 @@ DataNucleus' enhancer uses the domain object model's own classpath to reference
 So, even though your domain objects are unlikely to depend on DataNucleus, these references must still be present.
 
 See the section in xref:dg.adoc#_dg_hints-and-tips_datanucleus-enhancer[DataNucleus enhancer] for details of the contents of the `pom.xml`.
-Chances are it is already set up from running the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_helloworld-archetype[HelloWorld] or the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp] archetype.
+Chances are it is already set up from running the xref:ug:fun:getting-started/helloworld-archetype.adoc[HelloWorld] or the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp] archetype.
 
 
 Then, tell DataNucleus to use the project classpath:
diff --git a/antora/components/toc/modules/ROOT/pages/common-use-cases/common-use-cases.adoc b/antora/components/toc/modules/ROOT/pages/common-use-cases/common-use-cases.adoc
index 900d1aa..0e89fe2 100644
--- a/antora/components/toc/modules/ROOT/pages/common-use-cases/common-use-cases.adoc
+++ b/antora/components/toc/modules/ROOT/pages/common-use-cases/common-use-cases.adoc
@@ -23,7 +23,7 @@ Once you've sketched out your domain model, you can then either start-over using
 One of the original motivations for Apache Isis itself was to be able automatically generate a user interface for a domain object model.
 
 Apache Isis' has a pluggable architecture allowing different user interface technologies.
- The principal implementation (as configured by the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype]) is the xref:ug:vw:ugvw.adoc#[Wicket viewer].
+ The principal implementation (as configured by the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype]) is the xref:ug:vw:ugvw.adoc#[Wicket viewer].
   This provides an appealing default user interface, with the ability to customize the user interface by writing new http://wicket.apache.org[Apache Wicket] components.
 Some third-party components can be found in the (non-ASF) link:http://platform.incode.org[Incode Platform^].
 
diff --git a/antora/components/toc/modules/ROOT/pages/downloads.adoc b/antora/components/toc/modules/ROOT/pages/downloads.adoc
index cab998f..a17d015 100644
--- a/antora/components/toc/modules/ROOT/pages/downloads.adoc
+++ b/antora/components/toc/modules/ROOT/pages/downloads.adoc
@@ -13,7 +13,7 @@ Use for prototyping or production.
 
 == Getting Started
 
-If you just want to get going quickly, we suggest using our xref:guides/ugfun/ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[Maven archetype].
+If you just want to get going quickly, we suggest using our xref:ug:fun:getting-started/simpleapp-archetype.adoc[Maven archetype].
 
 
 
diff --git a/antora/components/toc/modules/ROOT/pages/screencasts/screencasts-older.adoc b/antora/components/toc/modules/ROOT/pages/screencasts/screencasts-older.adoc
index 8096989..f972551 100644
--- a/antora/components/toc/modules/ROOT/pages/screencasts/screencasts-older.adoc
+++ b/antora/components/toc/modules/ROOT/pages/screencasts/screencasts-older.adoc
@@ -81,7 +81,7 @@ Learn more xref:support:dg:dg.adoc#_dg_ide_intellij[here]
 
 |Commands and Auditing (v1.6.0) +
 
-_Configuring the command and auditing add-on modules for the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp]._ +
+_Configuring the command and auditing add-on modules for the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp]._ +
 
 Learn more at the (non-ASF) link:http://platform.incode.org[Incode Platform^]'s command and audit SPI modules
 
@@ -90,7 +90,7 @@ Learn more at the (non-ASF) link:http://platform.incode.org[Incode Platform^]'s
 
 |Security (v1.6.0) +
 
-_Configuring the security add-on module for for the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp]._ +
+_Configuring the security add-on module for for the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp]._ +
 
 Learn more at the (non-ASF) link:http://platform.incode.org[Incode Platform^]'s security SPI module.
 
diff --git a/antora/components/toc/modules/ROOT/pages/screencasts/screencasts.adoc b/antora/components/toc/modules/ROOT/pages/screencasts/screencasts.adoc
index 31f3ae9..42bc9ac 100644
--- a/antora/components/toc/modules/ROOT/pages/screencasts/screencasts.adoc
+++ b/antora/components/toc/modules/ROOT/pages/screencasts/screencasts.adoc
@@ -45,7 +45,7 @@ Searching and using the Apache Isis docs
 
 
 |link:https://www.youtube.com/watch?v=OTNHR5EdAs8[001^] +
-Generating an app using the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype]
+Generating an app using the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype]
 
 |x||||||||||
 
diff --git a/antora/components/toc/modules/ROOT/pages/tg/tg.adoc b/antora/components/toc/modules/ROOT/pages/tg/tg.adoc
index f1eb0f5..572f18b 100644
--- a/antora/components/toc/modules/ROOT/pages/tg/tg.adoc
+++ b/antora/components/toc/modules/ROOT/pages/tg/tg.adoc
@@ -206,8 +206,8 @@ We can start developing our app by refactoring that class:
 ** eg rename to `Pet`
 * if required, rename the `SimpleObject` class' `name` property
 ** for `Pet`, can leave `name` property as is
-* specify a xref:ug:fun:ugfun.adoc#_ugfun_ui-hints_object-titles-and-icons[title]
-* specify an xref:ug:fun:ugfun.adoc#_ugfun_ui-hints_object-titles-and-icons[icon]
+* specify a xref:ug:fun:ui-hints/object-titles-and-icons.adoc[title]
+* specify an xref:ug:fun:ui-hints/object-titles-and-icons.adoc[icon]
 * make the entity bookmarkable by adding the xref:rg:ant:DomainObjectLayout/bookmarking.adoc[`@DomainObjectLayout#bookmarking()`] attribute.
 * confirm is available from bookmark panel (top-left of Wicket UI)
 
@@ -311,7 +311,7 @@ In the RESTful viewer this matters in that it determines the HTTP verb (GET, PUT
 Domain entities have state: either values (primitives, strings) or references to other entities.
 In this section we explore adding some value properties
 
-* add some xref:ug:fun:ugfun.adoc#_ugfun_programming-model_properties[value properties]; also:
+* add some xref:ug:fun:programming-model/properties.adoc[value properties]; also:
 * for string properties
 ** use the xref:rg:ant:PropertyLayout/multiLine.adoc[`@PropertyLayout(multiLine=...)`] annotation to render a text area instead of a text box
 ** use the xref:rg:ant:Property/maxLength.adoc[`@Property(maxLength=...)`] annotation to specify the maximum number of characters allowable
@@ -337,7 +337,7 @@ Domain entities can also reference other domain entities.
 These references may be either scalar (single-valued) or vector (multi-valued).
 In this section we focus on scalar reference properties.
 
-* add some xref:ug:fun:ugfun.adoc#_ugfun_programming-model_properties[reference properties]
+* add some xref:ug:fun:programming-model/properties.adoc[reference properties]
 * update the corresponding domain service (for creation actoin)
 * use different techniques to obtain references (shown in drop-down list box)
 ** use the xref:rg:ant:DomainObject/bounding.adoc[`@DomainObjectLayout(bounding=...)`] annotation on the referenced type if there are only a small number (bounded) of instances
@@ -369,7 +369,7 @@ We sometimes called these "parented" collections (to distinguish from a "standal
 * Ensure that all domain classes implement `java.lang.Comparable`
 ** use the xref:rg:cms:rgcms.adoc#_rgcms_classes_utility_ObjectContracts[`ObjectContracts`] utility class to help implement `Comparable`
 *** you can also implement `equals()`, `hashCode()`, `toString()`
-* Add a xref:ug:fun:ugfun.adoc#_ugfun_programming-model_collections[collection] to one of the entities
+* Add a xref:ug:fun:programming-model/collections.adoc[collection] to one of the entities
 ** Use `SortedSet` as the class
 ** Use the xref:rg:ant:CollectionLayout/render.adoc[`@CollectionLayout(render=...)`] annotation to indicate if the collection should be visible or hidden by default
 * optional: use the xref:rg:ant:CollectionLayout/sortedBy.adoc[`@CollectionLayout(sortedBy=...)`] annotation to specify a different comparator than the natural ordering
@@ -386,7 +386,7 @@ Moreover, these actions can provide some additional business logic.
 For example: it probably shouldn't be possible to add an object twice into a collection, so it should not be presented in the list of choices/autoComplete; conversely, only those objects in the collection should be offered as choices to be removed.
 
 * Add domain actions to add/remove from the collection
-* to create objects, xref:ug:fun:ugfun.adoc#_ugfun_programming-model_inject-services[inject] associated domain service
+* to create objects, xref:ug:fun:programming-model/inject-services.adoc[inject] associated domain service
 ** generally we recommend using the xref:rg:ant:Inject.adoc[`@Inject`] annotation with either private or default visibility
 * the service itself should use xref:rg:svc:rgsvc.adoc#_rgsvc_core-domain-api_RepositoryService[`RepositoryService`]
 * use the xref:rg:ant:MemberOrder.adoc[`@MemberOrder(name=...)`] annotation to associate an action with a property or with a collection
@@ -403,7 +403,7 @@ But for actions in particular:
 
 *  the http://fortawesome.github.io/Font-Awesome/icons/[Font Awesome] icons can be used using the xref:rg:ant:ActionLayout/cssClassFa.adoc[`@ActionLayout(cssClassFa=...)`]
 
-It's also possible to use Font Awesome icons for the xref:ug:fun:ugfun.adoc#_ugfun_ui-hints_object-titles-and-icons[domain object icon].
+It's also possible to use Font Awesome icons for the xref:ug:fun:ui-hints/object-titles-and-icons.adoc[domain object icon].
 
 So:
 - for some of the actions of your domain services or entities, annotate using `@ActionLayout(cssClass=...)` or `@ActionLayout(cssClassFa=...)`
diff --git a/antora/components/ug/modules/btb/pages/deployment/neo4j.adoc b/antora/components/ug/modules/btb/pages/deployment/neo4j.adoc
index d902a8c..46178eb 100644
--- a/antora/components/ug/modules/btb/pages/deployment/neo4j.adoc
+++ b/antora/components/ug/modules/btb/pages/deployment/neo4j.adoc
@@ -44,14 +44,14 @@ Add the following dependency to the `webapp` project's `pom.xml`:
 <1> for Isis v1.9.0, use the value shown.
 For Isis v1.8.0, use 3.2.3.
 
-In the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype] this is defined under the "neo4j" profile so can be activated using `-P neo4j`.
+In the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype] this is defined under the "neo4j" profile so can be activated using `-P neo4j`.
 
 
 == Try it out!
 
 If you want to quickly try out neo4j for yourself:
 
-* run the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype] (v1.8.0)
+* run the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype] (v1.8.0)
 
 * build the app:
 
diff --git a/antora/components/ug/modules/btb/pages/i18n.adoc b/antora/components/ug/modules/btb/pages/i18n.adoc
index 426d44c..cc21bd2 100644
--- a/antora/components/ug/modules/btb/pages/i18n.adoc
+++ b/antora/components/ug/modules/btb/pages/i18n.adoc
@@ -127,7 +127,7 @@ Moreover, these messages must be captured in the `.pot` file such that they can
 The first part of the puzzle is tackled by an extension to Apache Isis' programming model.
 Whereas previously the `disableXxx()` / `validateXxx()` / `title()` methods could only return a `java.lang.String`, they may now optionally return a `TranslatableString` (defined in Isis applib) instead.
 
-Here's a (silly) example from the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype]:
+Here's a (silly) example from the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype]:
 
 [source,java]
 ----
diff --git a/antora/components/ug/modules/fun/pages/building-blocks/events/lifecycle-events.adoc b/antora/components/ug/modules/fun/pages/building-blocks/events/lifecycle-events.adoc
index dd796f7..1c352aa 100644
--- a/antora/components/ug/modules/fun/pages/building-blocks/events/lifecycle-events.adoc
+++ b/antora/components/ug/modules/fun/pages/building-blocks/events/lifecycle-events.adoc
@@ -15,7 +15,7 @@ The lifecycle events supported are:
 
 * object created - just instantiated. +
 +
-Note that this requires that the object is instantiated using the framework, see xref:ug:fun:ugfun.adoc#_ugfun_crud_instantiating[here] for further discussion
+Note that this requires that the object is instantiated using the framework, see xref:ug:fun:crud/instantiating.adoc[here] for further discussion
 
 * updated loaded - just retrieved from the database
 
diff --git a/antora/components/ug/modules/fun/pages/building-blocks/events/ui-events.adoc b/antora/components/ug/modules/fun/pages/building-blocks/events/ui-events.adoc
index 0416e87..58693c1 100644
--- a/antora/components/ug/modules/fun/pages/building-blocks/events/ui-events.adoc
+++ b/antora/components/ug/modules/fun/pages/building-blocks/events/ui-events.adoc
@@ -5,7 +5,7 @@ include::_attributes.adoc[]
 
 As explained xref:ug:fun:ugfun.adoc#_ugfun_building-blocks_identifiers_title-and-icon[earlier], to allow the end-user to distinguish one domain object from another, it is rendered with a title and an icon.
 
-xref:ug:fun:ugfun.adoc#_ugfun_ui-hints_object-titles-and-icons[Normally] the code to return title and icon of an object is part of the domain object's implementation.
+xref:ug:fun:ui-hints/object-titles-and-icons.adoc[Normally] the code to return title and icon of an object is part of the domain object's implementation.
 However, UI events allow this title and icon to be provided instead by a subscriber.
 UI events have higher precedence than the other mechanisms of supplying a title.
 
diff --git a/antora/components/ug/modules/fun/pages/building-blocks/identifiers/title-and-icon.adoc b/antora/components/ug/modules/fun/pages/building-blocks/identifiers/title-and-icon.adoc
index 80665f2..9a71280 100644
--- a/antora/components/ug/modules/fun/pages/building-blocks/identifiers/title-and-icon.adoc
+++ b/antora/components/ug/modules/fun/pages/building-blocks/identifiers/title-and-icon.adoc
@@ -28,6 +28,6 @@ In conjunction with xref:ug:vw:customisation/tweaking-css-classes.adoc[customize
 [TIP]
 ====
 Details on how to actually write titles, icons and CSS classes can be found
-xref:ug:fun:ugfun.adoc#_ugfun_ui-hints_object-titles-and-icons[here].
+xref:ug:fun:ui-hints/object-titles-and-icons.adoc[here].
 ====
 
diff --git a/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/domain-entities.adoc b/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/domain-entities.adoc
index 69579e4..4432fbb 100644
--- a/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/domain-entities.adoc
+++ b/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/domain-entities.adoc
@@ -30,6 +30,6 @@ Again, this isn't a hard-n-fast rule, but a good rule of thumb.
 [TIP]
 ====
 Details on how to actually write a domain entity (the programming model for domain entities) is
-xref:ug:fun:ugfun.adoc#_ugfun_programming-model_domain-entities[here].
+xref:ug:fun:programming-model/domain-entities.adoc[here].
 ====
 
diff --git a/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/domain-services.adoc b/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/domain-services.adoc
index c67f4ea..91727f4 100644
--- a/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/domain-services.adoc
+++ b/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/domain-services.adoc
@@ -23,7 +23,7 @@ Domain services can also be used for a number of other purposes:
 
 * to act as a subscribers to the event bus, potentially influencing events fired by some other module (a key technique for decoupling large applications) +
 +
-This is discussed in more detail below, in the section on xref:ug:fun:ugfun.adoc#_ugfun_building-blocks_events[events].
+This is discussed in more detail below, in the section on xref:ug:fun:building-blocks/events.adoc[events].
 
 * to implement an link:https://en.wikipedia.org/wiki/Service_provider_interface[SPI] of the Apache Isis framework, most notably cross-cutting concerns such as security, command profiling, auditing and publishing.
 
@@ -46,7 +46,7 @@ Domain services are instantiated once and once only by the framework, and are us
 [TIP]
 ====
 Details on how to actually write a domain service (the programming model for domain services) is
-xref:ug:fun:ugfun.adoc#_ugfun_programming-model_domain-services[here].
+xref:ug:fun:programming-model/domain-services.adoc[here].
 ====
 
 
diff --git a/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/mixins.adoc b/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/mixins.adoc
index aec859f..884724e 100644
--- a/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/mixins.adoc
+++ b/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/mixins.adoc
@@ -36,7 +36,7 @@ If you move that behaviour out into mixins, then these can be reloaded happily.
 [TIP]
 ====
 Details on how to actually write a mixin (the programming model for mixins) is
-xref:ug:fun:ugfun.adoc#_ugfun_programming-model_mixins[here].
+xref:ug:fun:programming-model/mixins.adoc[here].
 ====
 
 
diff --git a/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/view-models.adoc b/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/view-models.adoc
index 818a69b..f160b9f 100644
--- a/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/view-models.adoc
+++ b/antora/components/ug/modules/fun/pages/building-blocks/types-of-domain-objects/view-models.adoc
@@ -26,7 +26,7 @@ We explore these use cases in more detail below.
 [TIP]
 ====
 Details on how to actually write a view model (the programming model for view models) is
-xref:ug:fun:ugfun.adoc#_ugfun_programming-model_view-models[here].
+xref:ug:fun:programming-model/view-models.adoc[here].
 ====
 
 
diff --git a/antora/components/ug/modules/fun/pages/core-concepts/apache-isis-vs/cqrs.adoc b/antora/components/ug/modules/fun/pages/core-concepts/apache-isis-vs/cqrs.adoc
index 39cc86d..5c33f94 100644
--- a/antora/components/ug/modules/fun/pages/core-concepts/apache-isis-vs/cqrs.adoc
+++ b/antora/components/ug/modules/fun/pages/core-concepts/apache-isis-vs/cqrs.adoc
@@ -41,7 +41,7 @@ With Apache Isis, though, the end-user merely invokes the `placeOrder(...)` acti
 In CQRS the commands correspond to the business logic that mutates the system.
 Whether this logic is part of the command class (`PlaceOrderCommand`) or whether that command delegates to methods on the domain object is an implementation detail; but it certainly is common for the business logic to be wholly within the command object and for the domain object to be merely a data holder of the data within the command/write datastore.
 
-In Apache Isis this same separation of business logic from the underlying data can be accomplished most straightforwardly using xref:ug:fun:ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[mixins] or xref:ug:fun:ugfun.adoc#_ugfun_how-tos_contributed-members[contributions].
+In Apache Isis this same separation of business logic from the underlying data can be accomplished most straightforwardly using xref:ug:fun:ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[mixins] or xref:ug:fun:how-tos/contributed-members.adoc[contributions].
 In the UI (surfaced by the xref:ug:vw:ugvw.adoc#[Wicket viewer]) or in the REST API (surfaced by the xref:ug:vro:ugvro.adoc#[RestfulObjects viewer]) the behaviour appears to reside on the domain object; however the behaviour actually resides on separate classes and is mixed in (like a trait) only at runtime.
 
 
diff --git a/antora/components/ug/modules/fun/pages/core-concepts/deployment-options.adoc b/antora/components/ug/modules/fun/pages/core-concepts/deployment-options.adoc
index 19351a9..6f38cb2 100644
--- a/antora/components/ug/modules/fun/pages/core-concepts/deployment-options.adoc
+++ b/antora/components/ug/modules/fun/pages/core-concepts/deployment-options.adoc
@@ -19,7 +19,7 @@ Apache Wicket, and therefore Apache Isis in this configuration, is a stateful ar
 As a platform it is certainly capable of supporting user bases of several thousand (with perhaps one or two hundred concurrent); however it isn't an architecture that you should try to scale up to tens of thousands of concurrent users.
 
 The UI generated by the Wicket viewer is well suited to many line-of-business apps, but it's also worth knowing that (with a little knowledge of the Wicket APIs) it relatively straightforward to extend.
-As described in xref:ug:fun:ugfun.adoc#_ugfun_available-domain-services_isis-addons[Isis addons] chapter, the viewer already has integrations with the (non-ASF) link:http://platform.incode.org[Incode Platform^]'s gmap3, fullcalendar2 and excel Wicket components.
+As described in xref:ug:fun:available-domain-services/isis-addons.adoc[Isis addons] chapter, the viewer already has integrations with the (non-ASF) link:http://platform.incode.org[Incode Platform^]'s gmap3, fullcalendar2 and excel Wicket components.
 We are also aware of integrations with SVG images (for floor maps of shopping center) and of custom widgets displaying a catalogue (text and images) of medical diseases.
 
 Deploying on Apache Isis means that the framework also manages object persistence.
diff --git a/antora/components/ug/modules/fun/pages/crud/deleting.adoc b/antora/components/ug/modules/fun/pages/crud/deleting.adoc
index f2f9acb..dc36380 100644
--- a/antora/components/ug/modules/fun/pages/crud/deleting.adoc
+++ b/antora/components/ug/modules/fun/pages/crud/deleting.adoc
@@ -13,7 +13,7 @@ repositoryService.remove(customer);
 
 It's worth being aware that (as for persisting new entities) the framework does _not_ eagerly delete the object.
 Rather, it queues up an internal command structure representing the object deletion request.
-This is then executed either at the end of the transaction, or if a  xref:ug:fun:ugfun.adoc#_ugfun_crud_finding[query is run], or if the internal queue is manually flushed using xref:rg:svc:rgsvc.adoc#_rgsvc_application-layer-api_TransactionService[`TransactionService`]'s `flush()` method.
+This is then executed either at the end of the transaction, or if a  xref:ug:fun:crud/finding.adoc[query is run], or if the internal queue is manually flushed using xref:rg:svc:rgsvc.adoc#_rgsvc_application-layer-api_TransactionService[`TransactionService`]'s `flush()` method.
 
 Alternatively, you can use:
 
diff --git a/antora/components/ug/modules/fun/pages/crud/persisting.adoc b/antora/components/ug/modules/fun/pages/crud/persisting.adoc
index 303c2e3..9692d42 100644
--- a/antora/components/ug/modules/fun/pages/crud/persisting.adoc
+++ b/antora/components/ug/modules/fun/pages/crud/persisting.adoc
@@ -30,7 +30,7 @@ repositoryService.persist(customer);
 
 It's worth being aware that the framework does _not_ eagerly persist the object.
 Rather, it queues up an internal command structure representing the object persistence request.
-This is then executed either at the end of the transaction, or if a xref:ug:fun:ugfun.adoc#_ugfun_crud_finding[query is run], or if the internal queue is manually flushed using xref:rg:svc:rgsvc.adoc#_rgsvc_application-layer-api_TransactionService[`TransactionService`]'s `flush()` method.
+This is then executed either at the end of the transaction, or if a xref:ug:fun:crud/finding.adoc[query is run], or if the internal queue is manually flushed using xref:rg:svc:rgsvc.adoc#_rgsvc_application-layer-api_TransactionService[`TransactionService`]'s `flush()` method.
 
 Alternatively, you can use:
 
diff --git a/antora/components/ug/modules/fun/pages/programming-model/actions.adoc b/antora/components/ug/modules/fun/pages/programming-model/actions.adoc
index f435fb6..2a6db1d 100644
--- a/antora/components/ug/modules/fun/pages/programming-model/actions.adoc
+++ b/antora/components/ug/modules/fun/pages/programming-model/actions.adoc
@@ -4,7 +4,7 @@ include::_attributes.adoc[]
 
 
 
-While xref:ug:fun:ugfun.adoc#_ugfun_programming-model_properties[properties] and xref:ug:fun:ugfun.adoc#_ugfun_programming-model_collections[collections] define the state held by a domain object (its "know what" responsibilities), actions define the object's behaviour (its "know how-to" responsibilities).
+While xref:ug:fun:programming-model/properties.adoc[properties] and xref:ug:fun:programming-model/collections.adoc[collections] define the state held by a domain object (its "know what" responsibilities), actions define the object's behaviour (its "know how-to" responsibilities).
 
 An application whose domain objects have only/mostly "know-what" responsibilities is pretty dumb: it requires that the end-user know the business rules and doesn't modify the state of the domain objects such that they are invalid (for example, an "end date" being before a "start date").
 Such applications are often called CRUD applications (create/read/update/delete).
@@ -183,7 +183,7 @@ public Order invoice(
 <1> Specifies the property is optional.
 <2> Specifies the corresponding parameter is optional.
 
-See also xref:ug:fun:ugfun.adoc#_ugfun_programming-model_properties-vs-parameters[properties vs parameters].
+See also xref:ug:fun:programming-model/properties-vs-parameters.adoc[properties vs parameters].
 
 == ``String`` Parameters (Length)
 
@@ -223,7 +223,7 @@ Incidentally, note in the above example that the new value is assigned to the pr
 This is important, because it allows JDO/DataNucleus to keep track that this instance variable is "dirty" and so needs flushing to the database table before the transaction completes.
 ====
 
-See also xref:ug:fun:ugfun.adoc#_ugfun_programming-model_properties-vs-parameters[properties vs parameters].
+See also xref:ug:fun:programming-model/properties-vs-parameters.adoc[properties vs parameters].
 
 == ``BigDecimal``s (Precision)
 
@@ -249,7 +249,7 @@ public Order updateDiscount(
 <1> Specifies the property precision using xref:rg:ant:Column/scale.adoc[`@Column#scale()`]
 <2> Specifies the corresponding parameter precision using xref:rg:ant:Digits.adoc[`@Digits#fraction()`].
 
-See also xref:ug:fun:ugfun.adoc#_ugfun_programming-model_properties-vs-parameters[properties vs parameters].
+See also xref:ug:fun:programming-model/properties-vs-parameters.adoc[properties vs parameters].
 
 
 
diff --git a/antora/components/ug/modules/fun/pages/programming-model/collections.adoc b/antora/components/ug/modules/fun/pages/programming-model/collections.adoc
index 63c6a62..896a89c 100644
--- a/antora/components/ug/modules/fun/pages/programming-model/collections.adoc
+++ b/antora/components/ug/modules/fun/pages/programming-model/collections.adoc
@@ -23,8 +23,8 @@ This and other annotations can be used to specify if the association is bidirect
 
 Apache Isis recognises some of these annotations for JDO/DataNucleus and JAXB and infers some domain semantics from them (for example, the maximum allowable length of a string property).
 
-Unlike xref:ug:fun:ugfun.adoc#_ugfun_programming-model_properties[properties], the framework (at least, the xref:ug:vw:ugvw.adoc#[Wicket viewer]) does not allow collections to be "edited".
-Instead, xref:ug:fun:ugfun.adoc#_ugfun_programming-model_actions[action]s can be written that will modify the contents of the collection as a side-effect.
+Unlike xref:ug:fun:programming-model/properties.adoc[properties], the framework (at least, the xref:ug:vw:ugvw.adoc#[Wicket viewer]) does not allow collections to be "edited".
+Instead, xref:ug:fun:programming-model/actions.adoc[action]s can be written that will modify the contents of the collection as a side-effect.
 For example, a `placeOrder(...)` action will likely add an `Order` to the `Customer#orders` collection.
 
 Since writing getter and setter methods adds quite a bit of boilerplate, it's common to use link:https://projectlombok.org/[Project Lombok] to code generate these methods at compile time (using Java's annotation processor) simply by adding the `@lombok.Getter` and `@lombok.Setter` annotations to the field.
diff --git a/antora/components/ug/modules/fun/pages/programming-model/domain-services/contributions.adoc b/antora/components/ug/modules/fun/pages/programming-model/domain-services/contributions.adoc
index efa2e3e..2d5067e 100644
--- a/antora/components/ug/modules/fun/pages/programming-model/domain-services/contributions.adoc
+++ b/antora/components/ug/modules/fun/pages/programming-model/domain-services/contributions.adoc
@@ -9,7 +9,7 @@ Services can contribute either actions, properties or collections, based on the
 [WARNING]
 ====
 Contributed services should be considered a deprecated feature.
-Instead, contribute the behaviour using xref:ug:fun:ugfun.adoc#_ugfun_building-blocks_mixins[mixins].
+Instead, contribute the behaviour using xref:ug:fun:building-blocks/mixins.adoc[mixins].
 ====
 
 We suggest naming such classes `XxxContributions`, eg:
@@ -39,7 +39,7 @@ public class OrderContributions {
 <2> contributed as an association, in particular as a collection because returns a `List<T>`.
 <3> Only actions with a single argument can be contributed as associations
 
-More information about contributions can be found xref:ug:fun:ugfun.adoc#_ugfun_how-tos_contributed-members[here].  More information
+More information about contributions can be found xref:ug:fun:how-tos/contributed-members.adoc[here].  More information
 about using contributions and mixins to keep your domain application decoupled can be found xref:ug:fun:ugfun.adoc#_ugfun_building-blocks_types-of-domain-objects_mixins[here] and xref:ug:fun:ugfun.adoc#_ugfun_programming-model_domain-services_contributions[contributed services]).
 
 
diff --git a/antora/components/ug/modules/fun/pages/programming-model/domain-services/menu.adoc b/antora/components/ug/modules/fun/pages/programming-model/domain-services/menu.adoc
index d4d79bc..fbea205 100644
--- a/antora/components/ug/modules/fun/pages/programming-model/domain-services/menu.adoc
+++ b/antora/components/ug/modules/fun/pages/programming-model/domain-services/menu.adoc
@@ -66,7 +66,7 @@ The menu is named "Customers" (otherwise it would have defaulted to "Customer Me
 <4> The xref:rg:ant:ParameterLayout.adoc[`@ParameterLayout`] provides metadata for the parameter itself, in this case its name.
 <5> the action implementation delegates to an injected repository.
 The framework can inject into not just other domain services but will also automatically into domain entities and view models.
-There is further discussion of service injection xref:ug:fun:ugfun.adoc#_ugfun_programming-model_inject-services[below].
+There is further discussion of service injection xref:ug:fun:programming-model/inject-services.adoc[below].
 <6> xref:rg:ant:Action/restrictTo.adoc[Prototype] actions are rendered only in prototyping mode.
 A "list all" action such as this can be useful when exploring the domain with a small dataset.
 
diff --git a/antora/components/ug/modules/fun/pages/programming-model/properties.adoc b/antora/components/ug/modules/fun/pages/programming-model/properties.adoc
index b2f2e08..35bbd04 100644
--- a/antora/components/ug/modules/fun/pages/programming-model/properties.adoc
+++ b/antora/components/ug/modules/fun/pages/programming-model/properties.adoc
@@ -25,7 +25,7 @@ It's also possible (using annotations) to define a link table to hold foreign ke
 Apache Isis recognises some of these annotations for JDO/DataNucleus and JAXB and infers some domain semantics from them (for example, the maximum allowable length of a string property).
 
 Since writing getter and setter methods adds quite a bit of boilerplate, it's common to use link:https://projectlombok.org/[Project Lombok] to code generate these methods at compile time (using Java's annotation processor) simply by adding the `@lombok.Getter` and `@lombok.Setter` annotations to the field.
-The xref:ugfun.adoc#_ugfun_getting-started_helloworld-archetype[HelloWorld] and xref:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp] archetypes use this approach.
+The xref:ug:fun:getting-started/helloworld-archetype.adoc[HelloWorld] and xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp] archetypes use this approach.
 
 
 == Value vs Reference Types
@@ -69,7 +69,7 @@ For further details on mapping associations, see the JDO/DataNucleus documentati
 ====
 
 For domain entities, the annotations for mapping value types tend to be different for properties vs action parameters, because JDO annotations are only valid on properties.
-The table in the xref:ug:fun:ugfun.adoc#_ugfun_programming-model_properties-vs-parameters[Properties vs Parameters] section provides a handy reference of each.
+The table in the xref:ug:fun:programming-model/properties-vs-parameters.adoc[Properties vs Parameters] section provides a handy reference of each.
 
 
 == Optional Properties
diff --git a/antora/components/ug/modules/fun/pages/programming-model/view-models/non-jaxb.adoc b/antora/components/ug/modules/fun/pages/programming-model/view-models/non-jaxb.adoc
index 59715da..9b3ab89 100644
--- a/antora/components/ug/modules/fun/pages/programming-model/view-models/non-jaxb.adoc
+++ b/antora/components/ug/modules/fun/pages/programming-model/view-models/non-jaxb.adoc
@@ -8,7 +8,7 @@ Instead of using JAXB to specify a view model, it is also possible to use Apache
 
 [WARNING]
 ====
-As was explained xref:ug:fun:ugfun.adoc#_ugfun_programming-model_view-models[earlier], the approach is described here is neither as flexible nor as powerful as using the JAXB-style of view models.
+As was explained xref:ug:fun:programming-model/view-models.adoc[earlier], the approach is described here is neither as flexible nor as powerful as using the JAXB-style of view models.
 As such, it may be deprecated in the future.
 ====
 
diff --git a/antora/components/ug/modules/odn/pages/configuring/disabling-persistence-by-reachability.adoc b/antora/components/ug/modules/odn/pages/configuring/disabling-persistence-by-reachability.adoc
index 9fdc0df..ac6ed23 100644
--- a/antora/components/ug/modules/odn/pages/configuring/disabling-persistence-by-reachability.adoc
+++ b/antora/components/ug/modules/odn/pages/configuring/disabling-persistence-by-reachability.adoc
@@ -26,7 +26,7 @@ We therefore recommend that you disable persistence-by-reachability by adding th
 isis.persistor.datanucleus.impl.datanucleus.persistenceByReachabilityAtCommit=false
 ----
 
-This change has been made to both the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_helloworld-archetype[HelloWorld] and xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp] archetypes.
+This change has been made to both the xref:ug:fun:getting-started/helloworld-archetype.adoc[HelloWorld] and xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp] archetypes.
 
 If you do disable this feature, then you will (of course) need to ensure that you explicitly persist all entities using the `RepositoryService#persist(.)` or `RepositoryService#persistAndFlush(.)` methods.
 
diff --git a/antora/components/ug/modules/odn/pages/configuring/persistence-xml.adoc b/antora/components/ug/modules/odn/pages/configuring/persistence-xml.adoc
index 8cbc1ef..838a729 100644
--- a/antora/components/ug/modules/odn/pages/configuring/persistence-xml.adoc
+++ b/antora/components/ug/modules/odn/pages/configuring/persistence-xml.adoc
@@ -8,7 +8,7 @@ DataNucleus will for itself also and read the `META-INF/persistence.xml`.
 In theory it can hold mappings and even connection strings.
 However, with Apache Isis we tend to use annotations instead and externalize connection strings. so its definition is extremely simply, specifying just the name of the "persistence unit".
 
-Here's the one provided by the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype]:
+Here's the one provided by the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype]:
 
 [source,xml]
 ----
diff --git a/antora/components/ug/modules/sec/pages/about.adoc b/antora/components/ug/modules/sec/pages/about.adoc
index 98b4761..a2bb55c 100644
--- a/antora/components/ug/modules/sec/pages/about.adoc
+++ b/antora/components/ug/modules/sec/pages/about.adoc
@@ -52,7 +52,7 @@ Isis provides an API for both authentication and authorization, and provides an
 Shiro in turn uses the concept of a _realm_ as a source for both authentication and optionally authorization.
 
 Shiro ships with a simple text-based realm -- the `IniRealm` -- which reads users (and password), user roles and role permissions from the `WEB-INF/shiro.ini` file.
-The xref:ug:fun:ugfun.adoc#_ugfun_getting-started_helloworld-archetype[HelloWorld] and xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp] archetypes are both configured to use this realm.
+The xref:ug:fun:getting-started/helloworld-archetype.adoc[HelloWorld] and xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp] archetypes are both configured to use this realm.
 
 Shiro also ships with an implementation of an LDAP-based realm; LDAP is often used to manage user/passwords and corresponding user groups.
 Apache Isis in turn extends this with its `IsisLdapRealm`, which provides more flexibility for both group/role and role/permissions management.
diff --git a/antora/components/ug/modules/sec/pages/configuring-isis-to-use-shiro.adoc b/antora/components/ug/modules/sec/pages/configuring-isis-to-use-shiro.adoc
index d40f544..eb1ca21 100644
--- a/antora/components/ug/modules/sec/pages/configuring-isis-to-use-shiro.adoc
+++ b/antora/components/ug/modules/sec/pages/configuring-isis-to-use-shiro.adoc
@@ -8,7 +8,7 @@ The Shiro security mechanism is an integration wih Apache Shiro that implements
 
 [TIP]
 ====
-Both the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_helloworld-archetype[HelloWorld] and xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp] archetypes are pre-configured to use Apache Shiro, so much of what follows may well have been set up already.
+Both the xref:ug:fun:getting-started/helloworld-archetype.adoc[HelloWorld] and xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp] archetypes are pre-configured to use Apache Shiro, so much of what follows may well have been set up already.
 ====
 
 
@@ -16,7 +16,7 @@ Both the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_helloworld-archetype[Hell
 
 To tell Apache Isis to use Shiro when using an xref:rg:cms:rgcms.adoc#__rgcms_classes_AppManifest-bootstrapping_bootstrapping_AppManifestAbstract[`AppManifestAbstract.BUILDER`], simply specify the "authMechanism" as "shiro".
 
-For example, the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_helloworld-archetype[HelloWorld archetype] bootstraps using:
+For example, the xref:ug:fun:getting-started/helloworld-archetype.adoc[HelloWorld archetype] bootstraps using:
 
 [source,java]
 ----
diff --git a/antora/components/ug/modules/sec/pages/shiro-realm-implementations/ini-realm.adoc b/antora/components/ug/modules/sec/pages/shiro-realm-implementations/ini-realm.adoc
index 0a89b5a..713aecb 100644
--- a/antora/components/ug/modules/sec/pages/shiro-realm-implementations/ini-realm.adoc
+++ b/antora/components/ug/modules/sec/pages/shiro-realm-implementations/ini-realm.adoc
@@ -7,7 +7,7 @@ Probably the simplest realm to use is Shiro's built-in `IniRealm`, which reads f
 
 This is suitable for prototyping, but isn't intended for production use, if only because user/password credentials are stored in plain text.
 Nevertheless, it's a good starting point.
-The app generated by both the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_helloworld-archetype[HelloWorld] and xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp]  archetypes are configured to use this realm.
+The app generated by both the xref:ug:fun:getting-started/helloworld-archetype.adoc[HelloWorld] and xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp]  archetypes are configured to use this realm.
 
 The diagram below shows the Isis and components involved:
 
diff --git a/antora/components/ug/modules/tst/pages/bdd-spec-support/maven-configuration.adoc b/antora/components/ug/modules/tst/pages/bdd-spec-support/maven-configuration.adoc
index cc11a32..4149f37 100644
--- a/antora/components/ug/modules/tst/pages/bdd-spec-support/maven-configuration.adoc
+++ b/antora/components/ug/modules/tst/pages/bdd-spec-support/maven-configuration.adoc
@@ -5,7 +5,7 @@ include::_attributes.adoc[]
 
 
 
-Apache Isis' BDD spec support is automatically configured if you use the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype].
+Apache Isis' BDD spec support is automatically configured if you use the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype].
 To set it up manually, update the `pom.xml` of your domain object model module:
 
 [source,xml]
diff --git a/antora/components/ug/modules/tst/pages/bdd-spec-support/writing-a-bdd-spec.adoc b/antora/components/ug/modules/tst/pages/bdd-spec-support/writing-a-bdd-spec.adoc
index 1933615..021f832 100644
--- a/antora/components/ug/modules/tst/pages/bdd-spec-support/writing-a-bdd-spec.adoc
+++ b/antora/components/ug/modules/tst/pages/bdd-spec-support/writing-a-bdd-spec.adoc
@@ -25,7 +25,7 @@ The `glue` attribute of the Cucumber-JVM JUnit runner allows you to indicate whi
 There also needs to be one glue class that is used to bootstrap the runtime.
 
 
-Here's an example of a feature from the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype]:
+Here's an example of a feature from the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype]:
 
 [source,java]
 ----
@@ -68,7 +68,7 @@ public class RunBddSpecs {
 ----
 
 The JSON formatter allows integration with enhanced reports.
-(Commented out) configuration for this is provided in the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype].
+(Commented out) configuration for this is provided in the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype].
 
 The bootstrapping of Apache Isis itself lives in a `BootstrappingGlue` step definition:
 
diff --git a/antora/components/ug/modules/tst/pages/fixture-scripts/api-and-usage.adoc b/antora/components/ug/modules/tst/pages/fixture-scripts/api-and-usage.adoc
index bc2af47..a70a39e 100644
--- a/antora/components/ug/modules/tst/pages/fixture-scripts/api-and-usage.adoc
+++ b/antora/components/ug/modules/tst/pages/fixture-scripts/api-and-usage.adoc
@@ -19,7 +19,7 @@ This is annotated to be rendered on the secondary "Prototyping" menu.
 
 The behaviour of this domain menu service can be refined by providing an implementation of the optional xref:rg:svc:rgsvc.adoc#_rgsvc_testing_FixtureScriptsSpecificationProvider[`FixtureScriptsSpecificationProvider`] SPI.
 
-For example, here's the `FixtureScriptsSpecificationProvider` service that's generated by the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype]:
+For example, here's the `FixtureScriptsSpecificationProvider` service that's generated by the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype]:
 
 [source,java]
 ----
@@ -70,7 +70,7 @@ If you had defined many fixture scripts then a drop-down might become unwieldy,
 
 ----
 
-You are free, of course, to add additional "convenience" actions into it if you wish for the most commonly used/demo'd setups ; you'll find that the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype] adds this additional action:
+You are free, of course, to add additional "convenience" actions into it if you wish for the most commonly used/demo'd setups ; you'll find that the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype] adds this additional action:
 
 [source,java]
 ----
@@ -99,7 +99,7 @@ However, we strongly recommend that you use it to invoke actions on business obj
 That way, the fixture script will remain valid even if the underlying implementation of the system changes in the future.
 
 For example, here's a fixture script called `RecreateSimpleObjects`.
-(This used to be part of the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype], though the archetype now ships with a more sophisticated design, discussed below):
+(This used to be part of the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype], though the archetype now ships with a more sophisticated design, discussed below):
 
 [source,java]
 ----
@@ -168,7 +168,7 @@ So, in this case, when the fixture script is executed we actually get 6 objects
 
 Fixture scripts can be called from integration tests just the same way that fixture scripts can call one another.
 
-For example, here's an integration test from the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype]:
+For example, here's an integration test from the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype]:
 
 [source,java]
 ----
@@ -250,7 +250,7 @@ public interface PersonaWithFinder<T> {
 }
 ----
 
-The xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype] provides a sample implementation of these interfaces:
+The xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype] provides a sample implementation of these interfaces:
 
 [source,java]
 ----
diff --git a/antora/components/ug/modules/tst/pages/integ-test-support/bootstrapping.adoc b/antora/components/ug/modules/tst/pages/integ-test-support/bootstrapping.adoc
index 205d064..ad00f79 100644
--- a/antora/components/ug/modules/tst/pages/integ-test-support/bootstrapping.adoc
+++ b/antora/components/ug/modules/tst/pages/integ-test-support/bootstrapping.adoc
@@ -9,7 +9,7 @@ Because (depending on the size of your app) it takes a little time to bootstrap
 
 The recommended way to bootstrapping of integration tests is done using a xref:rg:cms:classes/AppManifest2-bootstrapping.adoc[`Module`] implementation, along with the `IntegrationTestAbstract3` superclass.
 
-For example, the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype]'s integration tests all inherit from this class:
+For example, the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype]'s integration tests all inherit from this class:
 
 [source,java]
 ----
diff --git a/antora/components/ug/modules/tst/pages/integ-test-support/maven-configuration.adoc b/antora/components/ug/modules/tst/pages/integ-test-support/maven-configuration.adoc
index 5833393..94cf329 100644
--- a/antora/components/ug/modules/tst/pages/integ-test-support/maven-configuration.adoc
+++ b/antora/components/ug/modules/tst/pages/integ-test-support/maven-configuration.adoc
@@ -3,7 +3,7 @@
 include::_attributes.adoc[]
 
 
-Apache Isis' integration test support is automatically configured if you use the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype].
+Apache Isis' integration test support is automatically configured if you use the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype].
 To set it up manually, update the `pom.xml` of your domain object model module:
 
 [source,xml]
@@ -20,7 +20,7 @@ To set it up manually, update the `pom.xml` of your domain object model module:
 
 [NOTE]
 ====
-This can also be done by adding a dependency to `org.apache.isis.mavendeps:isis-mavendeps-testing` module; see the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype].
+This can also be done by adding a dependency to `org.apache.isis.mavendeps:isis-mavendeps-testing` module; see the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype].
 ====
 
 We also recommend that you configure the `maven-surefire-plugin` to pick up the following class patterns:
@@ -51,5 +51,5 @@ We also recommend that you configure the `maven-surefire-plugin` to pick up the
 
 [NOTE]
 ====
-This can also be done using mavenmixins; see the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype].
+This can also be done using mavenmixins; see the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype].
 ====
diff --git a/antora/components/ug/modules/tst/pages/unit-test-support/maven-configuration.adoc b/antora/components/ug/modules/tst/pages/unit-test-support/maven-configuration.adoc
index 62b9dc1..617640e 100644
--- a/antora/components/ug/modules/tst/pages/unit-test-support/maven-configuration.adoc
+++ b/antora/components/ug/modules/tst/pages/unit-test-support/maven-configuration.adoc
@@ -3,7 +3,7 @@
 include::_attributes.adoc[]
 
 
-Apache Isis' unit test support is automatically configured if you use the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_helloworld-archetype[HelloWorld] or the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp] archetypes.
+Apache Isis' unit test support is automatically configured if you use the xref:ug:fun:getting-started/helloworld-archetype.adoc[HelloWorld] or the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp] archetypes.
 To set it up manually, update the `pom.xml` of your domain object model module:
 
 [source,xml]
@@ -19,7 +19,7 @@ To set it up manually, update the `pom.xml` of your domain object model module:
 
 [NOTE]
 ====
-This can also be done by adding a dependency to `org.apache.isis.mavendeps:isis-mavendeps-testing` module; see the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype].
+This can also be done by adding a dependency to `org.apache.isis.mavendeps:isis-mavendeps-testing` module; see the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype].
 ====
 
 
@@ -51,5 +51,5 @@ We also recommend that you configure the `maven-surefire-plugin` to pick up the
 
 [NOTE]
 ====
-This can also be done using mavenmixins; see the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype].
+This can also be done using mavenmixins; see the xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp archetype].
 ====
diff --git a/antora/components/ug/modules/vro/pages/layout-resources.adoc b/antora/components/ug/modules/vro/pages/layout-resources.adoc
index 8b15b5e..6882bc6 100644
--- a/antora/components/ug/modules/vro/pages/layout-resources.adoc
+++ b/antora/components/ug/modules/vro/pages/layout-resources.adoc
@@ -13,7 +13,7 @@ This chapter provides details of these resources, the link ``Rel``s to access th
 
 The xref:rg:svc:rgsvc.adoc#_rgsvc_presentation-layer-spi_MenuBarsService[`MenuBarsService`] provides the `menu.layout.xml` XML document which defines how to group the various domain service actions into menubars, menus and menu sections.
 
-For example, the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_helloworld-archetype[Hello World archetype] has the following layout:
+For example, the xref:ug:fun:getting-started/helloworld-archetype.adoc[Hello World archetype] has the following layout:
 
 [source,xml]
 ----
@@ -135,7 +135,7 @@ Note that because of dynamic icons (the xref:rg:cms:rgcms.adoc#_rgcms_methods_re
 The xref:rg:svc:rgsvc.adoc#_rgsvc_presentation-layer-spi_GridService[`GridService`] provides an XML document which defines the layout of any of domain object.
 Typically this is the contents of the `Xxx.layout.xml` file (where `Xxx` is the domain type).
 
-For example, in the xref:ug:fun:ugfun.adoc#_ugfun_getting-started_helloworld-archetype[Hello World archetype] the `HelloWorld` domain object has a layout defined by `HelloWorld.layout.xml`.
+For example, in the xref:ug:fun:getting-started/helloworld-archetype.adoc[Hello World archetype] the `HelloWorld` domain object has a layout defined by `HelloWorld.layout.xml`.
 
 The representation returned by the domain object resource (section 14.4 of the RO spec v1.0) has been extended to provide a link to this resource:
 
diff --git a/antora/components/ug/modules/vw/pages/layout/file-based.adoc b/antora/components/ug/modules/vw/pages/layout/file-based.adoc
index f695d63..d994b3b 100644
--- a/antora/components/ug/modules/vw/pages/layout/file-based.adoc
+++ b/antora/components/ug/modules/vw/pages/layout/file-based.adoc
@@ -12,7 +12,7 @@ File-based layouts offer a number of benefits:
 
 * Many developers also find it easier to rationalize about layout when all the hints are collated together in a single place (rather than scattered across the class members as annotations).
 
-* UI hints can be provided for xref:ug:fun:ugfun.adoc#_ugfun_how-tos_contributed-members[contributed associations and actions] that are synthesised at runtime.
+* UI hints can be provided for xref:ug:fun:how-tos/contributed-members.adoc[contributed associations and actions] that are synthesised at runtime.
 
 It is also possible to download an initial `.layout.xml` - capturing any existing layout metadata - using the xref:rg:svc:rgsvc.adoc#_rgsvc_metadata-api_LayoutService[`LayoutService`] (exposed on the prototyping menu) or using a xref:rg:cms:rgcms.adoc#_rgcms_classes_mixins_Object[mixin action] contributed to every domain object.
 
@@ -458,7 +458,7 @@ Ensure the following is defined in the dom project's `pom.xml`:
 </resources>
 ----
 
-If using an Apache Isis xref:ug:fun:ugfun.adoc#_ugfun_getting-started_helloworld-archetype[HelloWorld] xref:ug:fun:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp] archetypes, then the POM is already correctly configured.
+If using an Apache Isis xref:ug:fun:getting-started/helloworld-archetype.adoc[HelloWorld] xref:ug:fun:getting-started/simpleapp-archetype.adoc[SimpleApp] archetypes, then the POM is already correctly configured.