http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_web-xml.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_web-xml.adoc 
b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_web-xml.adoc
index b81637b..8f03333 100644
--- a/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_web-xml.adoc
+++ b/adocs/documentation/src/main/asciidoc/guides/ugbtb/_ugbtb_web-xml.adoc
@@ -378,7 +378,7 @@ This filter reads one context parameter:
     <param-value>deployment</param-value>   <!--1-->
 </context-param>
 ----
-<1> alternatively set to "development"; see 
xref:rgcfg.adoc#_rgcfg_deployment-types[deployment types] for further 
discussion.
+<1> alternatively set to "development"; see 
xref:../rgcfg/rgcfg.adoc#_rgcfg_deployment-types[deployment types] for further 
discussion.
 
 
 === `IsisSessionFilter`

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_cqrs.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_cqrs.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_cqrs.adoc
index ea526e0..37eb157 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_cqrs.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_cqrs.adoc
@@ -31,10 +31,10 @@ There are other reasons though why a separate read model 
might make sense, such
 In these cases Apache Isis can often provide a reasonable alternative, namely 
to map domain entities against RDBMS views, either materialized views or 
dynamic.
 In such cases there is still only a single physical datastore, and so 
transactional integrity is retained.
 
-Or, the CQRS architecture can be more fully implemented with Apache Isis by 
introducing a separate read model, synchronized using the 
xref:rgsvc.adoc#_rgsvc_api_PublishingService[`PublishingService`], or using 
xref:rgcms.adoc#_rgcms_classes_super_AbstractSubscriber[subscribers]  on the 
xref:rgsvc.adoc#_rgsvc_api_EventBusService[`EventBusService`].
+Or, the CQRS architecture can be more fully implemented with Apache Isis by 
introducing a separate read model, synchronized using the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_PublishingService[`PublishingService`], or 
using 
xref:../rgcms/rgcms.adoc#_rgcms_classes_super_AbstractSubscriber[subscribers]  
on the xref:../rgsvc/rgsvc.adoc#_rgsvc_api_EventBusService[`EventBusService`].
 One can then use xref:ugbtb.adoc#_ugbtb_view-models[view models] to surface 
the data in the external read datastore.
 
-With respect to commands, Apache Isis does of course support the 
xref:rgsvc.adoc#_rgsvc_spi_CommandService[`CommandService`] which allows each 
business action to be reified into a `Command`.
+With respect to commands, Apache Isis does of course support the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_CommandService[`CommandService`] which 
allows each business action to be reified into a `Command`.
 However, names are misleading here: Apache Isis' commands are relatively 
passive, merely recording the intent of the user to invoke some operation.
 In a CQRS architecture, though, commands take a more active role, locating and 
acting upon the domain objects.
 More significantly, in CQRS each command has its own class, such as 
`PlaceOrderCommand`, instantiated by the client and then executed.
@@ -43,7 +43,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:ugbtb.adoc#_ugbtb_decoupling_mixins[mixins] or 
xref: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:ugbtb.adoc#_ugbtb_decoupling_mixins[mixins] or 
xref:../ugfun/ugfun.adoc#_ugfun_how-tos_contributed-members[contributions].
 In the UI (surfaced by the xref:ugvw.adoc#[Wicket viewer]) or in the REST API 
(surfaced by the xref: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.
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_event-sourcing.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_event-sourcing.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_event-sourcing.adoc
index 4b7fd58..2fa5a7f 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_event-sourcing.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_event-sourcing.adoc
@@ -22,8 +22,8 @@ Note that the event might be dispatched and consumed 
in-process or alternatively
 If the latter, then the subscriber will operate within a separate transaction, 
meaning the usual eventual consistency concerns and also compensating actions 
if a rollback is required.
 CQRS/event sourcing advocates point out -- correctly -- that this is just how 
things are in the "real world" too.
 
-In Apache Isis every business action (and indeed, property and collection) 
emits domain events through the 
xref:rgsvc.adoc#_rgsvc_api_EventBusService[`EventBusService`], and can 
optionally also be published through the 
xref:rgsvc.adoc#_rgsvc_spi_PublishingService[`PublishingService`].
-The former are dispatched and consumed in-process and within the same 
transaction, and for this reason the 
xref:rgcms.adoc#_rgcms_classes_super_AbstractSubscriber[subscribers] can also 
veto the events.
+In Apache Isis every business action (and indeed, property and collection) 
emits domain events through the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_EventBusService[`EventBusService`], and can 
optionally also be published through the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_PublishingService[`PublishingService`].
+The former are dispatched and consumed in-process and within the same 
transaction, and for this reason the 
xref:../rgcms/rgcms.adoc#_rgcms_classes_super_AbstractSubscriber[subscribers] 
can also veto the events.
 The latter are intended for out-of-process consumption; the (non-ASF) 
http://github.com/isisaddons/isis-module-publishing[Isis addons' publishing] 
and http://github.com/isisaddons/isis-module-publishmq[Isis addons' publishmq] 
modules provide implementations for dispatching either through a RDBMS database 
table, or directly through to an link:http://camel.apache.org[ActiveMQ] message 
queue (eg wired up to link:http://camel.apache.org[Apache Camel] event bus).
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_metawidget.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_metawidget.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_metawidget.adoc
index 02fa963..22c1cf4 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_metawidget.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_apache-isis-vs_metawidget.adoc
@@ -5,7 +5,7 @@
 :_imagesdir: images/
 
 
-MetaWidget (mentioned 
xref:ugfun.adoc#_ugfun_core-concepts_philosophy_naked-objects-pattern_object-interface-mapping[earlier]
 has a number of ideas in common with Apache Isis, specifically the runtime 
generation of a UI for domain objects.
+MetaWidget (mentioned 
xref:../ugfun/ugfun.adoc#_ugfun_core-concepts_philosophy_naked-objects-pattern_object-interface-mapping[earlier]
 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.
 
 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".

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_building-blocks.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_building-blocks.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_building-blocks.adoc
index 95a889c..950f175 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_building-blocks.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_building-blocks.adoc
@@ -65,7 +65,7 @@ Another variation are *contributed services*: domain services 
that contribute be
 Finally domain services may also simply provide additional non-UI 
functionality; an example being to perform an address geocoding lookup against 
the google-maps API.
 
 Also worth mentioning: domain services can also be either singletons 
(discussed above) or request-scoped; the latter being annotated with 
`@javax.enterprise.context.RequestScoped`.
-An example of the request-scoped service is the 
xref:rgsvc.adoc#_rgsvc_api_Scratchpad[`Scratchpad`] service, for sharing 
arbitrary data between multiple objects.
+An example of the request-scoped service is the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_Scratchpad[`Scratchpad`] service, for 
sharing arbitrary data between multiple objects.
 
 The final type of domain object is the *mixin*.
 These are similar to contributed services in that they also contribute (or 
rather, mixin) both behaviour or (derived) state to entities/view models.
@@ -251,13 +251,13 @@ For more information, see 
xref:ugbtb.adoc#_ugbtb_decoupling_contributions[this t
 [[__ugfun_core-concepts_building-blocks_domain-events]]
 == Domain Events
 
-NOTE: FIXME; see xref:rgcms.adoc#_rgcms_classes_domainevent[domain event] 
classes.
+NOTE: FIXME; see xref:../rgcms/rgcms.adoc#_rgcms_classes_domainevent[domain 
event] classes.
 
 
 
 === UI Events
 
-NOTE: FIXME; see xref:rgcms.adoc#_rgcms_classes_uievent[UI event] classes.
+NOTE: FIXME; see xref:../rgcms/rgcms.adoc#_rgcms_classes_uievent[UI event] 
classes.
 
 
 
@@ -265,7 +265,7 @@ NOTE: FIXME; see xref:rgcms.adoc#_rgcms_classes_uievent[UI 
event] classes.
 [[__ugfun_core-concepts_building-blocks_oid]]
 == OIDs
 
-As well as defining a 
xref:ugfun.adoc#__ugfun_core-concepts_building-blocks_metamodel[metamodel] of 
the structure (domain classes) of its domain objects, Apache Isis also manages 
the runtime instances of said domain objects.
+As well as defining a 
xref:../ugfun/ugfun.adoc#__ugfun_core-concepts_building-blocks_metamodel[metamodel]
 of the structure (domain classes) of its domain objects, Apache Isis also 
manages the runtime instances of said domain objects.
 
 When a domain entity is recreated from the database, the framework keeps track 
of its identity through an "OID": an object identifier.
 Fundamentally this is a combination of its type (domain class), along with an 
identifier.
@@ -285,12 +285,12 @@ Some examples:
 * the information within an OID could be converted into a barcode, and stamped 
onto a PDF form.
 When the PDF is scanned by the mail room, the barcode could be read to attach 
the correspondence to the relevant domain object.
 
-* as a handle to any object in an audit record, as used by 
xref:rgsvc.adoc#_rgsvc_spi_AuditerService[`AuditerService`] or 
xref:rgsvc.adoc#_rgsvc_spi_AuditingService[`AuditingService`] (the latter 
deprecated);
+* as a handle to any object in an audit record, as used by 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_AuditerService[`AuditerService`] or 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_AuditingService[`AuditingService`] (the 
latter deprecated);
 
-* similarly within implementations of 
xref:rgsvc.adoc#_rgsvc_spi_CommandService[`CommandService`] to persist `Command`
+* similarly within implementations of 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_CommandService[`CommandService`] to persist 
`Command`
 objects
 
-* similarly within implementations of 
xref:rgsvc.adoc#_rgsvc_spi_PublisherService[`PublisherService`]
+* similarly within implementations of 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_PublisherService[`PublisherService`]
 to persist published action invocations
 
 * and of course both the xref:ugvro.adoc#[RestfulObjects viewer] and
@@ -298,11 +298,11 @@ xref:ugvw.adoc#[Wicket viewer]
 use the oid tuple to look up, render and allow the user to interact with 
domain objects.
 
 Although the exact content of an OID should be considered opaque by domain 
objects, it is possible for domain objects to obtain OIDs.
-These are represented as `Bookmark`s, obtained from the 
xref:rgsvc.adoc#_rgsvc_api_BookmarkService[`BookmarkService`].
-Deep links meanwhile can be obtained from the 
xref:rgant.adoc#_rgant-DeepLinkService[`@DeepLinkService`].
+These are represented as `Bookmark`s, obtained from the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_BookmarkService[`BookmarkService`].
+Deep links meanwhile can be obtained from the 
xref:../rgant/rgant.adoc#_rgant-DeepLinkService[`@DeepLinkService`].
 
 OIDs can also be converted into XML format, useful for integration scenarios.
-The xref:rgcms.adoc#_rgcms_schema-common[common schema] XSD defines the 
`oidDto` complex type for precisely this purpose.
+The xref:../rgcms/rgcms.adoc#_rgcms_schema-common[common schema] XSD defines 
the `oidDto` complex type for precisely this purpose.
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_framework-provided-services.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_framework-provided-services.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_framework-provided-services.adoc
index f4558b8..3eeaac0 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_framework-provided-services.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_framework-provided-services.adoc
@@ -14,94 +14,94 @@ In these cases there is (usually) no default 
implementation; it is up to the app
 
 General purpose:
 
-* xref:rgsvc.adoc#_rgsvc_api_DomainObjectContainer[`DomainObjectContainer`]; 
mostly deprecated, replaced by:
-** xref:rgsvc.adoc#_rgsvc_api_ClockService[`ClockService`]
-** xref:rgsvc.adoc#_rgsvc_api_ConfigurationService[`ConfigurationService`]
-** xref:rgsvc.adoc#_rgsvc_api_MessageService[`MessageService`]
-** xref:rgsvc.adoc#_rgsvc_api_RepositoryService[`RepositoryService`]
-** xref:rgsvc.adoc#_rgsvc_api_ServiceRegistry[`ServiceRegistry`]
-** xref:rgsvc.adoc#_rgsvc_api_TitleService[`TitleService`]
-** xref:rgsvc.adoc#_rgsvc_api_UserService[`UserService`]
-* xref:rgsvc.adoc#_rgsvc_api_IsisJdoSupport[`IsisJdoSupport`]
-* xref:rgsvc.adoc#_rgsvc_api_WrapperFactory[`WrapperFactory`]
-* xref:rgsvc.adoc#_rgsvc_api_EventBusService[`EventBusService`]
-* xref:rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_DomainObjectContainer[`DomainObjectContainer`];
 mostly deprecated, replaced by:
+** xref:../rgsvc/rgsvc.adoc#_rgsvc_api_ClockService[`ClockService`]
+** 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_ConfigurationService[`ConfigurationService`]
+** xref:../rgsvc/rgsvc.adoc#_rgsvc_api_MessageService[`MessageService`]
+** xref:../rgsvc/rgsvc.adoc#_rgsvc_api_RepositoryService[`RepositoryService`]
+** xref:../rgsvc/rgsvc.adoc#_rgsvc_api_ServiceRegistry[`ServiceRegistry`]
+** xref:../rgsvc/rgsvc.adoc#_rgsvc_api_TitleService[`TitleService`]
+** xref:../rgsvc/rgsvc.adoc#_rgsvc_api_UserService[`UserService`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_IsisJdoSupport[`IsisJdoSupport`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_WrapperFactory[`WrapperFactory`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_EventBusService[`EventBusService`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_EmailService[`EmailService`]
 
 Commands/Interactions/Background/Auditing/Publishing/Profiling:
 
-* xref:rgsvc.adoc#_rgsvc_api_CommandContext[`CommandContext`] (SPI)
-* xref:rgsvc.adoc#_rgsvc_spi_CommandService[`CommandService`] (SPI)
-* xref:rgsvc.adoc#_rgsvc_api_InteractionContext[`InteractionContext`] (SPI)
-* xref:rgsvc.adoc#_rgsvc_spi_AuditingService[`AuditingService`] (SPI) 
(deprecated)
-* xref:rgsvc.adoc#_rgsvc_spi_AuditerService[`AuditerService`] (SPI)
-* xref:rgsvc.adoc#_rgsvc_api_BackgroundService[`BackgroundService`]
-* 
xref:rgsvc.adoc#_rgsvc_spi_BackgroundCommandService[`BackgroundCommandService`] 
(SPI)
-* xref:rgsvc.adoc#_rgsvc_spi_PublishingService[`PublishingService`] (SPI) 
(deprecated)
-* xref:rgsvc.adoc#_rgsvc_spi_PublisherService[`PublishererService`] (SPI)
-* xref:rgsvc.adoc#_rgsvc_api_MetricsService[`MetricsService`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_CommandContext[`CommandContext`] (SPI)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_CommandService[`CommandService`] (SPI)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_InteractionContext[`InteractionContext`] 
(SPI)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_AuditingService[`AuditingService`] (SPI) 
(deprecated)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_AuditerService[`AuditerService`] (SPI)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_BackgroundService[`BackgroundService`]
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_BackgroundCommandService[`BackgroundCommandService`]
 (SPI)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_PublishingService[`PublishingService`] 
(SPI) (deprecated)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_PublisherService[`PublishererService`] 
(SPI)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_MetricsService[`MetricsService`]
 
 
 Information Sharing:
 
-* xref:rgsvc.adoc#_rgsvc_api_Scratchpad[`Scratchpad`]
-* xref:rgsvc.adoc#_rgsvc_api_ActionInvocationContext[`ActionInvocationContext`]
-* xref:rgsvc.adoc#_rgsvc_api_QueryResultsCache[`QueryResultsCache`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_Scratchpad[`Scratchpad`]
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_ActionInvocationContext[`ActionInvocationContext`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_QueryResultsCache[`QueryResultsCache`]
 
 UserManagement:
 
-* xref:rgsvc.adoc#_rgsvc_spi_UserProfileService[`UserProfileService`] (SPI)
-* 
xref:rgsvc.adoc#_rgsvc_spi_UserRegistrationService[`UserRegistrationService`] 
(SPI)
-* 
xref:rgsvc.adoc#_rgsvc_spi_EmailNotificationService[`EmailNotificationService`] 
(SPI)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_UserProfileService[`UserProfileService`] 
(SPI)
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_UserRegistrationService[`UserRegistrationService`]
 (SPI)
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_EmailNotificationService[`EmailNotificationService`]
 (SPI)
 
 Bookmarks and Mementos:
 
-* xref:rgsvc.adoc#_rgsvc_api_BookmarkService[`BookmarkService`]
-* xref:rgsvc.adoc#_rgsvc_api_MementoService[`MementoService`]
-* xref:rgsvc.adoc#_rgsvc_api_DeepLinkService[`DeepLinkService`]
-* xref:rgsvc.adoc#_rgsvc_api_JaxbService[`JaxbService`]
-* xref:rgsvc.adoc#_rgsvc_api_XmlSnapshotService[`XmlSnapshotService`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_BookmarkService[`BookmarkService`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_MementoService[`MementoService`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_DeepLinkService[`DeepLinkService`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_JaxbService[`JaxbService`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_XmlSnapshotService[`XmlSnapshotService`]
 
 Layout and UI Management:
 
-* xref:rgsvc.adoc#_rgsvc_spi_GridLoaderService[`GridLoaderService`] (SPI)
-* xref:rgsvc.adoc#_rgsvc_spi_GridService[`GridService`] (SPI)
-* xref:rgsvc.adoc#_rgsvc_spi_GridSystemService[`GridSystemService`] (SPI)
-* xref:rgsvc.adoc#_rgsvc_api_HomePageProviderService[`HomePageProviderService`]
-* xref:rgsvc.adoc#_rgsvc_spi_HintStore[`HintStore`] (SPI)
-* xref:rgsvc.adoc#_rgsvc_api_LayoutService[`LayoutService`]
-* xref:rgsvc.adoc#_rgsvc_spi_RoutingService[`RoutingService`] (SPI)
-* xref:rgsvc.adoc#_rgsvc_spi_UrlEncodingService[`UrlEncodingService`] (SPI)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_GridLoaderService[`GridLoaderService`] 
(SPI)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_GridService[`GridService`] (SPI)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_GridSystemService[`GridSystemService`] 
(SPI)
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_HomePageProviderService[`HomePageProviderService`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_HintStore[`HintStore`] (SPI)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_LayoutService[`LayoutService`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_RoutingService[`RoutingService`] (SPI)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_UrlEncodingService[`UrlEncodingService`] 
(SPI)
 
 REST Support:
 
-* xref:rgsvc.adoc#_rgsvc_api_AcceptHeaderService[`AcceptHeaderService`]
-* xref:rgsvc.adoc#_rgsvc_api_SwaggerService[`SwaggerService`]
-* xref:rgsvc.adoc#_rgsvc_spi_ContentMappingService[`ContentMappingService`] 
(SPI)
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_AcceptHeaderService[`AcceptHeaderService`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_SwaggerService[`SwaggerService`]
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_ContentMappingService[`ContentMappingService`]
 (SPI)
 
 Metamodel:
 
-* 
xref:rgsvc.adoc#_rgsvc_api_ApplicationFeatureRepository[`ApplicationFeatureRepository`]
-* xref:rgsvc.adoc#_rgsvc_api_MetamodelService[`MetamodelService`]
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_ApplicationFeatureRepository[`ApplicationFeatureRepository`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_MetamodelService[`MetamodelService`]
 
 Other API:
 
-* xref:rgsvc.adoc#_rgsvc_api_FixtureScriptsDefault[`FixtureScriptsDefault`]
-* xref:rgsvc.adoc#_rgsvc_api_GuiceBeanProvider[`GuiceBeanProvider`]
-* xref:rgsvc.adoc#_rgsvc_api_SudoService[`SudoService`]
-* xref:rgsvc.adoc#_rgsvc_api_TransactionService[`TransactionService`]
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_FixtureScriptsDefault[`FixtureScriptsDefault`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_GuiceBeanProvider[`GuiceBeanProvider`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_SudoService[`SudoService`]
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_api_TransactionService[`TransactionService`]
 
 Other SPI:
 
-* xref:rgsvc.adoc#_rgsvc_spi_ClassDiscoveryService[`ClassDiscoveryService`] 
(SPI)
-* xref:rgsvc.adoc#_rgsvc_spi_ErrorReportingService[`ErrorReportingService`] 
(SPI)
-* xref:rgsvc.adoc#_rgsvc_spi_EventSerializer[`EventSerializer`] (SPI)
-* xref:rgsvc.adoc#_rgsvc_spi_ExceptionRecognizer[`ExceptionRecognizer`] (SPI)
-* 
xref:rgsvc.adoc#_rgsvc_spi_FixtureScriptsSpecificationProvider[`FixtureScriptsSpecificationProvider`]
 (SPI)
-* xref:rgsvc.adoc#_rgsvc_spi_LocaleProvider[`LocaleProvider`] (SPI)
-* xref:rgsvc.adoc#_rgsvc_spi_TranslationService[`TranslationService`] (SPI)
-* xref:rgsvc.adoc#_rgsvc_spi_TranslationsResolver[`TranslationsResolver`] (SPI)
-* xref:rgsvc.adoc#_rgsvc_spi_TranslationsResolver[`TranslationsResolver`] (SPI)
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_ClassDiscoveryService[`ClassDiscoveryService`]
 (SPI)
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_ErrorReportingService[`ErrorReportingService`]
 (SPI)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_EventSerializer[`EventSerializer`] (SPI)
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_ExceptionRecognizer[`ExceptionRecognizer`] 
(SPI)
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_FixtureScriptsSpecificationProvider[`FixtureScriptsSpecificationProvider`]
 (SPI)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_LocaleProvider[`LocaleProvider`] (SPI)
+* xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_TranslationService[`TranslationService`] 
(SPI)
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_TranslationsResolver[`TranslationsResolver`]
 (SPI)
+* 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_TranslationsResolver[`TranslationsResolver`]
 (SPI)
 
 
-A full list of services can be found in the xref:rgsvc.adoc#_rgsvc[Domain 
Services] reference guide.
+A full list of services can be found in the 
xref:../rgsvc/rgsvc.adoc#_rgsvc[Domain Services] reference guide.
 

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_other-deployment-options.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_other-deployment-options.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_other-deployment-options.adoc
index 3aef8d4..b38c55c 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_other-deployment-options.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_other-deployment-options.adoc
@@ -18,7 +18,7 @@ Let's start though with the default use case for Apache Isis: 
building line-of-b
 
 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't an architecture that you should try to scale up to tens of thousands of 
concurrent users.
 
-The UI 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:ugfun.adoc#_ugfun_core-concepts_add-ons[Isis addons] chapter, 
the viewer already has integrations with 
https://github.com/isisaddons/isis-wicket-gmap3[google maps], 
https://github.com/isisaddons/isis-wicket-fullcalendar2[a full calendar] and an 
https://github.com/isisaddons/isis-wicket-excel[export to Excel] 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.
+The UI 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:../ugfun/ugfun.adoc#_ugfun_core-concepts_add-ons[Isis addons] 
chapter, the viewer already has integrations with 
https://github.com/isisaddons/isis-wicket-gmap3[google maps], 
https://github.com/isisaddons/isis-wicket-fullcalendar2[a full calendar] and an 
https://github.com/isisaddons/isis-wicket-excel[export to Excel] 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.
 
 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 
link:http://www.datanucleus.org[DataNucleus]) 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 link:https://cloud.google.com/appengine/docs[Google App 
Engine (GAE)].
 
@@ -41,7 +41,7 @@ Once you've sketched out your domain model, you can then 
"start-over" using your
 The programming model defined by Apache Isis deliberately minimizes the 
dependencies on the rest of the framework. In fact, the only hard dependency 
that the domain model classes have on Apache Isis is through the 
`org.apache.isis.applib` classes, mostly to pick up annotations such as 
`@Disabled`.
 So, if you have used Apache Isis for prototyping (discussed above), then note 
that it's quite feasible to take your domain model a the basis of your actual 
development effort; Apache Isis' annotations and programming conventions will 
help ensure that any subtle semantics you might have captured in your 
prototyping are not lost.
 
-If you go this route, your deployment platform will of course need to provide 
similar capabilities to Apache Isis.  In particular, you'll need to figure out 
a way to inject domain services into domain entities (eg using a JPA listener), 
and you'll also need to reimplement any domain services you have used that 
Apache Isis provides "out-of-the-box" (eg 
xref:rgsvc.adoc#_rgsvc_api_QueryResultsCache[`QueryResultsCache`] domain 
service).
+If you go this route, your deployment platform will of course need to provide 
similar capabilities to Apache Isis.  In particular, you'll need to figure out 
a way to inject domain services into domain entities (eg using a JPA listener), 
and you'll also need to reimplement any domain services you have used that 
Apache Isis provides "out-of-the-box" (eg 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_QueryResultsCache[`QueryResultsCache`] 
domain service).
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_aop.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_aop.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_aop.adoc
index db37fec..7a640ba 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_aop.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_aop.adoc
@@ -5,7 +5,7 @@
 :_imagesdir: images/
 
 
-Although not a book about object modelling, Evans' "Domain Driven Design" does 
use object orientation as its primary modelling tool; while 
xref:ugfun.adoc#_ugfun_core-concepts_philosophy_naked-objects-pattern[naked 
objects pattern] very much comes from an OO background (it even has 'object' in 
its name).
+Although not a book about object modelling, Evans' "Domain Driven Design" does 
use object orientation as its primary modelling tool; while 
xref:../ugfun/ugfun.adoc#_ugfun_core-concepts_philosophy_naked-objects-pattern[naked
 objects pattern] very much comes from an OO background (it even has 'object' 
in its name).
 Richard Pawson -- the originator of Naked Objects pattern -- lists Alan Kay as 
a key influence.
 
 It's certainly true that to develop an Apache Isis application you will need 
to have good object oriented modelling skills.
@@ -55,7 +55,7 @@ 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's not always the right thing to do of course.
-In Richard Pawson's description of the 
xref:ugfun.adoc#_ugfun_core-concepts_philosophy_naked-objects-pattern[naked 
objects pattern] he talks about "behaviourally rich" objects, in other words 
where the business functionality encapsulated the data.
+In Richard Pawson's description of the 
xref:../ugfun/ugfun.adoc#_ugfun_core-concepts_philosophy_naked-objects-pattern[naked
 objects pattern] 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 link:http://en.wikipedia.org/wiki/Single_responsibility_principle[single 
responsibility principle] 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.

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_how-eases-ddd.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_how-eases-ddd.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_how-eases-ddd.adoc
index c5054e0..1ccf108 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_how-eases-ddd.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_how-eases-ddd.adoc
@@ -53,7 +53,7 @@ If we are using code as the primary means of expressing the 
model, then we need
 
 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't code and so the 
document may be inaccurate.  Anyway, even if we do create such a document, not 
everyone will read it.
 
-A better way to represent the model is to show it in action as a working 
prototype. As we show in the xref:ugfun.adoc#_ugfun_getting-started[Getting 
Started] 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.
+A better way to represent the model is to show it in action as a working 
prototype. As we show in the 
xref:../ugfun/ugfun.adoc#_ugfun_getting-started[Getting Started] 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.
 
 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.
 

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_naked-objects-pattern_object-interface-mapping.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_naked-objects-pattern_object-interface-mapping.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_naked-objects-pattern_object-interface-mapping.adoc
index 77c96f1..1a98d77 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_naked-objects-pattern_object-interface-mapping.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_philosophy_naked-objects-pattern_object-interface-mapping.adoc
@@ -11,5 +11,5 @@ We sometimes use this idea to explain naked objects to a 
bunch of developers.
 Just as an ORM (such as link:http://datanucleus.org[DataNucleus] or 
link:http://hibernate.org[Hibernate]) maps domain entities to a database, you 
can think of the naked objects pattern as representing the concept of mapping 
domain objects to a user interface.
 
 This is the way that the link:http://metawidget.org/[MetaWidget] team, in 
particular Richard Kennard, the primary contributor, likes to describe their 
tool.
-MetaWidget has a number of ideas in common with Apache Isis (we compare Apache 
Isis' with MetaWidget 
xref:ugfun.adoc#_ugfun_core-concepts_principles_apache-isis-vs_metawidget[here]),
 in particular the runtime generation of a UI for domain objects.
+MetaWidget has a number of ideas in common with Apache Isis (we compare Apache 
Isis' with MetaWidget 
xref:../ugfun/ugfun.adoc#_ugfun_core-concepts_principles_apache-isis-vs_metawidget[here]),
 in particular the runtime generation of a UI for domain objects.
 You can hear more from Kennard and others on this 
http://devchat.tv/js-jabber/150-jsj-oims[Javascript Jabber podcast].

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_principles_for-the-long-term.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_principles_for-the-long-term.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_principles_for-the-long-term.adoc
index c53a18b..6fa5091 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_principles_for-the-long-term.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_core-concepts_principles_for-the-long-term.adoc
@@ -33,7 +33,7 @@ To support the business domain being split into separate 
modules, the framework
 
 * dependency injection of services +
 +
-Both xref:rgsvc.adoc#[framework-defined domain services] and 
application-defined services (eg repositories and factories) are injected 
everywhere, using the regular 
xref:rgant.adoc#_rgant-Inject[`@javax.inject.Inject`] annotation.
+Both xref:../rgsvc/rgsvc.adoc#[framework-defined domain services] and 
application-defined services (eg repositories and factories) are injected 
everywhere, using the regular 
xref:../rgant/rgant.adoc#_rgant-Inject[`@javax.inject.Inject`] annotation.
 
 * mixins allow functionality defined in one module to appear (in the UI) to be 
provided by some other module. +
 +
@@ -54,7 +54,7 @@ Or, it might conceivably perform a cascade delete of all 
associated communicatio
 
 For those cases where a module needs to interact with other modules but does 
not know about their implementations, the module can either define its own 
link:https://en.wikipedia.org/wiki/Service_provider_interface[SPI] domain 
services or it can define custom domain events and fire them.
 This technique is also used extensively by the framework itself.
- For example, the xref:rgsvc.adoc#_rgsvc_spi_AuditerService[`AuditerService`] 
SPI enables custom auditing, and the 
xref:rgsvc.adoc#_rgsvc_spi_PublisherService[`PublisherService`] SPI enables 
custom publishing
+ For example, the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_AuditerService[`AuditerService`] SPI 
enables custom auditing, and the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_spi_PublisherService[`PublisherService`] SPI 
enables custom publishing
 
 When building a modular application, it's important to consider the logical 
layering of the modules: we don't need every module to be completely decoupled 
from every other.
 The most important requirement is that there are no cyclic dependencies, 
because otherwise we run the risk of the application degrading into a 
link:https://en.wikipedia.org/wiki/Big_ball_of_mud["big ball of mud"].

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_getting-started.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_getting-started.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_getting-started.adoc
index df03541..553ab0e 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_getting-started.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_getting-started.adoc
@@ -7,17 +7,17 @@
 
 
 
-To get you up and running quickly, Apache Isis provides a 
xref:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype] 
to setup a simple application as the basis of your own apps.
+To get you up and running quickly, Apache Isis provides a 
xref:../ugfun/ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp 
archetype] to setup a simple application as the basis of your own apps.
 This is deliberately kept quite minimal so that you won'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.
 
-In this chapter we also discuss the 
xref:ugfun.adoc#_ugfun_getting-started_datanucleus-enhancer[DataNucleus 
enhancer].  link:http://www.datanucleus.org/[DataNucleus] is the reference 
implementation of the JDO (Java data objects) spec, and Apache Isis integrates 
with DataNucleus as its persistence layer.
+In this chapter we also discuss the 
xref:../ugfun/ugfun.adoc#_ugfun_getting-started_datanucleus-enhancer[DataNucleus
 enhancer].  link:http://www.datanucleus.org/[DataNucleus] 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.
 
 [NOTE]
 ====
-The xref:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp 
archetype] automatically configures the enhancer, so there's little you need to 
do at this stage.
+The 
xref:../ugfun/ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp 
archetype] automatically configures the enhancer, so there's little you need to 
do at this stage.
 Even so we feel it's a good idea to be aware of this critical part of Apache 
Isis runtime; if the enhancer does not run, then you'll find the app fails to 
start with (what will seem like) quite an obscure exception message.
 ====
 
@@ -31,7 +31,7 @@ Apache Isis is a Java based framework, so in terms of 
prerequisites, you'll need
 * Java 7 or 8 JDK
 * link:http://maven.apache.org[Apache Maven] 3.0.5 or later
 
-You'll probably also want to use an IDE; the Apache Isis committers use either 
IntelliJ or Eclipse; in the xref:dg.adoc#_dg_ide[Developers' Guide] we have 
detailed setup instructions for using these two IDEs.
+You'll probably also want to use an IDE; the Apache Isis committers use either 
IntelliJ or Eclipse; in the xref:../dg/dg.adoc#_dg_ide[Developers' Guide] we 
have detailed setup instructions for using these two IDEs.
 If you're a NetBeans user you should have no problems as it too has strong 
support for Maven.
 
 When building and running within an IDE, you'll also need to configure the 
Datanucleus enhancer.

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_getting-started_datanucleus-enhancer.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_getting-started_datanucleus-enhancer.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_getting-started_datanucleus-enhancer.adoc
index 9b6a2d9..f6d7fdd 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_getting-started_datanucleus-enhancer.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_getting-started_datanucleus-enhancer.adoc
@@ -21,7 +21,7 @@ If working from the Maven command line, JDO enhancement is 
done using the `maven
 
 [TIP]
 ====
-The configuration described below is automatically set up by the 
xref:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype].
+The configuration described below is automatically set up by the 
xref:../ugfun/ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp 
archetype].
 ====
 
 
@@ -75,7 +75,7 @@ The configuration described below is automatically set up by 
the xref:ugfun.adoc
 </profile>
 ----
 
-The xref:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp 
archetype]  sets up the plugin correctly in the `dom` (domain object model) 
module.  (It's actually a little bit more complex to cater for users of the 
Eclipse IDE using Eclipse's m2e plugin).
+The 
xref:../ugfun/ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp 
archetype]  sets up the plugin correctly in the `dom` (domain object model) 
module.  (It's actually a little bit more complex to cater for users of the 
Eclipse IDE using Eclipse's m2e plugin).
 
 
 
@@ -97,11 +97,11 @@ It's also a good idea to ensure that the `dom` module has a 
JDO `META-INF/persis
 ----
 <1> change as required; typically is the name of the app.
 
-Again, the 
xref:ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp archetype] 
does this.
+Again, the 
xref:../ugfun/ugfun.adoc#_ugfun_getting-started_simpleapp-archetype[SimpleApp 
archetype] does this.
 
 [WARNING]
 ====
 If running on Windows, then there's a good chance you'll hit the 
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#maxpath[maximum
 path length limit].   In this case the `persistence.xml` file is mandatory 
rather than optional.
 
-This file is also required if you are using developing in Eclipse and relying 
on the DataNucleus plugin for Eclipse rather than the DataNucleus plugin for 
Maven.  More information can be found xref:dg.adoc#_dg_ide_eclipse[here].
+This file is also required if you are using developing in Eclipse and relying 
on the DataNucleus plugin for Eclipse rather than the DataNucleus plugin for 
Maven.  More information can be found xref:../dg/dg.adoc#_dg_ide_eclipse[here].
 ====

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_getting-started_simpleapp-archetype.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_getting-started_simpleapp-archetype.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_getting-started_simpleapp-archetype.adoc
index c1924e3..f0a36cb 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_getting-started_simpleapp-archetype.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_getting-started_simpleapp-archetype.adoc
@@ -120,7 +120,7 @@ You can also take the built WAR file and deploy it into a 
standalone servlet con
 
 === From within the IDE
 
-Most of the time, though, you'll probably want to run the app from within your 
IDE.  The mechanics of doing this will vary by IDE; see the 
xref:dg.adoc#_dg_ide[Developers' Guide] for details of setting up Eclipse or 
IntelliJ IDEA.  Basically, though, it amounts to running 
`org.apache.isis.WebServer`, and ensuring that the 
xref:ugfun.adoc#_ugfun_getting-started_datanucleus-enhancer[DataNucleus 
enhancer] has properly processed all domain entities.
+Most of the time, though, you'll probably want to run the app from within your 
IDE.  The mechanics of doing this will vary by IDE; see the 
xref:../dg/dg.adoc#_dg_ide[Developers' Guide] for details of setting up Eclipse 
or IntelliJ IDEA.  Basically, though, it amounts to running 
`org.apache.isis.WebServer`, and ensuring that the 
xref:../ugfun/ugfun.adoc#_ugfun_getting-started_datanucleus-enhancer[DataNucleus
 enhancer] has properly processed all domain entities.
 
 Here's what the setup looks like in IntelliJ IDEA:
 
@@ -136,7 +136,7 @@ If you are running the app from an IDE, then you can 
specify the fixture script
 
 
image::{_imagesdir}getting-started/simpleapp-webapp-with-fixtures.png[width="600px",link="{_imagesdir}getting-started/simpleapp-webapp-with-fixtures.png"]
 
-Alternatively, you can run with a different 
xref:rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[`AppManifest`] using 
the `--appManifest` (or `-m`) flag.  The archetype provides
+Alternatively, you can run with a different 
xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[`AppManifest`]
 using the `--appManifest` (or `-m`) flag.  The archetype provides
 `domainapp.app.DomainAppAppManifestWithFixtures` which specifies the 
aforementioned `RecreateSimpleObjects` fixture.
 
 
@@ -236,7 +236,7 @@ To log in, use `sven/pass`.
 
 Once you are familiar with the generated app, you'll want to start modifying 
it.  There is plenty of guidance on this site; check out the 'programming model 
how-tos' section on the main link:../documentation.html[documentation] page 
first).
 
-If you use IntelliJ IDEA or Eclipse, do also install the 
xref:dg.adoc#__dg_ide_intellij_live-templates[live templates (for IntelliJ)] / 
xref:dg.adoc#__dg_ide_eclipse_editor-templates[editor templates (for Eclipse)]; 
these will help you follow the Apache Isis naming conventions.
+If you use IntelliJ IDEA or Eclipse, do also install the 
xref:../dg/dg.adoc#__dg_ide_intellij_live-templates[live templates (for 
IntelliJ)] / xref:../dg/dg.adoc#__dg_ide_eclipse_editor-templates[editor 
templates (for Eclipse)]; these will help you follow the Apache Isis naming 
conventions.
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_bulk-actions.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_bulk-actions.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_bulk-actions.adoc
index bcd3166..f3d5e41 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_bulk-actions.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_bulk-actions.adoc
@@ -4,5 +4,5 @@
 :_basedir: ../../
 :_imagesdir: images/
 
-NOTE: FIXME - xref:rgant.adoc#_rgant-Action_invokeOn[`@Action#invokeOn()`]
+NOTE: FIXME - 
xref:../rgant/rgant.adoc#_rgant-Action_invokeOn[`@Action#invokeOn()`]
 

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_business-rules.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_business-rules.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_business-rules.adoc
index e4b7b86..8c02ad3 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_business-rules.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_business-rules.adoc
@@ -10,7 +10,7 @@ NOTE: FIXME
 
 == Visibility ("see it")
 
-NOTE: FIXME - xref:rgcms.adoc#_rgcms_methods_prefixes_hide[`hide...()`]
+NOTE: FIXME - 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_hide[`hide...()`]
 
 ### Hide a Property
 
@@ -27,7 +27,7 @@ NOTE: FIXME - 
xref:rgcms.adoc#_rgcms_methods_prefixes_hide[`hide...()`]
 
 == Usability ("use it")
 
-NOTE: FIXME - xref:rgcms.adoc#_rgcms_methods_prefixes_disable[`disable...()`]
+NOTE: FIXME - 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_disable[`disable...()`]
 
 ### Disable a Property
 
@@ -53,7 +53,7 @@ In the Wicket viewer this means disabling the edit button.
 
 == Validity ("do it")
 
-NOTE: FIXME - 
xref:rgcms.adoc#_rgcms_methods_prefixes_validate[`validate...()`], 
xref:rgcms.adoc#_rgcms_methods_prefixes_validateAddTo[`validateAddTo...()`], 
xref:rgcms.adoc#_rgcms_methods_prefixes_validateRemoveFrom[`validateRemoveFrom...()`]
 and xref:rgcms.adoc#_rgcms_methods_reserved_validate[`validate()`]
+NOTE: FIXME - 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_validate[`validate...()`], 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_validateAddTo[`validateAddTo...()`],
 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_validateRemoveFrom[`validateRemoveFrom...()`]
 and xref:../rgcms/rgcms.adoc#_rgcms_methods_reserved_validate[`validate()`]
 
 
 ### Validate (change to) a Property
@@ -66,7 +66,7 @@ NOTE: FIXME - 
xref:rgcms.adoc#_rgcms_methods_prefixes_validate[`validate...()`],
 
 ### Declarative validation
 
-NOTE: FIXME - using 
xref:rgant.adoc#_rgant-Parameter_mustSatisfy[`@Parameter#mustSatisfy()`], 
xref:rgant.adoc#_rgant-Property_mustSatisfy[`@Property#mustSatisfy()`]
+NOTE: FIXME - using 
xref:../rgant/rgant.adoc#_rgant-Parameter_mustSatisfy[`@Parameter#mustSatisfy()`],
 xref:../rgant/rgant.adoc#_rgant-Property_mustSatisfy[`@Property#mustSatisfy()`]
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_actions.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_actions.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_actions.adoc
index aace483..1954d64 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_actions.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_actions.adoc
@@ -6,7 +6,7 @@
 
 
 
-While xref:ugfun.adoc#_ugfun_how-tos_class-structure_properties[properties] 
and xref:ugfun.adoc#_ugfun_how-tos_class-structure_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:../ugfun/ugfun.adoc#_ugfun_how-tos_class-structure_properties[properties] 
and 
xref:../ugfun/ugfun.adoc#_ugfun_how-tos_class-structure_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).
 
 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).
@@ -26,7 +26,7 @@ But if the state change is more complex, then most likely an 
action should be us
 == Defining actions
 
 Broadly speaking, actions are all the `public` methods that are not getters or 
setters which represent properties or collections.
-This is a slight simplification; there are a number of other method prefixes 
(such as `hide` or `validate`) that represent 
xref:ugfun.adoc#_ugfun_how-tos_business-rules[business rules]); these also not 
treated as actions.
+This is a slight simplification; there are a number of other method prefixes 
(such as `hide` or `validate`) that represent 
xref:../ugfun/ugfun.adoc#_ugfun_how-tos_business-rules[business rules]); these 
also not treated as actions.
 And, any method that are annotated with `@Programmatic` will also be excluded.
 But by and large, all other methods such as `placeOrder(...)` or 
`approveInvoice(...)` will be treated as actions.
 
@@ -61,7 +61,7 @@ The (non-ASF) Isis addons' 
http://github.com/isisaddons/isis-metamodel-paraname8
 Parameter types can be value types or reference types.
 In the case of primitive types, the end-user can just enter the value directly 
through the parameter field.
 In the case of reference types however (such as `Product`), a drop-down must 
be provided from which the end-user to select.
-This is done using either a supporting 
xref:rgcms.adoc#_rgcms_methods_prefixes_choices[`choices`] or 
xref:rgcms.adoc#_rgcms_methods_prefixes_autoComplete[`autoComplete`] method.
+This is done using either a supporting 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_choices[`choices`] or 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_autoComplete[`autoComplete`] 
method.
 The "choices" is used when there is a limited set of options, while 
"autoComplete" is used when there are large set of options such that the 
end-user must provide some characters to use for a search.
 
 For example, the `addToBasket(...)` action shown above might well have a :
@@ -88,7 +88,7 @@ ProductRepository productRepository;
 <1> Supporting `autoComplete` method.
 The "0" in the name means that this corresponds to parameter 0 of the 
"addToBasket" action (ie `Product`).
 It is also required to return a Collection of that type.
-<2> The xref:rgant.adoc#_rgant_MinLength[`@MinLength`] annotation defines how 
many characters the end-user must enter before performing a search.
+<2> The xref:../rgant/rgant.adoc#_rgant_MinLength[`@MinLength`] annotation 
defines how many characters the end-user must enter before performing a search.
 <3> The implementation delegates to an injected repository service.  This is 
typical.
 
 Note that it is also valid to define "choices" and "autoComplete" for value 
types (such as `quantity`, above); it just isn't as common to do so.
@@ -160,14 +160,14 @@ public List<Product> 
autoComplete0AddToBasket(@MinLength(3) String searchTerm) {
 }
 ----
 
-As the example suggests, any collection parameter type must provide a way to 
select items, either by way of a "choices" or "autoComplete" supporting method 
or alternatively defined globally using 
xref:rgant.adoc#_rgant_DomainObject[`@DomainObject`] on the referenced type 
(described 
xref:ugfun.adoc#__ugfun_how-tos_class-structure_actions_reference-parameter-types_removing-boilerplate[above]).
+As the example suggests, any collection parameter type must provide a way to 
select items, either by way of a "choices" or "autoComplete" supporting method 
or alternatively defined globally using 
xref:../rgant/rgant.adoc#_rgant_DomainObject[`@DomainObject`] on the referenced 
type (described 
xref:../ugfun/ugfun.adoc#__ugfun_how-tos_class-structure_actions_reference-parameter-types_removing-boilerplate[above]).
 
 
 [[__ugfun_how-tos_class-structure_actions_optional-parameters]]
 == Optional Parameters
 
-Whereas the 
xref:ugfun.adoc#__ugfun_how-tos_class-structure_properties_optional-properties[optionality
 of properties] is defined using 
xref:rgant.adoc#_rgant_Column_allowsNull[`@javax.jdo.annotations.Column#allowsNull()`],
 that JDO annotation cannot be applied to parameter types.
-Instead, either the xref:rgant.adoc#_rgant_Nullable[`@Nullable`] annotation or 
the xref:rgant.adoc#_rgant_Parameter_optionality[`@Parameter#optionality()`]  
annotation/attribute is used.
+Whereas the 
xref:../ugfun/ugfun.adoc#__ugfun_how-tos_class-structure_properties_optional-properties[optionality
 of properties] is defined using 
xref:../rgant/rgant.adoc#_rgant_Column_allowsNull[`@javax.jdo.annotations.Column#allowsNull()`],
 that JDO annotation cannot be applied to parameter types.
+Instead, either the xref:../rgant/rgant.adoc#_rgant_Nullable[`@Nullable`] 
annotation or the 
xref:../rgant/rgant.adoc#_rgant_Parameter_optionality[`@Parameter#optionality()`]
  annotation/attribute is used.
 
 For example:
 
@@ -190,13 +190,13 @@ public Order invoice(
 <1> Specifies the property is optional.
 <2> Specifies the corresponding parameter is optional.
 
-See also 
xref:ugfun.adoc#_ugfun_how-tos_class-structure_properties-vs-parameters[properties
 vs parameters].
+See also 
xref:../ugfun/ugfun.adoc#_ugfun_how-tos_class-structure_properties-vs-parameters[properties
 vs parameters].
 
 [[__ugfun_how-tos_class-structure_actions_string-parameters]]
 == ``String`` Parameters (Length)
 
-Whereas the 
xref:ugfun.adoc#__ugfun_how-tos_class-structure_properties_mapping-strings[length
 of string properties] is defined using 
xref:rgant.adoc#_rgant_Column_length[`@javax.jdo.annotations.Column#length()`], 
that JDO annotation cannot be applied to parameter types.
-Instead, the 
xref:rgant.adoc#_rgant_Parameter_maxLength[`@Parameter#maxLength()`] 
annotation/attribute is used.
+Whereas the 
xref:../ugfun/ugfun.adoc#__ugfun_how-tos_class-structure_properties_mapping-strings[length
 of string properties] is defined using 
xref:../rgant/rgant.adoc#_rgant_Column_length[`@javax.jdo.annotations.Column#length()`],
 that JDO annotation cannot be applied to parameter types.
+Instead, the 
xref:../rgant/rgant.adoc#_rgant_Parameter_maxLength[`@Parameter#maxLength()`] 
annotation/attribute is used.
 
 For example:
 
@@ -222,8 +222,8 @@ public Customer updateName(
     return this;
 }
 ----
-<1> Specifies the property length using the JDO 
xref:rgant.adoc#_rgant_Column_length[`@Column#length()`] annotation
-<2> Specifies the parameter length using the (Apache Isis) 
xref:rgant.adoc#_rgant_Parameter_maxLength[`@Parameter#maxLength()`] annotation
+<1> Specifies the property length using the JDO 
xref:../rgant/rgant.adoc#_rgant_Column_length[`@Column#length()`] annotation
+<2> Specifies the parameter length using the (Apache Isis) 
xref:../rgant/rgant.adoc#_rgant_Parameter_maxLength[`@Parameter#maxLength()`] 
annotation
 
 [IMPORTANT]
 ====
@@ -231,13 +231,13 @@ 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:ugfun.adoc#_ugfun_how-tos_class-structure_properties-vs-parameters[properties
 vs parameters].
+See also 
xref:../ugfun/ugfun.adoc#_ugfun_how-tos_class-structure_properties-vs-parameters[properties
 vs parameters].
 
 [[__ugfun_how-tos_class-structure_actions_bigdecimal-parameters]]
 == ``BigDecimal``s (Precision)
 
-Whereas the 
xref:ugfun.adoc#__ugfun_how-tos_class-structure_properties_mapping-bigdecimals[precision
 of BigDecimal properties] is defined using 
xref:rgant.adoc#_rgant_Column_scale[`@javax.jdo.annotations.Column#scale()`], 
that JDO annotation cannot be applied to parameter types.
-Instead, the 
xref:rgant.adoc#_rgant_Digits_fraction[`@javax.validation.constraints.Digits#fraction()`]
 annotation/attribute is used.
+Whereas the 
xref:../ugfun/ugfun.adoc#__ugfun_how-tos_class-structure_properties_mapping-bigdecimals[precision
 of BigDecimal properties] is defined using 
xref:../rgant/rgant.adoc#_rgant_Column_scale[`@javax.jdo.annotations.Column#scale()`],
 that JDO annotation cannot be applied to parameter types.
+Instead, the 
xref:../rgant/rgant.adoc#_rgant_Digits_fraction[`@javax.validation.constraints.Digits#fraction()`]
 annotation/attribute is used.
 
 For example:
 
@@ -255,10 +255,10 @@ public Order updateDiscount(
     return this;
 }
 ----
-<1> Specifies the property precision using 
xref:rgant.adoc#_rgant_Column_scale[`@Column#scale()`]
-<2> Specifies the corresponding parameter precision using 
xref:rgant.adoc#_rgant_Digits_fraction[`@Digits#fraction()`].
+<1> Specifies the property precision using 
xref:../rgant/rgant.adoc#_rgant_Column_scale[`@Column#scale()`]
+<2> Specifies the corresponding parameter precision using 
xref:../rgant/rgant.adoc#_rgant_Digits_fraction[`@Digits#fraction()`].
 
-See also 
xref:ugfun.adoc#_ugfun_how-tos_class-structure_properties-vs-parameters[properties
 vs parameters].
+See also 
xref:../ugfun/ugfun.adoc#_ugfun_how-tos_class-structure_properties-vs-parameters[properties
 vs parameters].
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_class-definition.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_class-definition.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_class-definition.adoc
index c18bab4..f88aa9c 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_class-definition.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_class-definition.adoc
@@ -120,7 +120,7 @@ Domain services are generally singletons that are 
automatically injected into ot
 A very common usage is as a repository (to find/locate existing entities) or 
as a factory (to create new instances of entities).
 But services can also be exposed in the UI as top-level menus; and services 
are also used as a bridge to access technical resources (eg rendering a 
document object as a PDF).
 
-The Apache Isis framework itself also provides a large number of number of 
domain services, catalogued in the xref:rgsvc.adoc#[Domain Services Reference 
Guide].
+The Apache Isis framework itself also provides a large number of number of 
domain services, catalogued in the xref:../rgsvc/rgsvc.adoc#[Domain Services 
Reference Guide].
 Some of these are APIs (intended to be called by your application's own domain 
objects) and some are SPIs (implemented by your application and called by the 
framework, customising the way it works).
 
 The following is a typical menu service:
@@ -161,7 +161,7 @@ In the example above the menu is named "Simple Objects" 
(otherwise it would have
 The implementation delegates to an `SimpleObjectRepository` service, which is 
injected.
 <4> The `javax.inject.Inject` annotation instructs Apache Isis framework to 
inject the `SimpleObjectRepository` service into this domain object.
 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:ugfun.adoc#_ugfun_how-tos_class-structure_inject-services[below].
+There is further discussion of service injection 
xref:../ugfun/ugfun.adoc#_ugfun_how-tos_class-structure_inject-services[below].
 
 
 [[__ugfun_how-tos_class-structure_class-definition_view-models]]

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_collections.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_collections.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_collections.adoc
index a7d663b..a01e1de 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_collections.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_collections.adoc
@@ -8,7 +8,7 @@
 A collection is an instance variable of a domain object, of a collection type 
that holds references to other domain objects.
 For example, a `Customer` may have a collection of ``Order``s).
 
-It's ok for a 
xref:ugfun.adoc#__ugfun_how-tos_class-structure_class-definition_entities[domain
 entity] to reference another domain entity, and for a 
xref:ugfun.adoc#__ugfun_how-tos_class-structure_class-definition_view-models[view
 model] to reference both view model and domain entities.
+It's ok for a 
xref:../ugfun/ugfun.adoc#__ugfun_how-tos_class-structure_class-definition_entities[domain
 entity] to reference another domain entity, and for a 
xref:../ugfun/ugfun.adoc#__ugfun_how-tos_class-structure_class-definition_view-models[view
 model] to reference both view model and domain entities.
 However, it isn't valid for a domain entity to hold a persisted reference to 
view model (DataNucleus will not know how to persist that view model).
 
 Formally speaking, a collection is simply a regular JavaBean getter, returning 
a collection type (subtype of `java.util.Collection`).
@@ -25,8 +25,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:ugfun.adoc#_ugfun_how-tos_class-structure_properties[properties], 
the framework (at least, the xref:ugvw.adoc[Wicket viewer]) does not allow 
collections to be "edited".
-Instead, xref:ugfun.adoc#_ugfun_how-tos_class-structure_actions[action]s can 
be written that will modify the contents of the collection as a side-effect.
+Unlike 
xref:../ugfun/ugfun.adoc#_ugfun_how-tos_class-structure_properties[properties], 
the framework (at least, the xref:ugvw.adoc[Wicket viewer]) does not allow 
collections to be "edited".
+Instead, 
xref:../ugfun/ugfun.adoc#_ugfun_how-tos_class-structure_actions[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.
@@ -94,6 +94,6 @@ If you do wish to use this collection type, then annotate the 
getter with `@Prog
 Apache Isis can (currently) only provide a UI for collections of references.
 While you can use DataNucleus to persist collections/arrays of value types, 
such properties must be annotated as `@Programmatic` so that they are ignored 
by Apache Isis.
 
-If you want to visualize an array of value types in Apache Isis, then one 
option is to wrap value in a view model, as explained 
xref:ugfun.adoc#_ugfun_how-tos_simulating-collections-of-values[elsewhere].
+If you want to visualize an array of value types in Apache Isis, then one 
option is to wrap value in a view model, as explained 
xref:../ugfun/ugfun.adoc#_ugfun_how-tos_simulating-collections-of-values[elsewhere].
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_inject-services.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_inject-services.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_inject-services.adoc
index 66d5ccd..26c5682 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_inject-services.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_inject-services.adoc
@@ -6,13 +6,13 @@
 
 
 Apache Isis autowires (automatically injects) domain services into each 
entity, as well as into the domain services themselves, using either method 
injection or field injection.
-The framework defines many additional services (such as 
xref:rgsvc.adoc#_rgsvc_api_RepositoryService[`RepositoryService`]); these are 
injected in exactly the same manner.
+The framework defines many additional services (such as 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_RepositoryService[`RepositoryService`]); 
these are injected in exactly the same manner.
 
 Sometimes there may be multiple services that implement a single type.
 This is common for example for SPI service, whereby one module defines an SPI 
service, and other module(s) in the application implement that service.
 To support this, the framework also allows lists of services to be injected.
 
-When there are multiple service implementations of a given type, the framework 
will inject the service with highest priority, as defined through 
xref:rgant.adoc#_rgant_DomainService_menuOrder[`@DomainService#menuOrder()`] 
(even for domain services that are not menus), lowest first.
+When there are multiple service implementations of a given type, the framework 
will inject the service with highest priority, as defined through 
xref:../rgant/rgant.adoc#_rgant_DomainService_menuOrder[`@DomainService#menuOrder()`]
 (even for domain services that are not menus), lowest first.
 If a list of services is injected, then that list will be ordered according to 
`menuOrder`, again lowest first.
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_properties.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_properties.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_properties.adoc
index 34851a1..1c8bd36 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_properties.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_class-structure_properties.adoc
@@ -5,7 +5,7 @@
 :_imagesdir: images/
 
 
-A property is an instance variable of a domain object, of a scalar type, that 
holds some state about either a 
xref:ugfun.adoc#__ugfun_how-tos_class-structure_class-definition_entities[domain
 entity] or a 
xref:ugfun.adoc#__ugfun_how-tos_class-structure_class-definition_view-models[view
 model].
+A property is an instance variable of a domain object, of a scalar type, that 
holds some state about either a 
xref:../ugfun/ugfun.adoc#__ugfun_how-tos_class-structure_class-definition_entities[domain
 entity] or a 
xref:../ugfun/ugfun.adoc#__ugfun_how-tos_class-structure_class-definition_view-models[view
 model].
 
 For example, a ``Customer``'s `firstName` would be a property, as would their 
`accountCreationDate` that they created their account.
 All properties have at least a "getter" method, and most properties have also 
a "setter" method (meaning that they are mutable).
@@ -63,7 +63,7 @@ Or to map a reference type:
 private Customer customer;
 ----
 
-It's ok for a 
xref:ugfun.adoc#__ugfun_how-tos_class-structure_class-definition_entities[domain
 entity] to reference another domain entity, and for a 
xref:ugfun.adoc#__ugfun_how-tos_class-structure_class-definition_view-models[view
 model] to reference both view model and domain entities.
+It's ok for a 
xref:../ugfun/ugfun.adoc#__ugfun_how-tos_class-structure_class-definition_entities[domain
 entity] to reference another domain entity, and for a 
xref:../ugfun/ugfun.adoc#__ugfun_how-tos_class-structure_class-definition_view-models[view
 model] to reference both view model and domain entities.
 However, it isn't valid for a domain entity to hold a persisted reference to 
view model (DataNucleus will not know how to persist that view model).
 
 [NOTE]
@@ -72,7 +72,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:ugfun.adoc#_ugfun_how-tos_class-structure_properties-vs-parameters[Properties
 vs Parameters] section provides a handy reference of each.
+The table in the 
xref:../ugfun/ugfun.adoc#_ugfun_how-tos_class-structure_properties-vs-parameters[Properties
 vs Parameters] section provides a handy reference of each.
 
 
 [[__ugfun_how-tos_class-structure_properties_optional-properties]]
@@ -123,7 +123,7 @@ For example:
 private String notes;
 ----
 
-If this is omitted then whether editing is enabled or disabled is defined 
globally, in the `isis.properties` configuration file; see 
xref:rgcfg.adoc#__rgcfg_configuring-core_isis-objects-editing[reference 
configuration guide] for further details.
+If this is omitted then whether editing is enabled or disabled is defined 
globally, in the `isis.properties` configuration file; see 
xref:../rgcfg/rgcfg.adoc#__rgcfg_configuring-core_isis-objects-editing[reference
 configuration guide] for further details.
 
 
 [[__ugfun_how-tos_class-structure_properties_ignoring-properties]]
@@ -254,7 +254,7 @@ More information can be found 
http://www.opentaps.org/docs/index.php/How_to_Use_
 
 Apache Isis configures JDO/DataNucleus so that the properties of type 
`org.apache.isis.applib.value.Blob` and `org.apache.isis.applib.value.Clob` can 
also be persisted.
 
-As for 
xref:ugfun.adoc#__ugfun_how-tos_class-structure_properties_mapping-joda-dates[Joda
 dates], this requires the `@javax.jdo.annotations.Persistent` annotation.
+As for 
xref:../ugfun/ugfun.adoc#__ugfun_how-tos_class-structure_properties_mapping-joda-dates[Joda
 dates], this requires the `@javax.jdo.annotations.Persistent` 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.
 
 
[[__ugfun_how-tos_class-structure_properties_mapping-blobs-and-clobs_mapping-blobs]]

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_crud.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_crud.adoc 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_crud.adoc
index 95c5e64..efa18bc 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_crud.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_crud.adoc
@@ -9,21 +9,21 @@ NOTE: FIXME
 
 ## Instantiating and Persisting Objects
 
-NOTE: FIXME - using ``DomainObjectContainer``'s support for  
xref:rgsvc.adoc#_rgsvc_api_DomainObjectContainer_object-creation-api[creation] 
and 
xref:rgsvc.adoc#_rgsvc_api_DomainObjectContainer_object-persistence-api[persistence]
+NOTE: FIXME - using ``DomainObjectContainer``'s support for  
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_DomainObjectContainer_object-creation-api[creation]
 and 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_DomainObjectContainer_object-persistence-api[persistence]
 
 ## Finding Objects
 
-NOTE: FIXME - using 
xref:rgsvc.adoc#_rgsvc_api_DomainObjectContainer_generic-repository-api[`DomainObjectContainer`]
+NOTE: FIXME - using 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_DomainObjectContainer_generic-repository-api[`DomainObjectContainer`]
 
 ### Using DataNucleus type-safe queries
 
-NOTE: FIXME - as described 
xref:rgsvc.adoc#__rgsvc_api_IsisJdoSupport_type-safe-jdoql-queries[here]
+NOTE: FIXME - as described 
xref:../rgsvc/rgsvc.adoc#__rgsvc_api_IsisJdoSupport_type-safe-jdoql-queries[here]
 
 
 
 ## Deleting Objects
 
-NOTE: FIXME using ``DomainObjectContainer``'s support for  
xref:rgsvc.adoc#_rgsvc_api_DomainObjectContainer_object-persistence-api[persistence]
+NOTE: FIXME using ``DomainObjectContainer``'s support for  
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_DomainObjectContainer_object-persistence-api[persistence]
 
 
 

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_derived-members.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_derived-members.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_derived-members.adoc
index aacef41..abcf5e9 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_derived-members.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_derived-members.adoc
@@ -39,10 +39,10 @@ public class Customer {
 
 == Trigger on property change
 
-NOTE: FIXME - xref:rgcms.adoc#_rgcms_methods_prefixes_modify[`modify...()`], 
xref:rgcms.adoc#_rgcms_methods_prefixes_clear[`clear...()`]
+NOTE: FIXME - 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_modify[`modify...()`], 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_clear[`clear...()`]
 
 
 
 == Trigger on collection change
 
-NOTE: FIXME - xref:rgcms.adoc#_rgcms_methods_prefixes_addTo[`addTo...()`], 
xref:rgcms.adoc#_rgcms_methods_prefixes_removeFrom[`removeFrom...()`]
+NOTE: FIXME - 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_addTo[`addTo...()`], 
xref:../rgcms/rgcms.adoc#_rgcms_methods_prefixes_removeFrom[`removeFrom...()`]

http://git-wip-us.apache.org/repos/asf/isis/blob/252c2f8e/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_domain-services.adoc
----------------------------------------------------------------------
diff --git 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_domain-services.adoc
 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_domain-services.adoc
index db36868..4bda8a0 100644
--- 
a/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_domain-services.adoc
+++ 
b/adocs/documentation/src/main/asciidoc/guides/ugfun/_ugfun_how-tos_domain-services.adoc
@@ -16,14 +16,14 @@ In Apache Isis domain services have several 
responsibilities:
 - they provide other services (eg performing calculations, attach a barcode, 
send an email etc).
 - to implement an SPI of the framework, most notably cross-cutting concerns 
such as security, command profiling, auditing and publishing.
 
-It's worth extending the 
xref:ugfun.adoc#_ugfun_core-concepts_philosophy_hexagonal-architecture[Hexagonal
 Architecture] to show where domain services -- and in particular the domain 
services provided by link:http://www.isisaddons.org[Isis Addons] (non-ASF) -- 
fit in:
+It's worth extending the 
xref:../ugfun/ugfun.adoc#_ugfun_core-concepts_philosophy_hexagonal-architecture[Hexagonal
 Architecture] to show where domain services -- and in particular the domain 
services provided by link:http://www.isisaddons.org[Isis Addons] (non-ASF) -- 
fit in:
 
 .The hexagonal architecture with Isis addons
 
image::{_imagesdir}how-tos/domain-services/hexagonal-architecture-addons.png[width="700px"]
 
 The (non-ASF) link:http://isisaddons.org[Isis Addons] are a good source of 
domain services, providing SPI implementations of the common cross-cutting 
concerns, and also a number of APIs for domain objects to invoke (eg tags, 
excel, settings).  Of course, you can also write your own domain services as 
well, for example to interface with some external CMS system, say.
 
-The Apache Isis framework also provides numerous in-built domain services.  
These are catalogued in the xref:rgsvc.adoc[domain services] reference guide.
+The Apache Isis framework also provides numerous in-built domain services.  
These are catalogued in the xref:../rgsvc/rgsvc.adoc[domain services] reference 
guide.
 
 
 
@@ -172,7 +172,7 @@ public 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:ugfun.adoc#_ugfun_how-tos_contributed-members[here].  More information
+More information about contributions can be found 
xref:../ugfun/ugfun.adoc#_ugfun_how-tos_contributed-members[here].  More 
information
 about using contributions and mixins to keep your domain application decoupled 
can be found xref:ugbtb.adoc#_ugbtb_decoupling_contributions[here] and 
xref:ugbtb.adoc#_ugbtb_decoupling_mixins[here].
 
 
@@ -207,7 +207,7 @@ public CustomerOrderSubscriptions {
 
 == Prototyping
 
-While for long-term maintainability we do recommend the naming conventions 
described 
xref:ugfun.adoc#__ugfun_how-tos_domain-services_organizing-services[above], you 
can get away with far fewer services when just prototyping a domain.
+While for long-term maintainability we do recommend the naming conventions 
described 
xref:../ugfun/ugfun.adoc#__ugfun_how-tos_domain-services_organizing-services[above],
 you can get away with far fewer services when just prototyping a domain.
 
 If the domain service nature is not specified (or is left to its default, 
`VIEW`), then the service's actions will
 appear in the UI both as menu items _and_ as contributions (and the service 
can of course be injected into other domain objects for programmatic 
invocation).
@@ -223,7 +223,7 @@ By default all domain services are considered to be 
singletons, and thread-safe.
 
 Sometimes though a service's lifetime is applicable only to a single request; 
in other words it is request-scoped.
 
-The CDI annotation 
xref:rgant.adoc#_rgant-RequestScoped[`@javax.enterprise.context.RequestScoped`] 
is used to indicate this fact:
+The CDI annotation 
xref:../rgant/rgant.adoc#_rgant-RequestScoped[`@javax.enterprise.context.RequestScoped`]
 is used to indicate this fact:
 
 [source,java]
 ----
@@ -233,15 +233,15 @@ public class MyService extends AbstractService {
 }
 ----
 
-The framework provides a number of request-scoped services, include a 
xref:rgsvc.adoc#_rgsvc_api_Scratchpad[`Scratchpad`] service query results 
caching through the 
xref:rgsvc.adoc#_rgsvc_api_QueryResultsCache[`QueryResultsCache`], and support 
for co-ordinating bulk actions through the 
xref:rgsvc.adoc#_rgsvc_api_ActionInvocationContext[`ActionInvocationContext`] 
service.  See the xref:rgsvc.adoc[domain services] reference guide for further 
details.
+The framework provides a number of request-scoped services, include a 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_Scratchpad[`Scratchpad`] service query 
results caching through the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_QueryResultsCache[`QueryResultsCache`], and 
support for co-ordinating bulk actions through the 
xref:../rgsvc/rgsvc.adoc#_rgsvc_api_ActionInvocationContext[`ActionInvocationContext`]
 service.  See the xref:../rgsvc/rgsvc.adoc[domain services] reference guide 
for further details.
 
 
 
 
 == Registering domain services
 
-The easiest way to register domain services is using 
xref:rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[`AppManifest`] to 
specify the modules
-which contain xref:rgant.adoc#_rgant-DomainService[`@DomainService`]-annotated 
classes.
+The easiest way to register domain services is using 
xref:../rgcms/rgcms.adoc#_rgcms_classes_AppManifest-bootstrapping[`AppManifest`]
 to specify the modules
+which contain 
xref:../rgant/rgant.adoc#_rgant-DomainService[`@DomainService`]-annotated 
classes.
 
 For example:
 
@@ -284,7 +284,7 @@ isis.services = employee.Employees,\
 
 This is quite rare, however; you will often want to use default 
implementations of domain services that are provided by the framework and so 
will not reside under this prefix.
 
-Examples of framework-provided services (as defined in the applib) include 
clock, auditing, publishing, exception handling, view model support, 
snapshots/mementos, and user/application settings management; see the 
xref:rgsvc.adoc[domain services] reference guide for further details.
+Examples of framework-provided services (as defined in the applib) include 
clock, auditing, publishing, exception handling, view model support, 
snapshots/mementos, and user/application settings management; see the 
xref:../rgsvc/rgsvc.adoc[domain services] reference guide for further details.
 
 
 
@@ -295,18 +295,18 @@ Services can optionally declare lifecycle callbacks to 
initialize them (when the
 An Apache Isis session _is_ available when initialization occurs (so services 
can interact with the object store, for example).
 
 
-The framework will call any `public` method annotated with 
xref:rgant.adoc#_rgant-PostConstruct[`@PostConstruct`] with either no arguments 
of an argument of type `Map<String,String>`
+The framework will call any `public` method annotated with 
xref:../rgant/rgant.adoc#_rgant-PostConstruct[`@PostConstruct`] with either no 
arguments of an argument of type `Map<String,String>`
 
 or
 
 In the latter case, the framework passes in the configuration 
(`isis.properties` and any other component-specific configuration files).
 
 
-Shutdown is similar; the framework will call any method annotated with 
xref:rgant.adoc#_rgant-PreDestroy[`@PreDestroy`].
+Shutdown is similar; the framework will call any method annotated with 
xref:../rgant/rgant.adoc#_rgant-PreDestroy[`@PreDestroy`].
 
 
 
 == The getId() method
 
-Optionally, a service may provide a 
xref:rgcms.adoc#_rgcms_methods_reserved_getId[`getId()`] method.  This method 
returns a logical identifier for a service, independent of its implementation.
+Optionally, a service may provide a 
xref:../rgcms/rgcms.adoc#_rgcms_methods_reserved_getId[`getId()`] method.  This 
method returns a logical identifier for a service, independent of its 
implementation.
 

Reply via email to