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 2015/12/04 11:12:41 UTC

[3/7] isis-site git commit: ISIS-1243: fixing links to fundamentals guide; updating asciidoc live templates; updating contributors guide that documents the asciidoc live templates

http://git-wip-us.apache.org/repos/asf/isis-site/blob/9c97beac/content/guides/tg.html
----------------------------------------------------------------------
diff --git a/content/guides/tg.html b/content/guides/tg.html
index 0e598e4..e4f3f9a 100644
--- a/content/guides/tg.html
+++ b/content/guides/tg.html
@@ -519,7 +519,7 @@ table.CodeRay td.code>pre{padding:0}
 
         <div id="doc-content">
           <div class="sect1">
-<h2 id="_tg">Tutorials</h2>
+<h2 id="_tg">1. Tutorials</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This page contains a couple of tutorials for you to follow.</p>
@@ -543,10 +543,10 @@ table.CodeRay td.code>pre{padding:0}
 </div>
 </div>
 <div class="sect1">
-<h2 id="_tg_tutorials_pet-clinic">Pet Clinic</h2>
+<h2 id="_tg_tutorials_pet-clinic">2. Pet Clinic</h2>
 <div class="sectionbody">
 <div class="paragraph">
-<p>This is a step-by-step tutorial to build up a simple "petclinic" application, starting from the <a href="ug.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>.  It was originally written by Jeroen van der Wal.</p>
+<p>This is a step-by-step tutorial to build up a simple "petclinic" application, starting from the <a href="ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>.  It was originally written by Jeroen van der Wal.</p>
 </div>
 <div class="paragraph">
 <p>It consists of just three domain classes (<a href="http://yuml.me/edit/3db2078c">http://yuml.me/3db2078c</a>):</p>
@@ -585,7 +585,7 @@ table.CodeRay td.code>pre{padding:0}
 <p>Either follow along or check out the tags from the corresponding <a href="https://github.com/danhaywood/isis-app-petclinic">github repo</a>.</p>
 </div>
 <div class="sect2">
-<h3 id="_prerequisites">Prerequisites</h3>
+<h3 id="_prerequisites">2.1. Prerequisites</h3>
 <div class="paragraph">
 <p>You&#8217;ll need:</p>
 </div>
@@ -604,7 +604,7 @@ table.CodeRay td.code>pre{padding:0}
 </div>
 </div>
 <div class="sect2">
-<h3 id="_run_the_archetype">Run the archetype</h3>
+<h3 id="_run_the_archetype">2.2. Run the archetype</h3>
 <div class="paragraph">
 <p>Throughout this tutorial you can, if you wish, just checkout from the github repo wherever you see a "git checkout" note:</p>
 </div>
@@ -665,7 +665,7 @@ rmdir petclinic</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_build_and_run">Build and run</h3>
+<h3 id="_build_and_run">2.3. Build and run</h3>
 <div class="paragraph">
 <p>Start off by building the app from the command line:</p>
 </div>
@@ -698,7 +698,7 @@ rmdir petclinic</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_using_the_app">Using the app</h3>
+<h3 id="_using_the_app">2.4. Using the app</h3>
 <div class="paragraph">
 <p>Navigate to the Wicket UI (eg <a href="http://localhost:8080/wicket">http://localhost:8080/wicket</a>), and login (sven/pass).</p>
 </div>
@@ -757,7 +757,7 @@ rmdir petclinic</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_dev_environment">Dev environment</h3>
+<h3 id="_dev_environment">2.5. Dev environment</h3>
 <div class="paragraph">
 <p>Set up <a href="cg.html#_cg_ide">an IDE</a> and import the project to be able to run and debug the app.</p>
 </div>
@@ -788,7 +788,7 @@ every time, specify the following system properties:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_explore_codebase">Explore codebase</h3>
+<h3 id="_explore_codebase">2.6. Explore codebase</h3>
 <div class="paragraph">
 <p>Apache Isis applications are organized into several Maven modules. Within your IDE navigate to the various classes and correlate back to the generated UI:</p>
 </div>
@@ -837,7 +837,7 @@ every time, specify the following system properties:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_testing">Testing</h3>
+<h3 id="_testing">2.7. Testing</h3>
 <div class="paragraph">
 <p>Testing is of course massively important, and Apache Isis makes both unit testing and (end-to-end) integration testing easy. Building the app from the Maven command line ("mvn clean install") will run all tests, but you should also run the tests from within the IDE.</p>
 </div>
@@ -902,7 +902,7 @@ every time, specify the following system properties:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_update_pom_files">Update POM files</h3>
+<h3 id="_update_pom_files">2.8. Update POM files</h3>
 <div class="admonitionblock tip">
 <table>
 <tr>
@@ -924,7 +924,7 @@ every time, specify the following system properties:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_delete_the_bdd_specs">Delete the BDD specs</h3>
+<h3 id="_delete_the_bdd_specs">2.9. Delete the BDD specs</h3>
 <div class="admonitionblock tip">
 <table>
 <tr>
@@ -959,7 +959,7 @@ every time, specify the following system properties:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rename_artifacts">Rename artifacts</h3>
+<h3 id="_rename_artifacts">2.10. Rename artifacts</h3>
 <div class="admonitionblock tip">
 <table>
 <tr>
@@ -1187,7 +1187,7 @@ every time, specify the following system properties:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_update_package_names">Update package names</h3>
+<h3 id="_update_package_names">2.11. Update package names</h3>
 <div class="admonitionblock tip">
 <table>
 <tr>
@@ -1230,7 +1230,7 @@ every time, specify the following system properties:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_add_code_petspecies_code_enum">Add <code>PetSpecies</code> enum</h3>
+<h3 id="_add_code_petspecies_code_enum">2.12. Add <code>PetSpecies</code> enum</h3>
 <div class="admonitionblock tip">
 <table>
 <tr>
@@ -1281,7 +1281,7 @@ every time, specify the following system properties:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_icon_to_reflect_pet_species">Icon to reflect pet species</h3>
+<h3 id="_icon_to_reflect_pet_species">2.13. Icon to reflect pet species</h3>
 <div class="admonitionblock tip">
 <table>
 <tr>
@@ -1333,7 +1333,7 @@ every time, specify the following system properties:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_add_pet_s_code_owner_code">Add pet&#8217;s <code>Owner</code></h3>
+<h3 id="_add_pet_s_code_owner_code">2.14. Add pet&#8217;s <code>Owner</code></h3>
 <div class="admonitionblock tip">
 <table>
 <tr>
@@ -1447,7 +1447,7 @@ every time, specify the following system properties:</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_tg_tutorials_pet-clinic-extended">Pet Clinic (Extended)</h2>
+<h2 id="_tg_tutorials_pet-clinic-extended">3. Pet Clinic (Extended)</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>An extended version of the <a href="#_tg_tutorials_pet-clinic">pet clinic</a> can be found on <a href="https://github.com/johandoornenbal/tutorial_code/blob/master/AsciiDoc/1_petclinic_introduction.adoc">this github repo</a>.  It was written by Johan Doornenbal.</p>
@@ -1458,7 +1458,7 @@ every time, specify the following system properties:</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="_tg_tutorials_stop-scaffolding-start-coding">Stop scaffolding, start coding</h2>
+<h2 id="_tg_tutorials_stop-scaffolding-start-coding">4. Stop scaffolding, start coding</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>This is a half-day tutorial on developing domain-driven apps using Apache Isis.  Actually, you could probably spend a full day working through this tutorial if you wanted to, so pick and choose the bits that look interesting.  It was originally written by Dan Haywood.</p>
@@ -1467,7 +1467,7 @@ every time, specify the following system properties:</p>
 <p>There&#8217;s a bit of overlap with the <a href="#_tg_tutorials_pet-clinic">Pet Clinic</a> tutorial initially, but it then sets off on its own.</p>
 </div>
 <div class="sect2">
-<h3 id="_prerequisites_2">Prerequisites</h3>
+<h3 id="_prerequisites_2">4.1. Prerequisites</h3>
 <div class="paragraph">
 <p>You&#8217;ll need:</p>
 </div>
@@ -1486,7 +1486,7 @@ every time, specify the following system properties:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_run_the_archetype_2">Run the archetype</h3>
+<h3 id="_run_the_archetype_2">4.2. Run the archetype</h3>
 <div class="paragraph">
 <p>Run the simpleapp archetype to build an empty Isis application:</p>
 </div>
@@ -1505,7 +1505,7 @@ every time, specify the following system properties:</p>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_build_and_run_2">Build and run</h3>
+<h3 id="_build_and_run_2">4.3. Build and run</h3>
 <div class="paragraph">
 <p>Start off by building the app from the command line:</p>
 </div>
@@ -1539,7 +1539,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_using_the_app_2">Using the app</h3>
+<h3 id="_using_the_app_2">4.4. Using the app</h3>
 <div class="paragraph">
 <p>Navigate to the Wicket UI (eg <a href="http://localhost:8080/wicket">http://localhost:8080/wicket</a>), and login (sven/pass).</p>
 </div>
@@ -1567,7 +1567,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_dev_environment_2">Dev environment</h3>
+<h3 id="_dev_environment_2">4.5. Dev environment</h3>
 <div class="paragraph">
 <p>Set up <a href="cg.html#_cg_ide">an IDE</a> and import the project to be able to run and debug the app.</p>
 </div>
@@ -1595,7 +1595,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_explore_codebase_2">Explore codebase</h3>
+<h3 id="_explore_codebase_2">4.6. Explore codebase</h3>
 <div class="paragraph">
 <p>Apache Isis applications are organized into several Maven modules. Within your IDE navigate to the various classes and correlate back to the generated UI:</p>
 </div>
@@ -1632,7 +1632,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_testing_2">Testing</h3>
+<h3 id="_testing_2">4.7. Testing</h3>
 <div class="paragraph">
 <p>Testing is of course massively important, and Apache Isis makes both unit testing and (end-to-end) integration testing easy. Building the app from the Maven command line ("mvn clean install") will run all tests, but you should also run the tests from within the IDE.</p>
 </div>
@@ -1697,7 +1697,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_prototyping">Prototyping</h3>
+<h3 id="_prototyping">4.8. Prototyping</h3>
 <div class="paragraph">
 <p>Although testing is important, in this tutorial we want to concentrate on how to write features and to iterate quickly. So for now, exclude the <code>integtests</code> module. Later on in the tutorial we&#8217;ll add the tests back in so you can learn how to write automated tests for the features of your app.</p>
 </div>
@@ -1731,7 +1731,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_build_a_domain_app">Build a domain app</h3>
+<h3 id="_build_a_domain_app">4.9. Build a domain app</h3>
 <div class="paragraph">
 <p>The remainder of the tutorial provides guidance on building a domain application. We don&#8217;t mandate any particular design, but we suggest one with no more than 3 to 6 domain entities in the first instance. If you&#8217;re stuck for ideas, then how about:</p>
 </div>
@@ -1771,7 +1771,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_domain_entity">Domain entity</h3>
+<h3 id="_domain_entity">4.10. Domain entity</h3>
 <div class="paragraph">
 <p>Most domain objects in Apache Isis applications are persistent entities. In the simpleapp archetype the <code>SimpleObject</code> is an example. We can start developing our app by refactoring that class:</p>
 </div>
@@ -1798,10 +1798,10 @@ mvn clean install</code></pre>
 </div>
 </li>
 <li>
-<p>specify a <a href="ug.html#_ugfun_how-tos_ui-hints_object-titles-and-icons">title</a></p>
+<p>specify a <a href="ugfun.html#_ugfun_how-tos_ui-hints_object-titles-and-icons">title</a></p>
 </li>
 <li>
-<p>specify an <a href="ug.html#_ugfun_how-tos_ui-hints_object-titles-and-icons">icon</a></p>
+<p>specify an <a href="ugfun.html#_ugfun_how-tos_ui-hints_object-titles-and-icons">icon</a></p>
 </li>
 <li>
 <p>make the entity bookmarkable by adding the <a href="rgant.html#_rgant-DomainObjectLayout_bookmarking"><code>@DomainObjectLayout#bookmarking()</code></a> attribute.</p>
@@ -1813,7 +1813,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_domain_service">Domain service</h3>
+<h3 id="_domain_service">4.11. Domain service</h3>
 <div class="paragraph">
 <p>Domain services often act as factories or repositories to entities; more generally can be used to "bridge across" to other domains/bounded contexts. Most are application-scoped, but they can also be request-scoped if required.</p>
 </div>
@@ -1837,7 +1837,7 @@ mvn clean install</code></pre>
 <div class="ulist">
 <ul>
 <li>
-<p>as per the docs describing <a href="ug.html#_ugfun_how-tos_crud">how to create or delete objects</a></p>
+<p>as per the docs describing <a href="ugfun.html#_ugfun_how-tos_crud">how to create or delete objects</a></p>
 </li>
 </ul>
 </div>
@@ -1856,7 +1856,7 @@ mvn clean install</code></pre>
 <p>review <code>listAll</code> action (acting as a repository)</p>
 </li>
 <li>
-<p>as per the docs describing <a href="ug.html#_ugfun_how-tos_crud">how to write a custom repository</a></p>
+<p>as per the docs describing <a href="ugfun.html#_ugfun_how-tos_crud">how to write a custom repository</a></p>
 </li>
 <li>
 <p>note the annotations on the corresponding domain class (originally called <code>SimpleObject</code>, though renamed by now, eg to <code>Pet</code>)</p>
@@ -1891,7 +1891,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_fixture_scripts">Fixture scripts</h3>
+<h3 id="_fixture_scripts">4.12. Fixture scripts</h3>
 <div class="paragraph">
 <p>Fixture scripts are used to setup the app into a known state. They are great for demo&#8217;s and as a time-saver when implementing a feature, and they can also be reused in automated integration tests. We usually also have a fixture script to zap all the (non-reference) data (or some logical subset of the data)</p>
 </div>
@@ -1922,7 +1922,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_actions">Actions</h3>
+<h3 id="_actions">4.13. Actions</h3>
 <div class="paragraph">
 <p>Most business functionality is implemented using actions� basically a <code>public</code> method accepting domain classes and primitives as its parameter types. The action can return a domain entity, or a collection of entities, or a primitive/String/value, or void. If a domain entity is returned then that object is rendered immediately; if a collection is returned then the Wicket viewer renders a table. Such collections are sometimes called "standalone" collections.</p>
 </div>
@@ -1950,7 +1950,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_rest_api">REST API</h3>
+<h3 id="_rest_api">4.14. REST API</h3>
 <div class="paragraph">
 <p>As well as exposing the Wicket viewer, Isis also exposes a REST API (an implementation of the <a href="http://restfulobjects.org">Restful Objects spec</a>). All of the functionality of the domain object model is available through this REST API.</p>
 </div>
@@ -1987,7 +1987,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_specify_action_semantics">Specify Action semantics</h3>
+<h3 id="_specify_action_semantics">4.15. Specify Action semantics</h3>
 <div class="paragraph">
 <p>The semantics of an action (whether it is safe/query only, whether it is idempotent, whether it is neither) can be specified for each action; if not specified then Isis assumes non-idempotent. In the Wicket viewer this matters in that only query-only actions can be bookmarked or used as contributed properties/collections. In the RESTful viewer this matters in that it determines the HTTP verb (GET, PUT or POST) that is used to invoke the action.</p>
 </div>
@@ -2006,14 +2006,14 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_value_properties">Value properties</h3>
+<h3 id="_value_properties">4.16. Value properties</h3>
 <div class="paragraph">
 <p>Domain entities have state: either values (primitives, strings) or references to other entities. In this section we explore adding some value properties</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p>add some <a href="ug.html#_ugfun_how-tos_class-structure_properties">value properties</a>; also:</p>
+<p>add some <a href="ugfun.html#_ugfun_how-tos_class-structure_properties">value properties</a>; also:</p>
 </li>
 <li>
 <p>for string properties</p>
@@ -2061,7 +2061,7 @@ mvn clean install</code></pre>
 <div class="ulist">
 <ul>
 <li>
-<p>see also the docs on <a href="ug.html#_ugfun_object-layout_static">static layouts</a></p>
+<p>see also the docs on <a href="ugfun.html#_ugfun_object-layout_static">static layouts</a></p>
 </li>
 </ul>
 </div>
@@ -2080,14 +2080,14 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_reference_properties">Reference properties</h3>
+<h3 id="_reference_properties">4.17. Reference properties</h3>
 <div class="paragraph">
 <p>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.</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p>add some <a href="ug.html#_ugfun_how-tos_class-structure_properties">reference properties</a></p>
+<p>add some <a href="ugfun.html#_ugfun_how-tos_class-structure_properties">reference properties</a></p>
 </li>
 <li>
 <p>update the corresponding domain service (for creation actoin)</p>
@@ -2132,20 +2132,20 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_usability_defaults">Usability: Defaults</h3>
+<h3 id="_usability_defaults">4.18. Usability: Defaults</h3>
 <div class="paragraph">
 <p>Quick detour: often we want to set up defaults to go with choices. Sensible defaults for action parameters can really improve the usability of the app.</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p>Add <a href="ug.html#_ugfun_how-tos_drop-downs-and-defaults">defaults</a> for action parameters</p>
+<p>Add <a href="ugfun.html#_ugfun_how-tos_drop-downs-and-defaults">defaults</a> for action parameters</p>
 </li>
 </ul>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_collections">Collections</h3>
+<h3 id="_collections">4.19. Collections</h3>
 <div class="paragraph">
 <p>Returning back to references, Isis also supports vector (multi-valued) references to another object instances� in other words collections. We sometimes called these "parented" collections (to distinguish from a "standalone" collection as returned from an action)</p>
 </div>
@@ -2169,7 +2169,7 @@ mvn clean install</code></pre>
 </div>
 </li>
 <li>
-<p>Add a <a href="ug.html#_ugfun_how-tos_class-structure_collections">collection</a> to one of the entities</p>
+<p>Add a <a href="ugfun.html#_ugfun_how-tos_class-structure_collections">collection</a> to one of the entities</p>
 <div class="ulist">
 <ul>
 <li>
@@ -2188,7 +2188,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_actions_and_collections">Actions and Collections</h3>
+<h3 id="_actions_and_collections">4.20. Actions and Collections</h3>
 <div class="paragraph">
 <p>The Wicket UI doesn&#8217;t allow collections to be modified (added to/removed from). However, we can easily write actions to accomplish the same. Moreover, these actions can provide some additional business logic. For example: it probably shouldn&#8217;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.</p>
 </div>
@@ -2198,7 +2198,7 @@ mvn clean install</code></pre>
 <p>Add domain actions to add/remove from the collection</p>
 </li>
 <li>
-<p>to create objects, <a href="ug.html#_ugfun_how-tos_class-structure_inject-services">inject</a> associated domain service</p>
+<p>to create objects, <a href="ugfun.html#_ugfun_how-tos_class-structure_inject-services">inject</a> associated domain service</p>
 <div class="ulist">
 <ul>
 <li>
@@ -2217,7 +2217,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_css_ui_hints">CSS UI Hints</h3>
+<h3 id="_css_ui_hints">4.21. CSS UI Hints</h3>
 <div class="paragraph">
 <p>CSS classes can be associated with any class member (property, collection, action). But for actions in particular:</p>
 </div>
@@ -2232,7 +2232,7 @@ mvn clean install</code></pre>
 </ul>
 </div>
 <div class="paragraph">
-<p>It&#8217;s also possible to use Font Awesome icons for the <a href="ug.html#_ugfun_how-tos_ui-hints_object-titles-and-icons">domain object icon</a>.</p>
+<p>It&#8217;s also possible to use Font Awesome icons for the <a href="ugfun.html#_ugfun_how-tos_ui-hints_object-titles-and-icons">domain object icon</a>.</p>
 </div>
 <div class="paragraph">
 <p>So:
@@ -2240,20 +2240,20 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_dynamic_layout">Dynamic Layout</h3>
+<h3 id="_dynamic_layout">4.22. Dynamic Layout</h3>
 <div class="paragraph">
 <p>Up to this point we&#8217;ve been using annotations (<code>@MemberOrder</code>, <code>@MemberGroupLayout</code>, <code>@Named</code>, <code>@PropertyLayout</code>, <code>@ParameterLayout</code>, <code>@ActionLayout</code> and so on) for UI hints. However, the feedback loop is not good: it requires us stopping the app, editing the code, recompiling and running again. So instead, all these UI hints (and more) can be specified dynamically, using a corresponding <code>.layout.json</code> file. If edited while the app is running, it will be reloaded automatically (in IntelliJ, use Run&gt;Reload Changed Classes):</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p>Delete the various hint annotations and instead specify layout hints using a <a href="ug.html#_ugfun_object-layout_dynamic">.layout.json</a> file.</p>
+<p>Delete the various hint annotations and instead specify layout hints using a <a href="ugfun.html#_ugfun_object-layout_dynamic">.layout.json</a> file.</p>
 </li>
 </ul>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_business_rules">Business rules</h3>
+<h3 id="_business_rules">4.23. Business rules</h3>
 <div class="paragraph">
 <p>Apache Isis excels for domains where there are complex business rules to enforce. The UI tries not to constrain the user from navigating around freely, however the domain objects nevertheless ensure that they cannot change into an invalid state. Such rules can be enforced either declaratively (using annotations) or imperatively (using code). The objects can do this in one of three ways:</p>
 </div>
@@ -2274,7 +2274,7 @@ mvn clean install</code></pre>
 <p>Or, more pithily: "see it, use it, do it"</p>
 </div>
 <div class="sect3">
-<h4 id="_see_it">See it!</h4>
+<h4 id="_see_it">4.23.1. See it!</h4>
 <div class="ulist">
 <ul>
 <li>
@@ -2297,7 +2297,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_use_it">Use it!</h4>
+<h4 id="_use_it">4.23.2. Use it!</h4>
 <div class="ulist">
 <ul>
 <li>
@@ -2320,7 +2320,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_do_it">Do it!</h4>
+<h4 id="_do_it">4.23.3. Do it!</h4>
 <div class="ulist">
 <ul>
 <li>
@@ -2347,7 +2347,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_home_page">Home page</h3>
+<h3 id="_home_page">4.24. Home page</h3>
 <div class="paragraph">
 <p>The Wicket UI will automatically invoke the "home page" action, if available. This is a no-arg action of one of the domain services, that can return either an object (eg representing the current user) or a standalone action.</p>
 </div>
@@ -2360,7 +2360,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_clock_service">Clock Service</h3>
+<h3 id="_clock_service">4.25. Clock Service</h3>
 <div class="paragraph">
 <p>To ensure testability, there should be no dependencies on system time, for example usage of <code>LocalDate.now()</code>. Instead the domain objects should delegate to the provided <code>ClockService</code>.</p>
 </div>
@@ -2379,7 +2379,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_using_contributions">Using Contributions</h3>
+<h3 id="_using_contributions">4.26. Using Contributions</h3>
 <div class="paragraph">
 <p>One of Apache Isis' most powerful features is the ability for the UI to combine functionality from domain services into the representation of an entity. The effect is similar to traits or mix-ins in other languages, however the "mixing in" is done at runtime, within the Apache Isis metamodel. In Apache Isis' terminology, we say that the domain service action is contributed to the entity.</p>
 </div>
@@ -2393,7 +2393,7 @@ mvn clean install</code></pre>
 <p>Finally, note that the layout of contributed actions/collections/properties can be specified using the <code>.layout.json</code> file (and it is highly recommended that you do so).</p>
 </div>
 <div class="sect3">
-<h4 id="_contributed_actions">Contributed Actions</h4>
+<h4 id="_contributed_actions">4.26.1. Contributed Actions</h4>
 <div class="ulist">
 <ul>
 <li>
@@ -2436,7 +2436,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_contributed_collections">Contributed Collections</h4>
+<h4 id="_contributed_collections">4.26.2. Contributed Collections</h4>
 <div class="ulist">
 <ul>
 <li>
@@ -2468,7 +2468,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_contributed_properties">Contributed Properties</h4>
+<h4 id="_contributed_properties">4.26.3. Contributed Properties</h4>
 <div class="ulist">
 <ul>
 <li>
@@ -2502,7 +2502,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_using_the_event_bus">Using the Event Bus</h3>
+<h3 id="_using_the_event_bus">4.27. Using the Event Bus</h3>
 <div class="paragraph">
 <p>Another way in which Apache Isis helps you keep your application nicely modularized is through its event bus. Each action invocation, or property modification, can be used to generate a succession of events that allows subscribers to veto the interaction (the see it/use it/do it rules) or, if the action is allowed, to perform work prior to the execution of the action or after the execution of the action.</p>
 </div>
@@ -2530,7 +2530,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_bulk_actions">Bulk actions</h3>
+<h3 id="_bulk_actions">4.28. Bulk actions</h3>
 <div class="paragraph">
 <p>Bulk actions are actions that can be invoked on a collection of actions, that is on collections returned by invoking an action. Actions are specified as being bulk actions using the <a href="rgant.html#_rgant-Action_invokeOn"><code>@action(invokeOn=OBJECT_AND_COLLECTION)</code></a> annotation.</p>
 </div>
@@ -2574,7 +2574,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_performance_tuning">Performance tuning</h3>
+<h3 id="_performance_tuning">4.29. Performance tuning</h3>
 <div class="paragraph">
 <p>The <a href="rgsvc.html#_rgsvc-api_QueryResultsCache"><code>QueryResultsCache</code></a> (request-scoped) domain service allows arbitrary objects to be cached for the duration of a request.</p>
 </div>
@@ -2593,7 +2593,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_extending_the_wicket_ui">Extending the Wicket UI</h3>
+<h3 id="_extending_the_wicket_ui">4.30. Extending the Wicket UI</h3>
 <div class="paragraph">
 <p>Each element in the Wicket viewer (entity form, properties, collections, action button etc) is a component, each created by a internal API (<code>ComponentFactory</code>, described <a href="ugvw.html#_ugvw_extending">here</a>). For collections there can be multiple views, and the Wicket viewer provides a view selector drop down (top right of each collection panel).</p>
 </div>
@@ -2601,7 +2601,7 @@ mvn clean install</code></pre>
 <p>Moreover, we can add additional views. In this section we&#8217;ll explore some of these, already provided through <a href="http://www.isisaddons.org/">Isis addons</a> (not ASF).</p>
 </div>
 <div class="sect3">
-<h4 id="_excel_download">Excel download</h4>
+<h4 id="_excel_download">4.30.1. Excel download</h4>
 <div class="paragraph">
 <p>The <a href="https://github.com/isisaddons/isis-wicket-excel">Excel download add-on</a> allows the collection to be downloaded as an Excel spreadsheet (<code>.xlsx</code>).</p>
 </div>
@@ -2614,7 +2614,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_fullcalendar2">Fullcalendar2</h4>
+<h4 id="_fullcalendar2">4.30.2. Fullcalendar2</h4>
 <div class="paragraph">
 <p>The <a href="https://github.com/isisaddons/isis-wicket-fullcalendar2">Fullcalendar2 download add-on</a> allows entities to be rendered in a full-page calendar.</p>
 </div>
@@ -2636,7 +2636,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_gmap3">gmap3</h4>
+<h4 id="_gmap3">4.30.3. gmap3</h4>
 <div class="paragraph">
 <p>The <a href="https://github.com/isisaddons/isis-wicket-gmap3">Gmap3 download add-on</a> allows entities that implement certain APIs to be rendered in a full-page gmap3.</p>
 </div>
@@ -2659,7 +2659,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_add_on_modules_optional">Add-on modules (optional)</h3>
+<h3 id="_add_on_modules_optional">4.31. Add-on modules (optional)</h3>
 <div class="paragraph">
 <p>In addition to providing Wicket viewer extensions, <a href="http://www.isisaddons.org/">Isis addons</a> also has a large number of modules. These address such cross-cutting concerns as security, command (profiling), auditing and publishing.</p>
 </div>
@@ -2678,7 +2678,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_view_models">View models</h3>
+<h3 id="_view_models">4.32. View models</h3>
 <div class="paragraph">
 <p>In most cases users can accomplish the business operations they need by invoking actions directly on domain entities. For some high-volume or specialized uses cases, though, there may be a requirement to bring together data or functionality that spans several entities.</p>
 </div>
@@ -2700,12 +2700,12 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_testing_3">Testing</h3>
+<h3 id="_testing_3">4.33. Testing</h3>
 <div class="paragraph">
 <p>Up to this point we&#8217;ve been introducing the features of Isis and building out our domain application, but with little regard to testing. Time to fix that.</p>
 </div>
 <div class="sect3">
-<h4 id="_unit_testing">Unit testing</h4>
+<h4 id="_unit_testing">4.33.1. Unit testing</h4>
 <div class="paragraph">
 <p>Unit testing domain entities and domain services is easy; just use JUnit and mocking libraries to mock out interactions with domain services.</p>
 </div>
@@ -2721,7 +2721,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_integration_testing">Integration testing</h4>
+<h4 id="_integration_testing">4.33.2. Integration testing</h4>
 <div class="paragraph">
 <p>Although unit tests are easy to write and fast to execute, integration tests are more valuable: they test interactions of the system from the outside-in, simulating the way in which the end-users use the application.</p>
 </div>
@@ -2769,7 +2769,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_customising_the_rest_api">Customising the REST API</h3>
+<h3 id="_customising_the_rest_api">4.34. Customising the REST API</h3>
 <div class="paragraph">
 <p>The REST API generated by Apache Isis conforms to the Restful Objects specification. Apache Isis 1.8.0 provides experimental support to allow the representations to be customized.</p>
 </div>
@@ -2787,7 +2787,7 @@ mvn clean install</code></pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_configuring_to_use_an_external_database">Configuring to use an external database</h3>
+<h3 id="_configuring_to_use_an_external_database">4.35. Configuring to use an external database</h3>
 <div class="paragraph">
 <p>If you have an external database available, then update the <code>pom.xml</code> for the classpath and update the JDBC properties in <code>WEB-INF\persistor.properties</code> to point to your database.</p>
 </div>
@@ -2811,86 +2811,86 @@ mvn clean install</code></pre>
         <div id="toc" class="toc2">
             <div class="fallback-toc">
                 <ul class="sectlevel1">
-<li><a href="#_tg">Tutorials</a></li>
-<li><a href="#_tg_tutorials_pet-clinic">Pet Clinic</a>
+<li><a href="#_tg">1. Tutorials</a></li>
+<li><a href="#_tg_tutorials_pet-clinic">2. Pet Clinic</a>
 <ul class="sectlevel2">
-<li><a href="#_prerequisites">Prerequisites</a></li>
-<li><a href="#_run_the_archetype">Run the archetype</a></li>
-<li><a href="#_build_and_run">Build and run</a></li>
-<li><a href="#_using_the_app">Using the app</a></li>
-<li><a href="#_dev_environment">Dev environment</a></li>
-<li><a href="#_explore_codebase">Explore codebase</a></li>
-<li><a href="#_testing">Testing</a></li>
-<li><a href="#_update_pom_files">Update POM files</a></li>
-<li><a href="#_delete_the_bdd_specs">Delete the BDD specs</a></li>
-<li><a href="#_rename_artifacts">Rename artifacts</a></li>
-<li><a href="#_update_package_names">Update package names</a></li>
-<li><a href="#_add_code_petspecies_code_enum">Add <code>PetSpecies</code> enum</a></li>
-<li><a href="#_icon_to_reflect_pet_species">Icon to reflect pet species</a></li>
-<li><a href="#_add_pet_s_code_owner_code">Add pet&#8217;s <code>Owner</code></a></li>
-</ul>
-</li>
-<li><a href="#_tg_tutorials_pet-clinic-extended">Pet Clinic (Extended)</a></li>
-<li><a href="#_tg_tutorials_stop-scaffolding-start-coding">Stop scaffolding, start coding</a>
+<li><a href="#_prerequisites">2.1. Prerequisites</a></li>
+<li><a href="#_run_the_archetype">2.2. Run the archetype</a></li>
+<li><a href="#_build_and_run">2.3. Build and run</a></li>
+<li><a href="#_using_the_app">2.4. Using the app</a></li>
+<li><a href="#_dev_environment">2.5. Dev environment</a></li>
+<li><a href="#_explore_codebase">2.6. Explore codebase</a></li>
+<li><a href="#_testing">2.7. Testing</a></li>
+<li><a href="#_update_pom_files">2.8. Update POM files</a></li>
+<li><a href="#_delete_the_bdd_specs">2.9. Delete the BDD specs</a></li>
+<li><a href="#_rename_artifacts">2.10. Rename artifacts</a></li>
+<li><a href="#_update_package_names">2.11. Update package names</a></li>
+<li><a href="#_add_code_petspecies_code_enum">2.12. Add <code>PetSpecies</code> enum</a></li>
+<li><a href="#_icon_to_reflect_pet_species">2.13. Icon to reflect pet species</a></li>
+<li><a href="#_add_pet_s_code_owner_code">2.14. Add pet&#8217;s <code>Owner</code></a></li>
+</ul>
+</li>
+<li><a href="#_tg_tutorials_pet-clinic-extended">3. Pet Clinic (Extended)</a></li>
+<li><a href="#_tg_tutorials_stop-scaffolding-start-coding">4. Stop scaffolding, start coding</a>
 <ul class="sectlevel2">
-<li><a href="#_prerequisites_2">Prerequisites</a></li>
-<li><a href="#_run_the_archetype_2">Run the archetype</a></li>
-<li><a href="#_build_and_run_2">Build and run</a></li>
-<li><a href="#_using_the_app_2">Using the app</a></li>
-<li><a href="#_dev_environment_2">Dev environment</a></li>
-<li><a href="#_explore_codebase_2">Explore codebase</a></li>
-<li><a href="#_testing_2">Testing</a></li>
-<li><a href="#_prototyping">Prototyping</a></li>
-<li><a href="#_build_a_domain_app">Build a domain app</a></li>
-<li><a href="#_domain_entity">Domain entity</a></li>
-<li><a href="#_domain_service">Domain service</a></li>
-<li><a href="#_fixture_scripts">Fixture scripts</a></li>
-<li><a href="#_actions">Actions</a></li>
-<li><a href="#_rest_api">REST API</a></li>
-<li><a href="#_specify_action_semantics">Specify Action semantics</a></li>
-<li><a href="#_value_properties">Value properties</a></li>
-<li><a href="#_reference_properties">Reference properties</a></li>
-<li><a href="#_usability_defaults">Usability: Defaults</a></li>
-<li><a href="#_collections">Collections</a></li>
-<li><a href="#_actions_and_collections">Actions and Collections</a></li>
-<li><a href="#_css_ui_hints">CSS UI Hints</a></li>
-<li><a href="#_dynamic_layout">Dynamic Layout</a></li>
-<li><a href="#_business_rules">Business rules</a>
+<li><a href="#_prerequisites_2">4.1. Prerequisites</a></li>
+<li><a href="#_run_the_archetype_2">4.2. Run the archetype</a></li>
+<li><a href="#_build_and_run_2">4.3. Build and run</a></li>
+<li><a href="#_using_the_app_2">4.4. Using the app</a></li>
+<li><a href="#_dev_environment_2">4.5. Dev environment</a></li>
+<li><a href="#_explore_codebase_2">4.6. Explore codebase</a></li>
+<li><a href="#_testing_2">4.7. Testing</a></li>
+<li><a href="#_prototyping">4.8. Prototyping</a></li>
+<li><a href="#_build_a_domain_app">4.9. Build a domain app</a></li>
+<li><a href="#_domain_entity">4.10. Domain entity</a></li>
+<li><a href="#_domain_service">4.11. Domain service</a></li>
+<li><a href="#_fixture_scripts">4.12. Fixture scripts</a></li>
+<li><a href="#_actions">4.13. Actions</a></li>
+<li><a href="#_rest_api">4.14. REST API</a></li>
+<li><a href="#_specify_action_semantics">4.15. Specify Action semantics</a></li>
+<li><a href="#_value_properties">4.16. Value properties</a></li>
+<li><a href="#_reference_properties">4.17. Reference properties</a></li>
+<li><a href="#_usability_defaults">4.18. Usability: Defaults</a></li>
+<li><a href="#_collections">4.19. Collections</a></li>
+<li><a href="#_actions_and_collections">4.20. Actions and Collections</a></li>
+<li><a href="#_css_ui_hints">4.21. CSS UI Hints</a></li>
+<li><a href="#_dynamic_layout">4.22. Dynamic Layout</a></li>
+<li><a href="#_business_rules">4.23. Business rules</a>
 <ul class="sectlevel3">
-<li><a href="#_see_it">See it!</a></li>
-<li><a href="#_use_it">Use it!</a></li>
-<li><a href="#_do_it">Do it!</a></li>
+<li><a href="#_see_it">4.23.1. See it!</a></li>
+<li><a href="#_use_it">4.23.2. Use it!</a></li>
+<li><a href="#_do_it">4.23.3. Do it!</a></li>
 </ul>
 </li>
-<li><a href="#_home_page">Home page</a></li>
-<li><a href="#_clock_service">Clock Service</a></li>
-<li><a href="#_using_contributions">Using Contributions</a>
+<li><a href="#_home_page">4.24. Home page</a></li>
+<li><a href="#_clock_service">4.25. Clock Service</a></li>
+<li><a href="#_using_contributions">4.26. Using Contributions</a>
 <ul class="sectlevel3">
-<li><a href="#_contributed_actions">Contributed Actions</a></li>
-<li><a href="#_contributed_collections">Contributed Collections</a></li>
-<li><a href="#_contributed_properties">Contributed Properties</a></li>
+<li><a href="#_contributed_actions">4.26.1. Contributed Actions</a></li>
+<li><a href="#_contributed_collections">4.26.2. Contributed Collections</a></li>
+<li><a href="#_contributed_properties">4.26.3. Contributed Properties</a></li>
 </ul>
 </li>
-<li><a href="#_using_the_event_bus">Using the Event Bus</a></li>
-<li><a href="#_bulk_actions">Bulk actions</a></li>
-<li><a href="#_performance_tuning">Performance tuning</a></li>
-<li><a href="#_extending_the_wicket_ui">Extending the Wicket UI</a>
+<li><a href="#_using_the_event_bus">4.27. Using the Event Bus</a></li>
+<li><a href="#_bulk_actions">4.28. Bulk actions</a></li>
+<li><a href="#_performance_tuning">4.29. Performance tuning</a></li>
+<li><a href="#_extending_the_wicket_ui">4.30. Extending the Wicket UI</a>
 <ul class="sectlevel3">
-<li><a href="#_excel_download">Excel download</a></li>
-<li><a href="#_fullcalendar2">Fullcalendar2</a></li>
-<li><a href="#_gmap3">gmap3</a></li>
+<li><a href="#_excel_download">4.30.1. Excel download</a></li>
+<li><a href="#_fullcalendar2">4.30.2. Fullcalendar2</a></li>
+<li><a href="#_gmap3">4.30.3. gmap3</a></li>
 </ul>
 </li>
-<li><a href="#_add_on_modules_optional">Add-on modules (optional)</a></li>
-<li><a href="#_view_models">View models</a></li>
-<li><a href="#_testing_3">Testing</a>
+<li><a href="#_add_on_modules_optional">4.31. Add-on modules (optional)</a></li>
+<li><a href="#_view_models">4.32. View models</a></li>
+<li><a href="#_testing_3">4.33. Testing</a>
 <ul class="sectlevel3">
-<li><a href="#_unit_testing">Unit testing</a></li>
-<li><a href="#_integration_testing">Integration testing</a></li>
+<li><a href="#_unit_testing">4.33.1. Unit testing</a></li>
+<li><a href="#_integration_testing">4.33.2. Integration testing</a></li>
 </ul>
 </li>
-<li><a href="#_customising_the_rest_api">Customising the REST API</a></li>
-<li><a href="#_configuring_to_use_an_external_database">Configuring to use an external database</a></li>
+<li><a href="#_customising_the_rest_api">4.34. Customising the REST API</a></li>
+<li><a href="#_configuring_to_use_an_external_database">4.35. Configuring to use an external database</a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/9c97beac/content/guides/ug.html
----------------------------------------------------------------------
diff --git a/content/guides/ug.html b/content/guides/ug.html
index 2141b0d..f05e123 100644
--- a/content/guides/ug.html
+++ b/content/guides/ug.html
@@ -561,7 +561,7 @@ table.CodeRay td.code>pre{padding:0}
 <p><a href="rgcfg.html">Configuration Properties</a></p>
 </li>
 <li>
-<p><a href="rg.html">Classes, Methods and Schema</a></p>
+<p><a href="rgcms.html">Classes, Methods and Schema</a></p>
 </li>
 </ul>
 </div>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/9c97beac/content/guides/ugbtb.html
----------------------------------------------------------------------
diff --git a/content/guides/ugbtb.html b/content/guides/ugbtb.html
index cdf170b..653ca82 100644
--- a/content/guides/ugbtb.html
+++ b/content/guides/ugbtb.html
@@ -573,7 +573,7 @@ applications.</p>
 <p><a href="rgcfg.html">Configuration Properties</a></p>
 </li>
 <li>
-<p><a href="rg.html">Classes, Methods and Schema</a></p>
+<p><a href="rgcms.html">Classes, Methods and Schema</a></p>
 </li>
 </ul>
 </div>
@@ -1032,7 +1032,7 @@ singletons, whereas mixins are instantiated as required (by the framework) and t
 <div class="ulist">
 <ul>
 <li>
-<p>the syntax of writing contributed actions/properties/collections is described in this <a href="ug.html#_ugfun_how-tos_contributed-members">how-to</a></p>
+<p>the syntax of writing contributed actions/properties/collections is described in this <a href="ugfun.html#_ugfun_how-tos_contributed-members">how-to</a></p>
 </li>
 <li>
 <p>there&#8217;s also useful information in the reference guide, discussing the <a href="rgant.html#_rgant-DomainService_nature">@DomainService#nature()</a> attribute, for the <code>NatureOfService.VIEW_CONTRIBUTIONS_ONLY</code> nature.</p>
@@ -1467,7 +1467,7 @@ domain layer that could support every conceivable use case before starting to th
 </div>
 <div class="paragraph">
 <p>Instead, you should iterate.  Identify the use case/story/end-user objective that you will deliver value to the
-business.  Then build out the minimum domain entities to support that use case (refining the <a href="ug.html#_ugfun_core-concepts_philosophy_domain-driven-design_ubiquitous-language">ubiquitous language</a> as you
+business.  Then build out the minimum domain entities to support that use case (refining the <a href="ugfun.html#_ugfun_core-concepts_philosophy_domain-driven-design_ubiquitous-language">ubiquitous language</a> as you
 go).  Then, identify if there any view models that could be introduced which would simplify the end-user interactions
 with the system (perhaps automating several related use cases together).</p>
 </div>
@@ -2187,7 +2187,7 @@ TODO - <a href="rgsvc.html#_rgsvc-spi_ExceptionRecognizer"><code>ExceptionRecogn
 <p>The first part of the puzzle is tackled by an extension to Apache Isis' programming model.  Whereas previously the <code>disableXxx()</code> / <code>validateXxx()</code> / <code>title()</code> methods could only return a <code>java.lang.String</code>, they may now optionally return a <code>TranslatableString</code> (defined in Isis applib) instead.</p>
 </div>
 <div class="paragraph">
-<p>Here&#8217;s a (silly) example from the <a href="ug.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>:</p>
+<p>Here&#8217;s a (silly) example from the <a href="ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -2937,7 +2937,7 @@ build up its metamodel.</p>
 </td>
 <td class="content">
 <div class="paragraph">
-<p>Isis' <a href="ug.html#_ugfun_isis-maven-plugin">Maven plugin</a> will also validate the domain object model during build time.</p>
+<p>Isis' <a href="ugfun.html#_ugfun_isis-maven-plugin">Maven plugin</a> will also validate the domain object model during build time.</p>
 </div>
 </td>
 </tr>
@@ -3163,7 +3163,7 @@ Pretty much all the other <code>FacetFactory</code>s are responsible for install
 <div class="sect2">
 <h3 id="_ugbtb_programming-model_layout-metadata-reader">3.3. Layout Metadata Reader</h3>
 <div class="paragraph">
-<p>The metadata for domain objects is obtained both <a href="ug.html#_ugfun_object-layout_static">statically</a> and <a href="ug.html#_ugfun_object-layout_dynamic">dynamically</a>.</p>
+<p>The metadata for domain objects is obtained both <a href="ugfun.html#_ugfun_object-layout_static">statically</a> and <a href="ugfun.html#_ugfun_object-layout_dynamic">dynamically</a>.</p>
 </div>
 <div class="paragraph">
 <p>The default implementation for reading dynamic layout metadata is <code>org.apache.isis.core.metamodel.layoutmetadata.json.LayoutMetadataReaderFromJson</code>, which is responsible for reading from the <code>Xxx.layout.json</code> files on the classpath (for each domain entity <code>Xxx</code>).</p>
@@ -3851,7 +3851,7 @@ configuration should be read from an external location.</p>
 <p>As of 1.8.0 Apache Isis has experimental support for Neo4J, courtesy of DataNucleus' <a href="http://www.datanucleus.org/products/datanucleus/datastores/neo4j.html">Neo4J Datastore</a> implementation.</p>
 </div>
 <div class="paragraph">
-<p>The <a href="ug.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> has been updated so that they can be optionally run under Neo4J.</p>
+<p>The <a href="ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> has been updated so that they can be optionally run under Neo4J.</p>
 </div>
 <div class="admonitionblock tip">
 <table>
@@ -3911,7 +3911,7 @@ configuration should be read from an external location.</p>
 </table>
 </div>
 <div class="paragraph">
-<p>In the <a href="ug.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> this is defined under the "neo4j" profile so can be activated using <code>-P neo4j</code>.</p>
+<p>In the <a href="ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> this is defined under the "neo4j" profile so can be activated using <code>-P neo4j</code>.</p>
 </div>
 </div>
 <div class="sect3">
@@ -3922,7 +3922,7 @@ configuration should be read from an external location.</p>
 <div class="ulist">
 <ul>
 <li>
-<p>run the <a href="ug.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> (v1.8.0)</p>
+<p>run the <a href="ugfun.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> (v1.8.0)</p>
 </li>
 <li>
 <p>build the app:</p>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/9c97beac/content/guides/ugfun.html
----------------------------------------------------------------------
diff --git a/content/guides/ugfun.html b/content/guides/ugfun.html
index e732016..7ebac14 100644
--- a/content/guides/ugfun.html
+++ b/content/guides/ugfun.html
@@ -522,13 +522,13 @@ table.CodeRay td.code>pre{padding:0}
 <h2 id="_ugfun">1. Fundamentals</h2>
 <div class="sectionbody">
 <div class="paragraph">
-<p>This guide introduces the <a href="ug.html#_ugfun_core-concepts">core concepts</a> and ideas behind Apache Isis,
-and tells you how to <a href="ug.html#_ugfun_getting-started">get started</a> with a Maven archetype.</p>
+<p>This guide introduces the <a href="#_ugfun_core-concepts">core concepts</a> and ideas behind Apache Isis,
+and tells you how to <a href="#_ugfun_getting-started">get started</a> with a Maven archetype.</p>
 </div>
 <div class="paragraph">
-<p>It also describes a number of <a href="ug.html#_ugfun_how-tos">how-to</a>s, describes how to influence the
-<a href="ug.html#_ugfun_object-layout">UI layout</a> of your domain objects (this is ultimately just a type of metadata), and it
- catalogues various <a href="ug.html#_ugfun_faqs.adoc">FAQ</a>s.</p>
+<p>It also describes a number of <a href="#_ugfun_how-tos">how-to</a>s, describes how to influence the
+<a href="#_ugfun_object-layout">UI layout</a> of your domain objects (this is ultimately just a type of metadata), and it
+ catalogues various <a href="#_ugfun_faqs.adoc">FAQ</a>s.</p>
 </div>
 <div class="sect2">
 <h3 id="_other_guides">1.1. Other Guides</h3>
@@ -575,7 +575,7 @@ and tells you how to <a href="ug.html#_ugfun_getting-started">get started</a> wi
 <p><a href="rgcfg.html">Configuration Properties</a></p>
 </li>
 <li>
-<p><a href="rg.html">Classes, Methods and Schema</a></p>
+<p><a href="rgcms.html">Classes, Methods and Schema</a></p>
 </li>
 </ul>
 </div>
@@ -791,7 +791,7 @@ and tells you how to <a href="ug.html#_ugfun_getting-started">get started</a> wi
 </td>
 <td class="content">
 <div class="paragraph">
-<p>We compare Apache Isis' with MetaWidget <a href="ug.html#_ugfun_core-concepts_principles_apache-isis-vs_metawidget">here</a>.</p>
+<p>We compare Apache Isis' with MetaWidget <a href="#_ugfun_core-concepts_principles_apache-isis-vs_metawidget">here</a>.</p>
 </div>
 </td>
 </tr>
@@ -869,7 +869,7 @@ and tells you how to <a href="ug.html#_ugfun_getting-started">get started</a> wi
 <div class="sect3">
 <h4 id="_ugfun_core-concepts_philosophy_aop">2.1.4. Aspect Oriented</h4>
 <div class="paragraph">
-<p>Although not a book about object modelling, Evans' "Domain Driven Design" does use object orientation as its primary modelling tool; while <a href="ug.html#_ugfun_core-concepts_philosophy_naked-objects-pattern">naked objects pattern</a> very much comes from an OO background (it even has 'object' in its name); Richard Pawson lists Alan Kay as a key influence.</p>
+<p>Although not a book about object modelling, Evans' "Domain Driven Design" does use object orientation as its primary modelling tool; while <a href="#_ugfun_core-concepts_philosophy_naked-objects-pattern">naked objects pattern</a> very much comes from an OO background (it even has 'object' in its name); Richard Pawson lists Alan Kay as a key influence.</p>
 </div>
 <div class="paragraph">
 <p>It&#8217;s certainly true that to develop an Apache Isis application you will need to have good object oriented modelling skills.  But given that all the mainstream languages for developing business systems are object oriented (Java, C#, Ruby), that&#8217;s not such a stretch.</p>
@@ -907,7 +907,7 @@ and tells you how to <a href="ug.html#_ugfun_getting-started">get started</a> wi
 <p>Apache Isis also has an internal event bus (you can switch between an underlying implementation of Gauva or Axon).  A domain event is fired whenever an object is interacted with, and this allows any subscribers to influence the operation (or even veto it).  This is a key mechanism in ensuring that Isis applications are maintainable, and we discuss it in depth in the section on  <a href="ugbtb.html#_ugbtb_more-advanced_decoupling">Decoupling</a>.  But fundamentally its relying on this AOP concept of interceptors.</p>
 </div>
 <div class="paragraph">
-<p>Finally, Isis also a feature that is akin to AOP mix-ins.  A "contributed action" is one that is implemented on a domain service but that appears to be a behaviour of rendered domain object.  In other words, we can dissociate behaviour from data.  That&#8217;s not always the right thing to do of course.  In Richard Pawson&#8217;s description of the <a href="ug.html#_ugfun_core-concepts_philosophy_naked-objects-pattern">naked objects pattern</a> he talks about "behaviourally rich" objects, in other words where the business functionality encapsulated the data.   But on the other hand sometimes the behaviour and data structures change at different rates.  The <a href="http://en.wikipedia.org/wiki/Single_responsibility_principle">single responsibility principle</a> says we should only lump code together that changes at the same rate.  Apache Isis' support for contributions (not only contributed actions, but also contributed properties and contributed collections) enables this.  And a
 gain, to loop back to the topic of this section, it&#8217;s an AOP concept that being implemented by the framework.</p>
+<p>Finally, Isis also a feature that is akin to AOP mix-ins.  A "contributed action" is one that is implemented on a domain service but that appears to be a behaviour of rendered domain object.  In other words, we can dissociate behaviour from data.  That&#8217;s not always the right thing to do of course.  In Richard Pawson&#8217;s description of the <a href="#_ugfun_core-concepts_philosophy_naked-objects-pattern">naked objects pattern</a> he talks about "behaviourally rich" objects, in other words where the business functionality encapsulated the data.   But on the other hand sometimes the behaviour and data structures change at different rates.  The <a href="http://en.wikipedia.org/wiki/Single_responsibility_principle">single responsibility principle</a> says we should only lump code together that changes at the same rate.  Apache Isis' support for contributions (not only contributed actions, but also contributed properties and contributed collections) enables this.  And again, t
 o loop back to the topic of this section, it&#8217;s an AOP concept that being implemented by the framework.</p>
 </div>
 <div class="paragraph">
 <p>The nice thing about aspect orientation is that for the most part you can ignore these cross-cutting concerns and - at least initially at least - just focus on implementing your domain object.  Later when your app starts to grow and you start to break it out into smaller modules, you can leverage Apache Isis' AOP support for (<a href="ugbtb.html#_ugbtb_more-advanced_decoupling_mixins">mixins</a>), (<a href="ugbtb.html#_ugbtb_more-advanced_decoupling_contributions">contributions</a>) and interceptors (the <a href="ugbtb.html#_ugbtb_more-advanced_decoupling_event-bus">event bus</a>) to ensure that your codebase remains maintainable.</p>
@@ -961,7 +961,7 @@ challenges that  <em>DDD</em> throws up and see how Apache Isis (and its impleme
 <p>We could generate UML diagrams and the like from code. That will work for some members of the business community, but not for everyone. Or we could generate a PDF document from Javadoc comments, but comments aren&#8217;t code and so the document may be inaccurate.  Anyway, even if we do create such a document, not everyone will read it.</p>
 </div>
 <div class="paragraph">
-<p>A better way to represent the model is to show it in action as a working prototype. As we show in the <a href="ug.html#_ugfun_getting-started">Getting Started</a> section, Apache Isis enables this with ease. Such prototypes bring the domain model to life, engaging the audience in a way that a piece of paper never can.</p>
+<p>A better way to represent the model is to show it in action as a working prototype. As we show in the <a href="#_ugfun_getting-started">Getting Started</a> section, Apache Isis enables this with ease. Such prototypes bring the domain model to life, engaging the audience in a way that a piece of paper never can.</p>
 </div>
 <div class="paragraph">
 <p>Moreover, with Apache Isis prototypes, the domain model will come shining through. If there are mistakes or misunderstandings in the domain model (inevitable when building any complex system), they will be obvious to all.</p>
@@ -1236,7 +1236,7 @@ do they compare to Apache Isis?</p>
 <p>In CQRS the commands correspond to the business logic that mutates the system.  Whether this logic is part of the command class (<code>PlaceOrderCommand</code>) 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.</p>
 </div>
 <div class="paragraph">
-<p>In Apache Isis this same separation of business logic from the underlying data can be accomplished most straightforwardly using <a href="ugbtb.html#_ugbtb_more-advanced_decoupling_mixins">mixins</a> or <a href="ug.html#_ugfun_how-tos_contributed-members">contributions</a>.  In the UI (surfaced by the <a href="ugvw.html">Wicket viewer</a>) or in the REST API (surfaced by the <a href="ugvro.html">RestfulObjects viewer</a>) 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.</p>
+<p>In Apache Isis this same separation of business logic from the underlying data can be accomplished most straightforwardly using <a href="ugbtb.html#_ugbtb_more-advanced_decoupling_mixins">mixins</a> or <a href="#_ugfun_how-tos_contributed-members">contributions</a>.  In the UI (surfaced by the <a href="ugvw.html">Wicket viewer</a>) or in the REST API (surfaced by the <a href="ugvro.html">RestfulObjects viewer</a>) 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.</p>
 </div>
 </div>
 <div class="sect4">
@@ -1260,7 +1260,7 @@ do they compare to Apache Isis?</p>
 <div class="sect4">
 <h5 id="_ugfun_core-concepts_principles_apache-isis-vs_metawidget">vs MetaWidget</h5>
 <div class="paragraph">
-<p>MetaWidget (mentioned <a href="ug.html#_ugfun_core-concepts_philosophy_naked-objects-pattern_object-interface-mapping">earlier</a> has a number of ideas in common with Apache Isis, specifically the runtime generation of a UI for domain objects.  And like Apache Isis, MetaWidget builds its own metamodel of the domain objects and uses this to render the object.</p>
+<p>MetaWidget (mentioned <a href="#_ugfun_core-concepts_philosophy_naked-objects-pattern_object-interface-mapping">earlier</a> has a number of ideas in common with Apache Isis, specifically the runtime generation of a UI for domain objects.  And like Apache Isis, MetaWidget builds its own metamodel of the domain objects and uses this to render the object.</p>
 </div>
 <div class="paragraph">
 <p>However, there is a difference in philosophy in that MW is not a full-stack framework and does not (in their words) try to "own the UI".  Rather they support a huge variety of UI technologies and allow the domain object to be rendered in any of them.</p>
@@ -1305,7 +1305,7 @@ recognizes a number of the JDO annotations such as <code>@javax.jdo.annotations.
 </div>
 <div class="paragraph">
 <p>In addition, the framework builds up the metamodel for each domain object using
-<a href="ug.html#_ugfun_object-layout">layout hints</a>, such as <code>Customer.layout.json</code>.  These provide metadata such as
+<a href="#_ugfun_object-layout">layout hints</a>, such as <code>Customer.layout.json</code>.  These provide metadata such as
 grouping elements of the UI together, using multi-column layouts, and so on.  The layout file can be modified while the
 application is still running, and are picked up automatically; a useful way to speed up feedback.</p>
 </div>
@@ -1673,7 +1673,7 @@ TODO; see <a href="rgcms.html#_rgcms_classes_uievent">UI event</a> classes.
 <div class="sect3">
 <h4 id="_ugfun_core-concepts_building-blocks_oid">2.3.8. OIDs</h4>
 <div class="paragraph">
-<p>As well as defining a <a href="ug.html#_ugfun_core-concepts_building-blocks_metamodel">metamodel</a> of the structure (domain
+<p>As well as defining a <a href="#_ugfun_core-concepts_building-blocks_metamodel">metamodel</a> of the structure (domain
 classes) of its domain objects, Apache Isis also manages the runtime instances of said domain objects.</p>
 </div>
 <div class="paragraph">
@@ -1924,7 +1924,7 @@ TODO
 <p>Apache Wicket, and therefore Apache Isis in this configuration, is a stateful architecture.  As a platform it is certainly capable of supporting user bases of several thousand (with perhaps one or two hundred concurrent); however it isn&#8217;t an architecture that you should try to scale up to tens of thousands of concurrent users.</p>
 </div>
 <div class="paragraph">
-<p>The UI UI generated by the Wicket viewer is well suited to many line-of-business apps, but it&#8217;s also worth knowing that (with a little knowledge of the Wicket APIs) it relatively straightforward to extend.  As described in <a href="ug.html#_ugfun_core-concepts_add-ons">Isis addons</a> chapter, the viewer already has integrations with <a href="https://github.com/isisaddons/isis-wicket-gmap3">google maps</a>, <a href="https://github.com/isisaddons/isis-wicket-fullcalendar2">a full calendar</a> and an <a href="https://github.com/isisaddons/isis-wicket-excel">export to Excel</a> component.  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.</p>
+<p>The UI UI generated by the Wicket viewer is well suited to many line-of-business apps, but it&#8217;s also worth knowing that (with a little knowledge of the Wicket APIs) it relatively straightforward to extend.  As described in <a href="#_ugfun_core-concepts_add-ons">Isis addons</a> chapter, the viewer already has integrations with <a href="https://github.com/isisaddons/isis-wicket-gmap3">google maps</a>, <a href="https://github.com/isisaddons/isis-wicket-fullcalendar2">a full calendar</a> and an <a href="https://github.com/isisaddons/isis-wicket-excel">export to Excel</a> component.  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.</p>
 </div>
 <div class="paragraph">
 <p>Deploying on Apache Isis means that the framework also manages object persistence.  For many line-of-business applications this will mean using a relational database.  It is also possible (courtesy of its integratinon with <a href="http://www.datanucleus.org">DataNucleus</a>) to deploy an Isis app to a NoSQL store such as Neo4J or MongoDB; and it is also possible to deploy to cloud platforms such as <a href="https://cloud.google.com/appengine/docs">Google App Engine (GAE)</a>.</p>
@@ -2002,10 +2002,10 @@ So, if you have used Apache Isis for prototyping (discussed above), then note th
 <h2 id="_ugfun_getting-started">3. Getting Started</h2>
 <div class="sectionbody">
 <div class="paragraph">
-<p>To get you up and running quickly, Apache Isis provides a <a href="ug.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> to setup a simple application as the basis of your own apps.  This is deliberately very minimal so that you won&#8217;t have to spend lots of time removing generated artifacts.  On the other hand, it does set up a standard multi-module maven structure with unit- and integration tests pre-configured, as well as a webapp module so that you can easily run your app.  We strongly recommend that you preserve this structure as you develop your own Isis application.</p>
+<p>To get you up and running quickly, Apache Isis provides a <a href="#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> to setup a simple application as the basis of your own apps.  This is deliberately very minimal so that you won&#8217;t have to spend lots of time removing generated artifacts.  On the other hand, it does set up a standard multi-module maven structure with unit- and integration tests pre-configured, as well as a webapp module so that you can easily run your app.  We strongly recommend that you preserve this structure as you develop your own Isis application.</p>
 </div>
 <div class="paragraph">
-<p>In this chapter we also discuss the <a href="ug.html#_ugfun_getting-started_datanucleus-enhancer">DataNucleus enhancer</a>.  <a href="http://www.datanucleus.org/">DataNucleus</a> is the reference implementation of the JDO (Java data objects) spec, and Apache Isis integrates with DataNucleus as its persistence layer.  The enhancer performs post-processing on the bytecode of your persistent domain entities, such that they can be persisted by Apache Isis' JDO/DataNucleus objectstore.</p>
+<p>In this chapter we also discuss the <a href="#_ugfun_getting-started_datanucleus-enhancer">DataNucleus enhancer</a>.  <a href="http://www.datanucleus.org/">DataNucleus</a> is the reference implementation of the JDO (Java data objects) spec, and Apache Isis integrates with DataNucleus as its persistence layer.  The enhancer performs post-processing on the bytecode of your persistent domain entities, such that they can be persisted by Apache Isis' JDO/DataNucleus objectstore.</p>
 </div>
 <div class="admonitionblock note">
 <table>
@@ -2015,7 +2015,7 @@ So, if you have used Apache Isis for prototyping (discussed above), then note th
 </td>
 <td class="content">
 <div class="paragraph">
-<p>The <a href="ug.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> automatically configures the enhancer, so there&#8217;s little you need to do at this stage.  Even so we feel it&#8217;s a good idea to be aware of this critical part of Apache Isis runtime; if the enhancer does not run, then you&#8217;ll find the app fails to start with (what will seem like) quite an obscure exception message.</p>
+<p>The <a href="#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> automatically configures the enhancer, so there&#8217;s little you need to do at this stage.  Even so we feel it&#8217;s a good idea to be aware of this critical part of Apache Isis runtime; if the enhancer does not run, then you&#8217;ll find the app fails to start with (what will seem like) quite an obscure exception message.</p>
 </div>
 </td>
 </tr>
@@ -2223,7 +2223,7 @@ mvn jetty:run -D jetty.port=9090</code></pre>
 <div class="sect4">
 <h5 id="_from_within_the_ide">From within the IDE</h5>
 <div class="paragraph">
-<p>Most of the time, though, you&#8217;ll probably want to run the app from within your IDE.  The mechanics of doing this will vary by IDE; see the <a href="cg.html#_cg_ide">Contributors' Guide</a> for details of setting up Eclipse or IntelliJ IDEA.  Basically, though, it amounts to running <code>org.apache.isis.WebServer</code>, and ensuring that the <a href="ug.html#_ugfun_getting-started_datanucleus-enhancer">DataNucleus enhancer</a> has properly processed all domain entities.</p>
+<p>Most of the time, though, you&#8217;ll probably want to run the app from within your IDE.  The mechanics of doing this will vary by IDE; see the <a href="cg.html#_cg_ide">Contributors' Guide</a> for details of setting up Eclipse or IntelliJ IDEA.  Basically, though, it amounts to running <code>org.apache.isis.WebServer</code>, and ensuring that the <a href="#_ugfun_getting-started_datanucleus-enhancer">DataNucleus enhancer</a> has properly processed all domain entities.</p>
 </div>
 <div class="paragraph">
 <p>Here&#8217;s what the setup looks like in IntelliJ IDEA:</p>
@@ -2517,7 +2517,7 @@ script to be run.</p>
 </td>
 <td class="content">
 <div class="paragraph">
-<p>The configuration described below is automatically set up by the <a href="ug.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>.</p>
+<p>The configuration described below is automatically set up by the <a href="#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>.</p>
 </div>
 </td>
 </tr>
@@ -2574,7 +2574,7 @@ script to be run.</p>
 </div>
 </div>
 <div class="paragraph">
-<p>The <a href="ug.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>  sets up the plugin correctly in the <code>dom</code> (domain object model) module.  (It&#8217;s actually a little bit more complex to cater for users of the Eclipse IDE using Eclipse&#8217;s m2e plugin).</p>
+<p>The <a href="#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>  sets up the plugin correctly in the <code>dom</code> (domain object model) module.  (It&#8217;s actually a little bit more complex to cater for users of the Eclipse IDE using Eclipse&#8217;s m2e plugin).</p>
 </div>
 <div class="sect3">
 <h4 id="__code_meta_inf_persistence_xml_code">3.3.1. <code>META-INF/persistence.xml</code></h4>
@@ -2602,7 +2602,7 @@ script to be run.</p>
 </table>
 </div>
 <div class="paragraph">
-<p>Again, the <a href="ug.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> does this.</p>
+<p>Again, the <a href="#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a> does this.</p>
 </div>
 <div class="admonitionblock warning">
 <table>
@@ -2732,7 +2732,7 @@ TODO
 </table>
 </div>
 <div class="paragraph">
-<p>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 <a href="ug.html#_ugfun_how-tos_class-structure_properties-vs-parameters">Properties vs Parameters</a> section provides a handy reference of each.</p>
+<p>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 <a href="#_ugfun_how-tos_class-structure_properties-vs-parameters">Properties vs Parameters</a> section provides a handy reference of each.</p>
 </div>
 </div>
 <div class="sect4">
@@ -2959,7 +2959,7 @@ TODO
 <p>Apache Isis configures JDO/DataNucleus so that the properties of type <code>org.apache.isis.applib.value.Blob</code> and <code>org.apache.isis.applib.value.Clob</code> can also be persisted.</p>
 </div>
 <div class="paragraph">
-<p>As for <a href="ug.html#_ugfun_how-tos_class-structure_properties_mapping-joda-dates">Joda dates</a>, this requires the <code>@javax.jdo.annotations.Persistent</code> annotation. However, whereas for dates one would always expect this value to be retrieved eagerly, for blobs and clobs it is not so clear cut.</p>
+<p>As for <a href="#_ugfun_how-tos_class-structure_properties_mapping-joda-dates">Joda dates</a>, this requires the <code>@javax.jdo.annotations.Persistent</code> annotation. However, whereas for dates one would always expect this value to be retrieved eagerly, for blobs and clobs it is not so clear cut.</p>
 </div>
 <div class="sect5">
 <h6 id="_mapping_blobs">Mapping Blobs</h6>
@@ -3125,7 +3125,7 @@ TODO
 <p>One workaround is to mark the collection as <a href="rgant.html#_rgant-Programmatic"><code>@Programmatic</code></a>.  This ensures that the collection is ignored by Apache Isis.</p>
 </div>
 <div class="paragraph">
-<p>Another workaround is to wrap each value in a view model, as explained in this <a href="ug.html#_ugfun_how-tos_simulating-collections-of-values">tip</a>.</p>
+<p>Another workaround is to wrap each value in a view model, as explained in this <a href="#_ugfun_how-tos_simulating-collections-of-values">tip</a>.</p>
 </div>
 </td>
 </tr>
@@ -3157,7 +3157,7 @@ TODO
 <p>While Apache Isis support actions whose parameters' types are scalar (values such as <code>String</code>, <code>int</code>, or references such as <code>Customer</code>), the framework (currently) does not support parameter types that are collections or maps.</p>
 </div>
 <div class="paragraph">
-<p>The workaround is to mark the collection as <code>@Programmatic</code>, as described in <a href="ug.html#_ugfun_how-tos_class-structure_ignoring-methods">Ignoring Methods</a>.  This ensures that the collection is ignored by Apache Isis.</p>
+<p>The workaround is to mark the collection as <code>@Programmatic</code>, as described in <a href="#_ugfun_how-tos_class-structure_ignoring-methods">Ignoring Methods</a>.  This ensures that the collection is ignored by Apache Isis.</p>
 </div>
 </td>
 </tr>
@@ -3659,7 +3659,7 @@ TODO - <a href="rgant.html#_rgant-ParameterLayout_named"><code>@ParameterLayout#
 <div class="sect3">
 <h4 id="_ugfun_how-tos_ui-hints_layout">4.2.3. Layout</h4>
 <div class="paragraph">
-<p>See the <a href="ug.html#_ugfun_object-layout">object layout</a> chapter.</p>
+<p>See the <a href="#_ugfun_object-layout">object layout</a> chapter.</p>
 </div>
 </div>
 <div class="sect3">
@@ -3773,7 +3773,7 @@ TODO - <a href="rgant.html#_rgant-ActionLayout_cssClass"><code>@ActionLayout#css
 </table>
 </div>
 <div class="paragraph">
-<p>Alternatively, you can specify these hints dynamically in the <a href="ug.html#_ugfun_object-layout"><code>Xxx.layout.json</code></a> for the entity.</p>
+<p>Alternatively, you can specify these hints dynamically in the <a href="#_ugfun_object-layout"><code>Xxx.layout.json</code></a> for the entity.</p>
 </div>
 </div>
 <div class="sect4">
@@ -3967,7 +3967,7 @@ used by the supporting <a href="rgcms.html#_rgcms_methods_prefixes_validate"><co
 </ul>
 </div>
 <div class="paragraph">
-<p>It&#8217;s worth extending the <a href="ug.html#_ugfun_core-concepts_philosophy_hexagonal-architecture">Hexagonal Architecture</a> to show where domain services&#8201;&#8212;&#8201;and in particular the domain services provided by <a href="http://www.isisaddons.org">Isis Addons</a> (non-ASF)&#8201;&#8212;&#8201;fit in:</p>
+<p>It&#8217;s worth extending the <a href="#_ugfun_core-concepts_philosophy_hexagonal-architecture">Hexagonal Architecture</a> to show where domain services&#8201;&#8212;&#8201;and in particular the domain services provided by <a href="http://www.isisaddons.org">Isis Addons</a> (non-ASF)&#8201;&#8212;&#8201;fit in:</p>
 </div>
 <div class="imageblock">
 <div class="content">
@@ -4187,7 +4187,7 @@ used by the supporting <a href="rgcms.html#_rgcms_methods_prefixes_validate"><co
 </table>
 </div>
 <div class="paragraph">
-<p>More information about contributions can be found <a href="ug.html#_ugfun_how-tos_contributed-members">here</a>.  More information
+<p>More information about contributions can be found <a href="#_ugfun_how-tos_contributed-members">here</a>.  More information
 about using contributions and mixins to keep your domain application decoupled can be found <a href="ugbtb.html#_ugbtb_more-advanced_decoupling_contributions">here</a> and <a href="ugbtb.html#_ugbtb_more-advanced_decoupling_mixins">here</a>.</p>
 </div>
 </div>
@@ -4232,7 +4232,7 @@ about using contributions and mixins to keep your domain application decoupled c
 <div class="sect3">
 <h4 id="_prototyping">4.3.2. Prototyping</h4>
 <div class="paragraph">
-<p>While for long-term maintainability we do recommend the naming conventions described <a href="ug.html#_ugfun_how-tos_domain-services_organizing-services">above</a>, you can get away with far fewer services when just prototyping a domain.</p>
+<p>While for long-term maintainability we do recommend the naming conventions described <a href="#_ugfun_how-tos_domain-services_organizing-services">above</a>, you can get away with far fewer services when just prototyping a domain.</p>
 </div>
 <div class="paragraph">
 <p>If the domain service nature is not specified (or is left to its default, <code>VIEW</code>), then the service&#8217;s actions will
@@ -5552,7 +5552,7 @@ The format of the file is:</p>
 ordered according either to annotations (if present) or fallback/default values.</p>
 </div>
 <div class="paragraph">
-<p>Note also that the layout file may contain entries for <a href="ug.html#_ugfun_how-tos_contributed-members">contributed associations and actions</a>; this allows each contributee classes to define their own layout for their contributions, possibly overriding any static metadata on the original domain service contributor.</p>
+<p>Note also that the layout file may contain entries for <a href="#_ugfun_how-tos_contributed-members">contributed associations and actions</a>; this allows each contributee classes to define their own layout for their contributions, possibly overriding any static metadata on the original domain service contributor.</p>
 </div>
 </div>
 <div class="sect3">
@@ -5778,10 +5778,10 @@ using security or using a <a href="ugbtb.html#_ugbtb_more-advanced_decoupling_ve
 <div class="sect2">
 <h3 id="_ugfun_object-layout_static-vs-dynamic">5.4. Static vs Dynamic Layouts</h3>
 <div class="paragraph">
-<p>Using <a href="ug.html#_ugfun_object-layout_dynamic">dynamic object layout</a>s using JSON has the huge benefit that the layout can be updated without requiring a recompile of the code and redeploy of the app.  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).</p>
+<p>Using <a href="#_ugfun_object-layout_dynamic">dynamic object layout</a>s using JSON has the huge benefit that the layout can be updated without requiring a recompile of the code and redeploy of the app.  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).</p>
 </div>
 <div class="paragraph">
-<p>Another benefit of dynamic layout is that UI hints can be provided for <a href="ug.html#_ugfun_how-tos_contributed-members">contributed associations and actions</a> that are synthesised at runtime.</p>
+<p>Another benefit of dynamic layout is that UI hints can be provided for <a href="#_ugfun_how-tos_contributed-members">contributed associations and actions</a> that are synthesised at runtime.</p>
 </div>
 <div class="paragraph">
 <p>The main downsides of using dynamic layouts are a lack of typesafety (a typo will result in the metadata not being picked up for the element) and syntactic fragility (an invalid JSON document will result in no metadata for the entire class).</p>
@@ -5833,7 +5833,7 @@ Apache Isis mailing lists.</p>
 <li>
 <p>In the JDBC Driver<br></p>
 <div class="paragraph">
-<p>Configure <code>log4jdbc</code> JDBC rather than the vanilla driver (see <code>WEB-INF/persistor_datanucleus.properties</code>) and configure log4j logging (see <code>WEB-INF/logging.properties</code>).  There are examples of both in the <a href="ug.html#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>.</p>
+<p>Configure <code>log4jdbc</code> JDBC rather than the vanilla driver (see <code>WEB-INF/persistor_datanucleus.properties</code>) and configure log4j logging (see <code>WEB-INF/logging.properties</code>).  There are examples of both in the <a href="#_ugfun_getting-started_simpleapp-archetype">SimpleApp archetype</a>.</p>
 </div>
 </li>
 <li>