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 2017/04/03 23:29:17 UTC

[03/59] [abbrv] [partial] isis-site git commit: ISIS-1521: deletes content-OLDSITE

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-01-065-How-to-add-an-action-to-be-called-on-every-object-in-a-list.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-01-065-How-to-add-an-action-to-be-called-on-every-object-in-a-list.md b/content-OLDSITE/more-advanced-topics/how-to-01-065-How-to-add-an-action-to-be-called-on-every-object-in-a-list.md
deleted file mode 100644
index bd70b00..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-01-065-How-to-add-an-action-to-be-called-on-every-object-in-a-list.md
+++ /dev/null
@@ -1,37 +0,0 @@
-How to add an action to be called on every entity within a list
----------------------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-Usually an action is performed on a single instance of an entity (or domain service).  To indicate that a given action should be called for every instance of a list (eg as returned by a domain service finder), add the `@Bulk` annotation:
-
-    public class SomeDomainService {
-
-        @Bulk
-        public void actionName() { ... }
-
-    }
-
-Note however that bulk actions have a couple of important restrictions.
-
--   such actions on an entity cannot take any arguments
-
-    This restriction might be lifted in the future;
-
--   any business rules for hiding, disabling or validating the action
-    are ignored.
-
-
-Contributed actions (as described [here](./how-to-01-062-How-to-decouple-dependencies-using-contributions.html) can also be annotated as `@Bulk` actions, however they must accept a single argument (the contributee).  For example:
-
-    public class SomeDomainService {
-
-        @Bulk
-        public void actionName(SomeEntity someEntity) { ... }
-
-    }
-
-
-At the time of writing, only the Wicket viewer recognizes bulk actions;
-other viewers treat the action as a regular action.
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-02-040-How-to-specify-that-none-of-an-object's-members-is-visible.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-02-040-How-to-specify-that-none-of-an-object's-members-is-visible.md b/content-OLDSITE/more-advanced-topics/how-to-02-040-How-to-specify-that-none-of-an-object's-members-is-visible.md
deleted file mode 100644
index 377ff6f..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-02-040-How-to-specify-that-none-of-an-object's-members-is-visible.md
+++ /dev/null
@@ -1,43 +0,0 @@
-How to specify that none of an object's members is visible
-----------------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-To when an object is visible, provide a `hidden()` method:
-
-    public class TrackingAction implements Tracking {
-       public boolean hidden(){
-        ...
-       }
-    }
-
-If the function returns `true`, then the user will not be able to view the
-object's details.  (In fact, for security purposes the Wicket viewer returns 
-an error message that does not even indicate whether the object exists, in 
-essence a "404 not found" message).
-
-
-## Examples
-
-To prevent a user from accessing an object not "owned" by them, use:
-
-    public class SomeEntity {
-    
-        ...
-        
-        private String ownedBy;
-        public String getOwnedBy() { return ownedBy; }
-        public void setOwnedBy(String ownedBy) { this.ownedBy = ownedBy; }
-        
-        public boolean hidden() {
-            return !Objects.equal(getOwnedBy(), container.getUser().getName());
-        }
-        
-        @javax.inject.Inject
-        private DomainObjectContainer container;
-    }
-
-    
-## See also
-
-It is also possible to allow view-only access by [disabling all members](how-to-02-080-How-to-specify-that-none-of-an-object's-members-can-be-modified-or-invoked.html).

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-02-080-How-to-specify-that-none-of-an-object's-members-can-be-modified-or-invoked.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-02-080-How-to-specify-that-none-of-an-object's-members-can-be-modified-or-invoked.md b/content-OLDSITE/more-advanced-topics/how-to-02-080-How-to-specify-that-none-of-an-object's-members-can-be-modified-or-invoked.md
deleted file mode 100644
index 6ec46ea..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-02-080-How-to-specify-that-none-of-an-object's-members-can-be-modified-or-invoked.md
+++ /dev/null
@@ -1,70 +0,0 @@
-How to specify that none of an object's members can be modified/invoked
------------------------------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-Some objects have state which should not be modifiable only under
-certain conditions; for example an invoice can not be modified after it
-has been paid. The viewer is expected to interpret this by suppressing
-any sort of "edit" button.
-
-To indicate that an object cannot be modified, use the
-`String disabled(Identifier.Type type)` method:
-
-    public class FeeInvoice implements Invoice {
-       public String disabled(Identifier.Type type){
-        ...
-       }
-    }
-
-where `Identifier.Type` is in `org.apache.isis.applib:
-
-        /**
-         * What type of feature this identifies.
-         */
-        public static enum Type {
-            CLASS, PROPERTY_OR_COLLECTION, ACTION
-        }
-
-and provides fine grain control over disabling actions and properties.
-
-The return String is null if the the object (action or property) is not
-disabled, or the reason why it is disabled.
-
-## Examples
-
-To prevent a user from modifying an object not "owned" by them, use:
-
-    public class SomeEntity {
-    
-        ...
-        
-        private String ownedBy;
-        public String getOwnedBy() { return ownedBy; }
-        public void setOwnedBy(String ownedBy) { this.ownedBy = ownedBy; }
-        
-        public String disabled(Identifier.Type type) {
-            if(Objects.equal(getOwnedBy(), container.getUser().getName())) {
-                return null;
-            }
-            return "Can't modify objects not owned by you.";
-        }
-        
-        @javax.inject.Inject
-        private DomainObjectContainer container;
-    }
-
-{note
-This does not apply to any contributed actions; they must be disabled explicitly.
-}
-    
-    
-## See also
-
-It is also possible to prevent the user from even viewing an object, that is 
-to programmatically [hide the object](how-to-02-040-How-to-specify-that-none-of-an-object's-members-is-visible).
-
-    
-<!--
-See also ?.
--->

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-02-090-How-to-specify-that-an-object-is-immutable.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-02-090-How-to-specify-that-an-object-is-immutable.md b/content-OLDSITE/more-advanced-topics/how-to-02-090-How-to-specify-that-an-object-is-immutable.md
deleted file mode 100644
index ba5724f..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-02-090-How-to-specify-that-an-object-is-immutable.md
+++ /dev/null
@@ -1,22 +0,0 @@
-How to specify that an object is immutable (that none of its members can ever be modified)
-------------------------------------------------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-Some objects have state which should not be modifiable; for example
-those representing reference data. The viewer is expected to interpret
-this by which suppressing any sort of "edit" button.
-
-To indicate that an object cannot be modified, use the `@Immutable`
-annotation.
-
-For example:
-
-    @Immutable
-    public class ChasingLetter implements PaymentReclaimStrategy {
-        ...
-    }
-
-<!--
-See also ?.
--->

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-02-130-How-to-validate-declaratively-using-MustSatisfy.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-02-130-How-to-validate-declaratively-using-MustSatisfy.md b/content-OLDSITE/more-advanced-topics/how-to-02-130-How-to-validate-declaratively-using-MustSatisfy.md
deleted file mode 100644
index 7f5307e..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-02-130-How-to-validate-declaratively-using-MustSatisfy.md
+++ /dev/null
@@ -1,49 +0,0 @@
-How to validate declaratively using @MustSatisfy
-------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-The `@MustSatisfy` annotation is an alternative to using imperative
-validation, allowing validation rules to be captured in an
-(implementation of a) `org.apache.isis.applib.spec.Specification`.
-
-For example:
-
-    public class DomainObjectWithMustSatisfyAnnotations extends AbstractDomainObject {
-
-        private String lastName;
-        @MustSatisfy(SpecificationRequiresFirstLetterToBeUpperCase.class)
-        public String getLastName() {
-            resolve(lastName);
-            return lastName;
-        }
-        public void setLastName(String lastName) {
-            this.lastName = lastName;
-            objectChanged();
-        }
-
-        public void changeLastName(
-                @MustSatisfy(SpecificationRequiresFirstLetterToBeUpperCase.class)
-                String lastName
-                ) {
-            setLastName(lastName);
-        }
-
-    }
-
-To help you write your own `Specification`s, there are some adapter
-classes in `org.apache.isis.applib.specs`:
-
--   `AbstractSpecification`, which implements `Specification` and takes
-    inspiration from the [Hamcrest](http://code.google.com/p/hamcrest/)
-    library's `TypeSafeMatcher` class
-
--   `SpecificationAnd`, which allows a set of `Specification`s to be grouped
-    together and require that *all* of them are satisfied
-
--   `SpecificationOr`, which allows a set of `Specification`s to be grouped
-    together and require that *at least one* of them is satisfied
-
--   `SpecificationNot`, which requires that the provided `Specification` is
-    *not* satisfied
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-04-010-How-to-make-a-derived-property.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-04-010-How-to-make-a-derived-property.md b/content-OLDSITE/more-advanced-topics/how-to-04-010-How-to-make-a-derived-property.md
deleted file mode 100644
index a893435..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-04-010-How-to-make-a-derived-property.md
+++ /dev/null
@@ -1,110 +0,0 @@
-How to make a derived property
-------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-### Read-only
-
-Most derived properties are read-only, their value being derived from
-other information available to the object.
-
-Omitting the mutator (`setXxx()`) method for a property indicates both
-that the field is derived, and is not be persisted.  It should however
-be annotated with Isis' `@NotPersisted` annotation.
-
-For example:
-
-    public class Employee {
-        public Department getDepartment() { ... }
-        ...
-
-        // this is the derived property
-        @NotPersisted
-        public Employee getManager() {
-            if (getDepartment() == null) { return null; }
-            return getDepartment().getManager();
-        }
-        ...
-    }
-
-### Read-write using a setter
-
-A derived property can be made updateable (in that it takes the provided
-value and does something sensible with it) simply providing a setter that
-has been annotated using both Isis' `@NotPersisted` annotation and JDO's
-`@javax.jdo.annotations.NotPersistent` annotation:
-
-    public class Employee {
-        public Department getDepartment() { ... }
-        ...
-
-        @javax.jdo.annotations.NotPersistent
-        @NotPersisted
-        public Employee getManager() { ... }
-        public void setManager(Employee manager) {
-            if (getDepartment() == null) { return; }
-            getDepartment().modifyManager(manager);
-        }
-        ...
-    }
-
-### Read-write using a modify method (1.7.0 onwards)
-
-Alternatively, a derived property can be made updateable by providing a 
-`modifyXxx()` supporting method:
-
-    public class Employee {
-        public Department getDepartment() { ... }
-        ...
-
-        // this is the derived property
-        public Employee getManager() { ... }
-
-        // this makes the derived property modifiable
-        public void modifyManager(Employee manager) {
-            if (getDepartment() == null) { return; }
-            getDepartment().modifyManager(manager);
-        }
-
-        ...
-    }
-
-Note how the implementation of such a `modifyXxx()` method typically
-modifies the original source of the information (the Department object).
-
-### Caveats
-
-Beware of having two visible properties that update the same underlying data;
-which value "wins" is not well-defined.
-
-For example, consider this silly example:
-
-    public class ToDoItem {
-    
-        private String description;
-        public String getDescription() { return description; }
-        public void setDescription(String description) { this.description = description; }
-
-        public String getDerivedDescription() { return getDescription(); }
-        public void modifyDerivedDescription(String derivedDescription) { setDescription(derivedDescription); }
-        
-    }
-    
-The value that is persisted back will be either from the 'description' field
-or the 'derivedDescription' field, which is almost certainly not what was intended.
-
-The fix is easy enough; make one of the fields invisible, eg:
-
-    public class ToDoItem {
-    
-        private String description;
-        @Hidden // problem resolved!
-        public String getDescription() { return description; }
-        public void setDescription(String description) { this.description = description; }
-        
-        public String getDerivedDescription() { return getDescription(); }
-        public void modifyDerivedDescription(String derivedDescription) { setDescription(derivedDescription); }
-        
-    }
-
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-04-015-Password-properties-and-params.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-04-015-Password-properties-and-params.md b/content-OLDSITE/more-advanced-topics/how-to-04-015-Password-properties-and-params.md
deleted file mode 100644
index 5973198..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-04-015-Password-properties-and-params.md
+++ /dev/null
@@ -1,71 +0,0 @@
-How to use a Password field
---------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-Isis provides the `org.apache.isis.applib.value.Password` value type which the Wicket viewer will automatically render
-using an appropriate `input type=password` field.
-
-However, (unlike Isis' `Blob` and `Clob` value) the JDO Objectstore does not "know" how to persist a `Password`.  This
-is deliberate: `Password` has no built-in encryption mechanism, its use merely ensures that the value of the password
-is not rendered in the UI.
-
-Therefore, the recommended approach for implementing passwords is to use a simple string to store the value, with the
-Password property derived from that.  An injected encryption service can be used to convert between the two.
-
-For example:
-
-    @javax.jdo.annotations.Column(allowsNull = "true", name = "password")
-    private String passwordStr;
-
-    @Optional
-    @MemberOrder(sequence = "99")
-    public Password getPassword() {
-        return passwordStr !=null? new Password(encryptionService.decrypt(passwordStr)): null;
-    }
-
-    public void setPassword(final Password password) {
-        this.passwordStr = password != null? encryptionService.encrypt(password.getPassword()): null;
-    }
-
-    @javax.inject.Inject
-    private com.mycompany.services.EncryptionService encryptionService;
-
-In this case the password is a property, and the encryption service provides both decryption and encryption.
-
-As a variant on the above, you could arrange for the password to be changed using an action.
-
-    @javax.jdo.annotations.Column(allowsNull = "true", name = "password")
-    private String passwordStr;
-    
-    @MemberOrder(sequence = "1")
-    public ToDoItem changePassword(@Optional Password password) {
-        this.passwordStr = password != null? encryptionService.encrypt(password.getPassword()): null;
-        return this;
-    }
-    
-    @javax.inject.Inject
-    private org.isisaddons.module.security.dom.password PasswordEncryptionService encryptionService;
-    
-
-This is more secure because the encryption is one-way: encrypt but not decrypt.  Moreover (as the above code snippet 
-hits at) you could reuse the the [Security Module Addon](https://github.com/isisaddons/isis-module-security)'s own
-[PasswordEncryptionService](https://github.com/isisaddons/isis-module-security/tree/917f1933f978643cd319a35d1be0dd7333e88f76/dom/src/main/java/org/isisaddons/module/security/dom/password), which
-includes a reasonably secure implementation of this service.
-
-
-#### UI Cosmetic fix (1.6.0 and earlier)
-
-In Isis 1.6.0 and earlier there is a cosmetic bug that the password field is not rendered correctly.  Add the following
-CSS into your app's `application.css` file:
-    
-    .isisPasswordPanel input[type=password] {
-        border-radius:4px;
-        -moz-border-radius:4px;
-        -webkit-border-radius:4px;
-        padding:6px;
-        border:1px solid #F0EFEA;
-        border-top:1px solid #CCCBC7;
-    }
-
-This has been fixed in `1.7.0`.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-04-020-How-to-make-a-derived-collection.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-04-020-How-to-make-a-derived-collection.md b/content-OLDSITE/more-advanced-topics/how-to-04-020-How-to-make-a-derived-collection.md
deleted file mode 100644
index 5168006..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-04-020-How-to-make-a-derived-collection.md
+++ /dev/null
@@ -1,47 +0,0 @@
-How to make a derived collection
---------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-Collections can be derived by omitting the mutator (the same way as
-[properties](./how-to-04-010-How-to-make-a-derived-property.html).  It should however be annotated with Isis' `@NotPersisted` annotation.
-
-For example:
-
-    public class Department {
-
-        // Standard collection
-        private SortedSet<Employee> employees = new TreeSet<Employee>();
-        public SortedSet<Employee> getEmployees() { ... }
-        private void setEmployees(SortedSet<Employee>) { ... }
-
-        // Derived collection
-        @NotPersisted
-        public List<Employee> getTerminatedEmployees() {
-            List<Employee> terminatedEmployees = new ArrayList<Employee>();
-            for(Employee e: employees) {
-                if (e.isTerminated()) {
-                    addTo(terminatedEmployees, e);
-                }
-            }
-            return terminatedEmployees;
-        }
-        ...
-    }
-
-Derived collections are not persisted, though may be modified if there
-is an `addToXxx()` or `removeFromXxx()` supporting method. As for
-derived properties, the implementations of these mutators change the
-underlying data. For example:
-
-    public class Department {
-        ...
-
-        public void addToTerminatedEmployees(Employee employee) {
-            employee.setTerminated(true);
-        }
-        public void removeFromTerminatedEmployees(Employee employee) {
-            employee.setTerminated(false);
-        }
-    }
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-04-030-How-to-inline-the-results-of-a-query-only-repository-action.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-04-030-How-to-inline-the-results-of-a-query-only-repository-action.md b/content-OLDSITE/more-advanced-topics/how-to-04-030-How-to-inline-the-results-of-a-query-only-repository-action.md
deleted file mode 100644
index 6c8078c..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-04-030-How-to-inline-the-results-of-a-query-only-repository-action.md
+++ /dev/null
@@ -1,18 +0,0 @@
-How to inline the results of a query-only repository action
------------------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-While derived properties <!--(?)--> and derived collections <!--(?)--> typically "walk
-the graph" to associated objects, there is nothing to prevent the
-returned value being the result of invoking a repository (domain
-service) action.
-
-For example:
-
-    public class Customer {
-        ...
-        public List<Order> getMostRecentOrders() {
-            return orderRepo.findMostRecentOrders(this, 5);
-        }
-    }

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-04-040-How-to-trigger-other-behaviour-when-a-property-is-changed.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-04-040-How-to-trigger-other-behaviour-when-a-property-is-changed.md b/content-OLDSITE/more-advanced-topics/how-to-04-040-How-to-trigger-other-behaviour-when-a-property-is-changed.md
deleted file mode 100644
index f794b8d..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-04-040-How-to-trigger-other-behaviour-when-a-property-is-changed.md
+++ /dev/null
@@ -1,52 +0,0 @@
-How to trigger other behaviour when a property is changed
----------------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-If you want to invoke functionality whenever a property is changed by
-the user, then you should create a supporting `modifyXxx()` method and
-include the functionality within that. The syntax is:
-
-    public void modifyPropertyName(PropertyType param)
-
-Why not just put this functionality in the setter? Well, the setter is
-used by the object store to recreate the state of an already persisted
-object. Putting additional behaviour in the setter would cause it to be
-triggered incorrectly.
-
-For example:
-
-    public class Order() {
-        public Integer getAmount() { ... }
-        public void setAmount(Integer amount) { ... }
-        public void modifyAmount(Integer amount) {
-            setAmount(amount);
-            addToTotal(amount);
-        }
-        ...
-    }
-
-Here the `modifyAmount()` method also calls the `addToTotal()` call as
-well as the `setAmount()` method. We don't want this addToCall() method
-to be called when pulling the object back from the object store, so we
-put it into the modify, not the setter.
-
-You may optionally also specify a `clearXxx()` which works the same way
-as modify `modify` `Xxx()` but is called when the property is cleared by
-the user (i.e. the current value replaced by nothing). The syntax is:
-
-    public void clearPropertyName()
-
-To extend the above example:
-
-    public class Order() {
-        public Integer getAmount() { ... }
-        public void setAmount(Integer amount) { ... }
-        public void modifyAmount(Integer amount) { ... }
-        public void clearAmount() {
-            removeFromTotal(this.amount);
-            setAmount(null);
-        }
-        ...
-    }
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-04-050-How-to-trigger-other-behaviour-when-an-object-is-added-or-removed.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-04-050-How-to-trigger-other-behaviour-when-an-object-is-added-or-removed.md b/content-OLDSITE/more-advanced-topics/how-to-04-050-How-to-trigger-other-behaviour-when-an-object-is-added-or-removed.md
deleted file mode 100644
index 33b3b5d..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-04-050-How-to-trigger-other-behaviour-when-an-object-is-added-or-removed.md
+++ /dev/null
@@ -1,54 +0,0 @@
-How to trigger other behaviour when an object is added or removed
------------------------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-A collection may have a corresponding `addToXxx()` and/or
-`removeFromXxx()` method. If present, and direct manipulation of the
-contents of the connection has not been disabled (see ?), then they will
-be called (instead of adding/removing an object directly to the
-collection returned by the accessor).
-
-The reason for this behaviour is to allow other behaviour to be
-triggered when the contents of the collection is altered. That is, it is
-directly equivalent to the supporting `modifyXxx()` and `clearXxx()`
-methods for properties (see ?).
-
-The syntax is:
-
-    public void addTo<CollectionName>(EntityType param)
-
-and
-
-    public void removeFromCollectionName(EntityType param)
-
-where `EntityType` is the same type as the generic collection type.
-
-For example:
-
-    public class Employee { ... }
-
-    public class Department {
-        private List<Employee> employees = new ArrayList<Employee>();
-        public List <Employee> getEmployees() {
-            return employees;
-        }
-        private void setEmployees(List<Employee> employees) { 
-            this.employees = employees;
-        }
-        public void addToEmployees(Employee employee) {
-            numMaleEmployees += countOneMale(employee);
-            numFemaleEmployees += countOneFemale(employee);
-            employees.add(employee);
-        }
-        public void removeFromEmployees(Employee employee) {
-            numMaleEmployees -= countOneMale(employee);
-            numFemaleEmployees -= countOneFemale(employee);
-            employees.remove(employee);
-        }
-        private int countOneMale(Employee employee) { return employee.isMale()?1:0; }
-        private int countOneFemale(Employee employee) { return employee.isFemale()?1:0; }
-
-        ...
-    }
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-04-060-How-to-set-up-and-maintain-bidirectional-relationships.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-04-060-How-to-set-up-and-maintain-bidirectional-relationships.md b/content-OLDSITE/more-advanced-topics/how-to-04-060-How-to-set-up-and-maintain-bidirectional-relationships.md
deleted file mode 100644
index fcd06ea..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-04-060-How-to-set-up-and-maintain-bidirectional-relationships.md
+++ /dev/null
@@ -1,62 +0,0 @@
-How to set up and maintain bidirectional relationships
-------------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-> **Note**: 
-> 
-> If using the [JDO Objectstore](../../components/objectstores/jdo/about.html) then there is generally no need to explicitly maintain bidirectional relationships.  Indeed, doing so may cause subtle errors.  See [here](../../components/objectstores/jdo/managed-1-to-m-relationships.html) for more details.
-
-The modifyXxx() and clearXxx() methods (see ?) can be used to setup
-bidirectional relationships. This is typically done with 1:m
-relationships, eg between Order and OrderLine, or Department and
-Employee.
-
-The recommended way of maintaining a bidirectional relationship is to
-use the 'mutual registration pattern', a write-up of which can be found
-[here](http://www.two-sdg.demon.co.uk/curbralan/papers/MutualRegistration.pdf).
-The general idea is that one side of the relationship is responsible for
-maintaining the associations, while the other side simply delegates.
-
-To implement this in *Isis* for a 1:m relationship, use the `addToXxx()` /
-`removeFromXxx()` and the `modifyXxx()` / `clearXxx()` methods.
-
-For example:
-
-    public class Department {
-        private SortedSet<Employee> employees = new TreeSet<Employee>();
-        public SortedSet<Employee> getEmployees() { ... }
-        private void setEmployees(SortedSet<Employee> employees) { ... }
-        public void addToEmployees(Employee e) {
-            if(e == null || employees.contains(e)) return;
-            e.setDepartment(this);
-            employees.add(e);
-        }
-        public void removeFromEmployees(Employee e) {
-            if(e == null || !employees.contains(e)) return;
-            e.setDepartment(null);
-            employees.remove(e);
-        }
-        ...
-    }
-
-and
-
-    public class Employee {
-        private Department department;
-        public Department getDepartment() { ... }
-        private void setDepartment(Department department) { ... }
-        public void modifyDepartment(Department d) {
-            if(d==null || department==d) return;
-            if(department != null) {
-                department.removeFromEmployees(this);
-            }
-            d.addToEmployees(this);
-        }
-        public void clearDepartment() {
-            if(department==null) return;
-            department.removeFromEmployees(this);
-        }
-        ...
-    }
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-05-010-How-to-specify-a-name-or-description-for-an-object.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-05-010-How-to-specify-a-name-or-description-for-an-object.md b/content-OLDSITE/more-advanced-topics/how-to-05-010-How-to-specify-a-name-or-description-for-an-object.md
deleted file mode 100644
index 86fc711..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-05-010-How-to-specify-a-name-or-description-for-an-object.md
+++ /dev/null
@@ -1,41 +0,0 @@
-How to specify a name and/or description for an object
-------------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-By default, the name (or type) of an object, as displayed to the user
-will be the class name. However, if an `@Named` annotation is included,
-then this will override the default name. This might be used to include
-punctuation or other characters that may not be used within a class
-name, or when - for whatever reason - the name of the class includes
-technical artifacts (for example project-defined prefixes or suffices).
-It is also useful if the required name cannot be used because it is a
-keyword in the language.
-
-By default the framework will create a plural version of the object name
-by adding an 's' to singular name, or a 'ies' to names ending 'y'. For
-irregular nouns or other special case, the `@Plural` annotation may be
-used to specify the plural form of the name explicitly.t
-
-The programmer may optionally also provide a `@DescribedAs` annotations,
-containing a brief description of the object's purpose, from a user
-perspective. The framework will make this available to the user in a
-form appropriate to the user interface style - for example as a tooltip.
-
-For example:
-
-    @Named("Customer")
-    @Plural("Customers")
-    @DescribedAs("Individuals or organizations that have either "+
-                 "purchased from us in the past or "+
-                 "are likely to in the future")
-    public class CustomerImpl implements ICustomer {
-        ...
-    }
-
-> **Note**
->
-> There is an entirely separate mechanism for dealing with
-> Internationalisation (to document... ask on mailing list...)<!--, details of which can be found in the core
-> documentation.-->
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-05-020-How-to-specify-a-name-or-description-for-a-property.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-05-020-How-to-specify-a-name-or-description-for-a-property.md b/content-OLDSITE/more-advanced-topics/how-to-05-020-How-to-specify-a-name-or-description-for-a-property.md
deleted file mode 100644
index 588f3fc..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-05-020-How-to-specify-a-name-or-description-for-a-property.md
+++ /dev/null
@@ -1,34 +0,0 @@
-How to specify a name and/or description for a property
--------------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-### Specifying the name for a property
-
-By default the framework will use the property name itself to label the
-property on the user interface. If you wish to override this, use the
-`@Named `annotation on the property.
-
-For example:
-
-    public class Customer() {
-        @Named("Given Name")
-        public String getFirstName() { ... }
-        ...
-    }
-
-### Specifying a description for a property
-
-An additional description can be provided on a property using the
-`@DescribedAs` annotation. The framework will take responsibility to
-make this description available to the user, for example in the form of
-a tooltip.
-
-For example:
-
-    public class Customer() {
-        @DescribedAs("The customer's given name")
-        public String getFirstName() { ... }
-        ...
-    }
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-05-030-How-to-specify-a-name-or-description-for-a-collection.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-05-030-How-to-specify-a-name-or-description-for-a-collection.md b/content-OLDSITE/more-advanced-topics/how-to-05-030-How-to-specify-a-name-or-description-for-a-collection.md
deleted file mode 100644
index 53a4a60..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-05-030-How-to-specify-a-name-or-description-for-a-collection.md
+++ /dev/null
@@ -1,35 +0,0 @@
-How to specify a name and/or description for a collection
----------------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-### Specifying the name for a collection
-
-By default the framework will use the collection name itself to label
-the collection on the user interface. If you wish to override this, use
-the `@Named` annotation on the collection.
-
-For example:
-
-    public class Customer {
-        @Named("Placed Orders")
-        public List<Order> getOrders() { ... }
-        ...
-    }
-
-### Specifying a description for a collection
-
-An additional description can be provided on a collection using the
-`@DescribedAs` annotation. The framework will take responsibility to
-make this description available to the user, for example in the form of
-a tooltip.
-
-For example:
-
-    public class Customer {
-        @DescribedAs("Those orders that have been placed (and possibly shipped) " + 
-                     "by this customer given name by which this customer is known")
-        public List<Order> getOrders() { ... }
-        ...
-    }
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-05-040-How-to-specify-names-or-description-for-an-action.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-05-040-How-to-specify-names-or-description-for-an-action.md b/content-OLDSITE/more-advanced-topics/how-to-05-040-How-to-specify-names-or-description-for-an-action.md
deleted file mode 100644
index a0a645f..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-05-040-How-to-specify-names-or-description-for-an-action.md
+++ /dev/null
@@ -1,34 +0,0 @@
-How to specify names and/or description for an action
------------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-### Specifying the name for an action
-
-By default the framework will use the action name itself to label the
-menu item on the user interface. If you wish to override this, use the
-`@Named` annotation on the action.
-
-For example:
-
-    public class Customer {
-        @Named("Place Order")
-        public void createOrder() { ... }
-        ...
-    }
-
-### Specifying a description for an action
-
-An additional description can be provided on an action using the
-`@DescribedAs` annotation. The framework will take responsibility to
-make this description available to the user, for example in the form of
-a tooltip.
-
-For example:
-
-    public class Customer {
-        @DescribedAs("Places an order, causing a shipping note "+
-                     "to be generated and invoice to be dispatched")
-        public void createOrder() { ... }
-        ...
-    }

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-06-010-How-to-pass-a-messages-and-errors-back-to-the-user.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-06-010-How-to-pass-a-messages-and-errors-back-to-the-user.md b/content-OLDSITE/more-advanced-topics/how-to-06-010-How-to-pass-a-messages-and-errors-back-to-the-user.md
deleted file mode 100644
index 914ad3a..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-06-010-How-to-pass-a-messages-and-errors-back-to-the-user.md
+++ /dev/null
@@ -1,55 +0,0 @@
-How to pass a messages and errors back to the user
---------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-Sometimes, within an action it is necessary or desirable to pass a
-message to the user, for example to inform them of the results of their
-action ('5 payments have been issued') or that the action was not
-successful ('No Customer found with name John Smith').
-
-`DomainObjectContainer` defines three methods for this purpose:
-
--   `informUser(String message)`
-
-    Inform the user of some event. The user should not be expected to
-    acknowledge the message; typically the viewer will display the
-    message for a period of time in a non-modal notification window.
-
--   `warnUser(String message)`
-
-    Warn the user of some event. Because this is more serious, the
-    viewer should require the user to acknowledge the message.
-
--   `raiseError(String message)`
-
-    Indicate that an application exception has occurred. The viewer
-    should again require the user to acknowledge the message, and quite
-    possibly indicate further steps that the user should perform (eg
-    notify the help desk).
-
-
-The precise mechanics of how each of these messages is rendered visible
-to the user is determined by the viewer being used.
-
-
-Alternative way to raise an error
----------------------------------
-
-An alternative to calling `DomainObjectContainer#raiseError()` is to simply throw either an `org.apache.isis.applib.ApplicationException` or its superclass, `org.apache.isis.applib.RecoverableException`. Which you use is a matter of style, because the behaviour is exactly the same; internally `raiseError()` just throws the `ApplicationException`.
-
-
-How to deal with an unrecoverable and unexpected error
-------------------------------------------------------
-
-Throw any exception that isn't a subclass of `RecoverableException`
-
-The `org.apache.isis.applib.UnrecoverableException` is provided as a convenient superclass to use, but this is not required.
-
-
-Handling aborted transactions
------------------------------
-
-If underlying transaction is aborted by the framework - for example as the result of a constraint violation in the objectstore - then the application code should *not* throw `ApplicationException` (or `RecoverableException`), it should throw some other (non-recoverable) exception.
-
-However, the wrong type of exception being thrown will be automatically detected, and a non-recoverable exception will be thrown instead.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-07-010-How-to-set-up-the-initial-value-of-a-property-programmatically.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-07-010-How-to-set-up-the-initial-value-of-a-property-programmatically.md b/content-OLDSITE/more-advanced-topics/how-to-07-010-How-to-set-up-the-initial-value-of-a-property-programmatically.md
deleted file mode 100644
index 9925fb6..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-07-010-How-to-set-up-the-initial-value-of-a-property-programmatically.md
+++ /dev/null
@@ -1,60 +0,0 @@
-How to set up the initial value of a property programmatically
---------------------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-After an object has been created <!--(see ?)-->, there are several different
-ways to setup the initial values for an object's properties.
-
-### By each property's default values
-
-Firstly, the default value for a property can be supplied using a
-supporting `defaultXxx()` method. The syntax for specifying a default
-value is:
-
-    public PropertyType defaultPropertyName()
-
-where `PropertyType` is the same type as that of the property itself.
-
-    public class Order {
-        public Address getShippingAddress() { ... }
-        public void setShippingAddress() { ... }
-        public Address defaultShippingAddress() {
-            return getCustomer().normalAddress();
-        }
-        ...
-    }
-
-### By the created() lifecycle method
-
-Alternatively, the domain object may choose to initialize its property
-values in the `created()` lifecycle method <!--(see ?)-->. This is called after
-any `defaultXxx()` methods are called.
-
-
-An alternative to using the `defaultXxx()` supporting methods is to use the `created()` callback.  This is sometimes preferable because it centralizes all the default logic into a single location.
-
-For example:
-
-    public class Customer {
-
-        public void created() {
-            setRegistered(clockService.now());
-        }
-
-        private LocalDate registered;
-        public LocalDate getRegistered() { ... }
-        public void setRegistered(LocalDate registered) { ... }
-        ...
-    }
-
-For more details of callbacks, see [How to hook into the object lifecycle using callbacks](../reference/object-lifecycle-callbacks.html). 
-
-### Programmatically, by the creator
-
-Third, and perhaps most obviously, the creator of the object could
-initialize the properties of the object immediately after calling
-`newTransientInstance(...)`. This would be appropriate if the creator had
-reason to override any values set up in the `defaultXxx()` or `created()`
-methods discussed above.
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-07-020-How-to-insert-behaviour-into-the-object-life-cycle.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-07-020-How-to-insert-behaviour-into-the-object-life-cycle.md b/content-OLDSITE/more-advanced-topics/how-to-07-020-How-to-insert-behaviour-into-the-object-life-cycle.md
deleted file mode 100644
index 82e3540..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-07-020-How-to-insert-behaviour-into-the-object-life-cycle.md
+++ /dev/null
@@ -1,55 +0,0 @@
-How to insert behaviour into the object life cycle
---------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-*Apache Isis* is responsible for managing the object lifecycle,
-persisting, updating or removing objects from the persistent object
-store as required. For many applications the domain objects are unaware
-of this. If required, though, an object can provide callback methods
-(all optional) so that the framework can notify it of its persistence
-state.
-
-For example, the `persisted()` method is called after an object has been
-persisted. This could be used to setup a reverse association that should
-only be created once the new object has been persisted.
-
-The full list of callbacks is shown below.
-
-* `created()`
-
-   * following the logical creation of the object 
-   (that is, after `newTransientInstance()` has been called)
-
-* `loading()`
- 
-   * when a persistent object is about to be loaded into memory
-
-*  `loaded()`
-   * once the persistent object has just been loaded into memory
-
-* `persisting()` or `saving()`
-
-   * just before a transient object is first persisted.
-
-* `persisted()` or `saved()`
-
-   * just after a transient object is first persisted.
-
-* `updating()`
-
-   * after any property on a persistent object has been changed and just before this change is persisted
-
-* `updated()`
-
-   * after a changed property on a persistent object has been persisted
-
-* `removing()` or `deleting()`
-
-   * when a persistent object is just about to be deleted from the persistent object store.
-
-* `removed()` or `deleted()`
-
-   * when a persistent object has just been deleted from the persistent object store.
-
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-07-030-How-to-ensure-object-is-in-valid-state.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-07-030-How-to-ensure-object-is-in-valid-state.md b/content-OLDSITE/more-advanced-topics/how-to-07-030-How-to-ensure-object-is-in-valid-state.md
deleted file mode 100644
index 18cf769..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-07-030-How-to-ensure-object-is-in-valid-state.md
+++ /dev/null
@@ -1,47 +0,0 @@
-How to ensure object is in valid state
---------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-A `validate()` method may be added to provided validation at object level, prior to making an object persistent.
-
-The syntax is:
-
-    public String validate()
-
-A non-`null` value is the taken to be the reason why the object cannot be saved.
-
-This is particularly useful for validating fields in relation to each other.
-
-For example:
-
-    public class Booking {
-        private Date fromDate;
-        public Date getFromDate() {...}
-        public void setFromDate(Date d) {...}
-        
-        private Date toDate;
-        public Date getToDate() {...}
-        public void setToDate(Date d) {...}
-
-        public String validate() {
-            if (fromDate.getTicks() > toDate.getTicks()) {
-                return "From Date cannot be after To Date";
-            }
-            return null;
-        }
-        ...
-    }
-
-This will prevent the user from saving a transient `Booking` where the *From Date* falls after the *To Date*. Note that in this example, the two date properties could also have their own individual `validateXxx()` methods - for example in order to test that each date was after today.
-
-> **Warning**
->
-> At the time of writing, the `validate()` method is called only when
-> the object is first saved, not when it is subsequently updated. For
-> validation of subsequent updates, the workaround is necessary to build
-> the validation logic into the individual property validation methods
-> (though these could delegate to a common `validate()` method).
->
-> See [ISIS-18](https://issues.apache.org/jira/browse/ISIS-18) for the
-> status of this issue.

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-07-040-How-to-specify-that-an-object-should-not-be-persisted.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-07-040-How-to-specify-that-an-object-should-not-be-persisted.md b/content-OLDSITE/more-advanced-topics/how-to-07-040-How-to-specify-that-an-object-should-not-be-persisted.md
deleted file mode 100644
index 07ca0cb..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-07-040-How-to-specify-that-an-object-should-not-be-persisted.md
+++ /dev/null
@@ -1,12 +0,0 @@
-How to specify that an object should not be persisted
------------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-Non-persisted objects are intended to be used as view models; they aggregate some state with respect to a certain process. This may be read-only (eg a projection of certain informaiton) or read-write (eg a wizard-like process object). Either way, the viewer is expected to interpret this by not providing any sort of automatic "save" menu item if such an object is returned to the GUI.
-
-Non-persisted objects that are read-only are typically also marked as immutable <!--(see ?)-->.
-
-To indicate that an object cannot be persisted, use the
-`@NotPersistable` annotation.
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-08-010-Hiding,-disabling-or-validating-for-specific-users-or-roles.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-08-010-Hiding,-disabling-or-validating-for-specific-users-or-roles.md b/content-OLDSITE/more-advanced-topics/how-to-08-010-Hiding,-disabling-or-validating-for-specific-users-or-roles.md
deleted file mode 100644
index d851f2a..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-08-010-Hiding,-disabling-or-validating-for-specific-users-or-roles.md
+++ /dev/null
@@ -1,35 +0,0 @@
-Hiding, disabling or validating for specific users or roles
------------------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-Generally it is not good practice to embed knowledge of roles and/or
-users into the domain classes; instead, this should be the
-responsibility of the framework or platform and should be specified and
-administered externally to the domain model. However, in rare
-circumstances it might be necessary or pragmatic to implement access
-control within the domain model.
-
-The current user can be obtained from `DomainObjectContainer`, using its
-`getUser()` method. Alternatively, if the domain object inherits from
-`AbstractDomainObject`, then `getUser()` is also inherited. In either case
-the method returns an object of type
-`org.apache.isis.security.UserMemento`, which holds both username and the
-set of roles for that user. <!--The full details of the security classes can
-be found in ?.-->
-
-The mechanism to apply a business rule is just to return an appropriate
-value from a supporting `hideXxx()`, `disableXxx()` or `validateXxx()` method.
-
-For example, the following requires that the `MODIFY_SALARY` role is assigned to the current user in order to update a salary property beyond
-a certain value:
-
-    public class Employee extends AbstractDomainObject {
-        public BigDecimal getSalary() { ... }
-        public void setSalary(BigDecimal salary) { ... }
-        public String validateSalary() {
-            return salary.doubleValue() >= 30000 &&
-                  !getUser().hasRole("MODIFY_SALARY")?
-                  "Need MODIFY_SALARY role to increase salary above 30000": null;
-        }
-    }

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-09-020-How-to-write-a-typical-domain-service.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-09-020-How-to-write-a-typical-domain-service.md b/content-OLDSITE/more-advanced-topics/how-to-09-020-How-to-write-a-typical-domain-service.md
deleted file mode 100644
index 326b3fd..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-09-020-How-to-write-a-typical-domain-service.md
+++ /dev/null
@@ -1,172 +0,0 @@
-Singleton &amp; request-scoped domain services
------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-Domain services (by which we also mean repositories and factories) consist of a set 
-of logically grouped actions, and as such follow the same conventions as for entities. However, a service cannot have (persisted) properties, nor can it have (persisted) collections.
-
-Domain services are instantiated once and once only by the framework,
-and are used to centralize any domain logic that does not logically
-belong in a domain entity or value. *Isis* will automatically inject
-services into every domain entity that requests them, and into each
-other.
-
-For convenience you can [inherit](../how-tos/how-to-01-010-How-to-have-a-domain-object-be-a-POJO.html) from `AbstractService` or one of its subclasses, but this is not mandatory.
-
-### Registering domain services
-
-As noted [elsewhere](../../how-tos/how-to-09-010-How-to-register-domain-services,-repositories-and-factories.html), domain services (which includes repositories and factories) should be registered in the `isis.properties` configuration file, under `isis.services` key (a comma-separated list):
-
-For example:
-
-    isis.services = com.mycompany.myapp.employee.Employees\,
-                    com.mycompany.myapp.claim.Claims\,
-                    ...
-
-This will then result in the framework instantiating a single instance of each of the services listed.
-
-If all services reside under a common package, then the `isis.services.prefix` can specify this prefix:
-
-    isis.services.prefix = com.mycompany.myapp
-    isis.services = employee.Employees,\
-                    claim.Claims,\
-                    ...
-
-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) can be found referenced from the main [documentation](../../documentation.html) page.   They include clock, auditing, publishing, exception handling, view model support, snapshots/mementos, and user/application settings management.
-
-
-### Service scopes
-
-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 `@javax.enterprise.context.RequestScoped` is used to indicate this fact:
-
-     @javax.enterprise.context.RequestScoped
-     public class MyService extends AbstractService {
-         ...
-     }
-
-The framework provides a number of request-scoped services; these can be found referenced from the main [documentation](../../documentation.html) page.   They include scratchpad service, query results caching, and support for co-ordinating bulk actions. 
-
-
-### (Suppressing) contributed actions
-
-Any n-parameter action provided by a service will automatically be contributed to the list of actions for each of its (entity) parameters. From the viewpoint of the entity the action is called a contributed action.
-
-For example, given a service:
-
-    public interface Library {
-        public Loan borrow(Loanable l, Borrower b);
-    }
-
-and the entities:
-
-    public class Book implements Loanable { ... }y
-
-and
-
-    public class LibraryMember implements Borrower { ... }
-
-then the `borrow(...)` action will be contributed to both `Book` and to `LibraryMember`.
-
-This is an important capability because it helps to decouple the concrete classes from the services.
-
-If necessary, though, this behaviour can be suppressed by annotating the service action with  `@org.apache.isis.applib.annotations.NotContributed`.
-
-For example:
-
-    public interface Library {
-        @NotContributed
-        public Loan borrow(Loanable l, Borrower b);
-    }
-
-If annotated at the interface level, then the annotation will be inherited by every concrete class. Alternatively the annotation can be applied at the implementation class level and only apply to that particular implementation.
-
-Note that an action annotated as being `@NotContributed` will still appear in the service menu for the service. If an action should neither be contributed nor appear in service menu items, then simply annotate it as `@Hidden`.
-
-### (Suppressing) service menu items
-
-By default every action of a service (by which we also mean repositories and factories) will be rendered in the viewer, eg as a menu item for that service menu. This behaviour can be suppressed by annotating the action using `@org.apache.isis.applib.annotations.NotInServiceMenu`.
-
-For example:
-
-    public interface Library {
-        @NotInServiceMenu
-        public Loan borrow(Loanable l, Borrower b);
-    }
-
-Note that an action annotated as being `@NotInServiceMenu` will still be contributed. If an action should neither be contributed nor appear in service menu items, then simply annotate it as `@Hidden`.
-
-Alternatively, this can be performed using a supporting method:
-
-    public class LibraryImpl implements Library {
-        public Loan borrow(Loanable l, Borrower b) { ... }
-        public boolean notInServiceMenuBorrow() { ... }
-    }
-
-### (Suppressing) service menus
-
-If none of the service menu items should appear, then the service itself should be annotated as `@Hidden`.
-
-For example:
-
-    @Hidden
-    public interface EmailService {
-        public void sendEmail(String to, String from, String subject, String body);
-        public void forwardEmail(String to, String from, String subject, String body);
-    }
-
-### Initializing Services
-
-Services can optionally declare lifecycle callbacks to initialize them (when the app is deployed) and to shut them down (when the app is undeployed).
-
-An Isis session *is* available when initialization occurs (so services can interact with the object store, for example).
-
-#### Initialization
-
-The framework will call any `public` method annotated with `@javax.annotation.PostConstruct` and with either no arguments of an argument of type `Map<String,String>`:
-
-<pre>
-  @PostConstruct
-  public void init() {
-    ..
-  }
-</pre>
-
-or
-
-<pre>
-  @PostConstruct
-  public void init(Map<String,String> props) {
-    ..
-  }
-</pre>
-
-In the latter case, the framework passes in the configuration (`isis.properties` and any other component-specific configuration files).
-
-
-#### Shutdown
-
-Shutdown is similar; the framework will call any method annotated with `@javax.annotation.PreDestroy`:
-
-<pre>
-  @PreDestroy
-  public void shutdown() {
-    ..
-  }
-</pre>
-
-
-### The getId() method
-
-Optionally, a service may provide a `getId()` method:
-
-    public String getId()
-
-This method returns a logical identifier for a service, independent of its implementation. Currently it used only by perspectives, providing a label by which to record the services that are available for a current user's profile. <!--See ? for more about profiles and perspectives.-->
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-hide-part-of-a-title.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-hide-part-of-a-title.md b/content-OLDSITE/more-advanced-topics/how-to-hide-part-of-a-title.md
deleted file mode 100644
index 59ccc90..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-hide-part-of-a-title.md
+++ /dev/null
@@ -1,59 +0,0 @@
-How to hide part of a title
---------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-Normally the visibility of doamin object properties is solely the framework viewers' concern; the domain objects do not
-need to know which class members are visible or not.
- 
-However, one exception is when the title is built programmatically through the 
-[title()](../how-tos/how-to-01-040-How-to-specify-a-title-for-a-domain-entity.html) method.  In order to ensure that
-potentially sensitive information (that nevertheless is meant to be part of the title) does not "leak out", it may be 
-necessary for the domain object to programmatically determine whether the current user can view the information.
-
-One way to accomplish this is to use the [WrapperFactory](../reference/services/wrapper-factory.html), wrapping the
-domain object (`this`) and catching any exceptions:
-
-    String foo = "";
-    try {
-        foo = wrapperFactory.wrap(this).getFoo();
-    } catch(HiddenException ex) {
-        //ignore
-    }
-
-For example, in the todoapp example the `dueBy` date of a `ToDoItem` is part of the title:
-
-    public String title() {
-        final TitleBuffer buf = new TitleBuffer();
-        buf.append(getDescription());
-        if (isComplete()) {
-            buf.append("- Completed!");
-        } else {
-            if (getDueBy() != null) {
-                buf.append(" due by", getDueBy());
-            }
-        }
-        return buf.toString();
-    }
-
-However, this can be rewritten easily enough to suppress this portion if need be:
-
-    public String title() {
-        final TitleBuffer buf = new TitleBuffer();
-        buf.append(getDescription());
-        if (isComplete()) {
-            buf.append("- Completed!");
-        } else {
-            try {
-                final LocalDate dueBy = wrapperFactory.wrap(this).getDueBy();
-                if (dueBy != null) {
-                    buf.append(" due by", dueBy);
-                }
-            } catch(HiddenException ex) {
-                // ignore
-            }
-        }
-        return buf.toString();
-    }
-    
-We did debate whether to add an additional API in the `WrapperFactory` for this use case; for now we have decided against.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/how-to-suppress-contributions-to-action-parameter.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/how-to-suppress-contributions-to-action-parameter.md b/content-OLDSITE/more-advanced-topics/how-to-suppress-contributions-to-action-parameter.md
deleted file mode 100644
index 618a077..0000000
--- a/content-OLDSITE/more-advanced-topics/how-to-suppress-contributions-to-action-parameter.md
+++ /dev/null
@@ -1,114 +0,0 @@
-How to suppress contributions to action parameters
-------------------------------------------------
-
-[//]: # (content copied to _user-guide_xxx)
-
-If a contributed action has multiple parameters, then that action will be contributed to each of the parameter types.
-While this will often be what you want (or at least harmless), on some occasions you may want to suppress the contributed
-action on one of those parameter types.
-
-The [kitchen sink app](https://github.com/isisaddons/isis-app-kitchensink) (part of [isisaddons.org](http://www.isisaddons.org/), not ASF)
-includes an example showing how this can be done.
-
-In its `contributee` package there are two entities:
-
-* [Person](https://github.com/isisaddons/isis-app-kitchensink/blob/262e3bc149ac0d82757738339af9683668f44155/dom/src/main/java/org/isisaddons/app/kitchensink/dom/contrib/contributee/Person.java)
-* [FoodStuff](https://github.com/isisaddons/isis-app-kitchensink/blob/262e3bc149ac0d82757738339af9683668f44155/dom/src/main/java/org/isisaddons/app/kitchensink/dom/contrib/contributee/FoodStuff.java)
-
-and in its `contributed` package there is one entity:
-
-* [Preference](https://github.com/isisaddons/isis-app-kitchensink/blob/262e3bc149ac0d82757738339af9683668f44155/dom/src/main/java/org/isisaddons/app/kitchensink/dom/contrib/contributed/Preference.java)
-
-eg Mary LIKEs Apple, Mungo HATEs Banana, Midge LOVEs Oranges
-
-Neither `Person` nor `FoodStuff` knows about `Preference`s; the `Preference` is the tuple that associates the two together.
-
-The [PreferenceContributions](https://github.com/isisaddons/isis-app-kitchensink/blob/262e3bc149ac0d82757738339af9683668f44155/dom/src/main/java/org/isisaddons/app/kitchensink/dom/contrib/contributed/PreferenceContributions.java) service contributes the following:
-
-* `likes(...)` - a contributed collection to `Person`:
-
-<pre>
-    @Action(
-            semantics = SemanticsOf.SAFE
-    )
-    @ActionLayout(
-            contributed = Contributed.AS_ASSOCIATION
-    )
-    public List<FoodStuff> likes(final Person person) { ... }
-</pre>
-
-* `firstLove(...)` - contributed property, also to `Person`
-
-<pre>
-    @Action(semantics = SemanticsOf.SAFE)
-    @ActionLayout(
-            contributed = Contributed.AS_ASSOCIATION
-    )
-    public FoodStuff firstLove(final Person person) { ... }
-</pre>
-
-* `addPreference(...)` - a contributed action to both `Person` and `FoodStuff`
-
-<pre>
-    public Preference addPreference(
-            final Person person,
-            final @Named("Type") Preference.PreferenceType preferenceType,
-            final FoodStuff foodStuff) { ... }
-</pre>
-
-* `removePreference(...)` - a contributed action to both `Person` and `FoodStuff`
-
-<pre>
-    public Person removePreference(final Person person, final FoodStuff foodStuff) {
-        final List<Preference> preferences1 = preferences.listAllPreferences();
-        for (Preference preference : preferences1) { ... }
-</pre>
-
-While `addPreference(...)` and `removePreference(...)` are contributed to both `Person` and `FoodStuff`, each customizes the representation of those action (and in the case of `FoodStuff`, hides one of them completely).
-
-For the `Person` entity, the actions are associated with the (contributed) `likes` collection:
-
-<img src="images/suppressing-contributions-person.png" width="800px"/>
-
-which is accomplished using this <a href="https://github.com/isisaddons/isis-app-kitchensink/blob/262e3bc149ac0d82757738339af9683668f44155/dom/src/main/java/org/isisaddons/app/kitchensink/dom/contrib/contributee/Person.layout.json#L44-L61">fragment</a> in the `Person.layout.json` file:
-
-    "collections": {
-      "likes": {
-        "collectionLayout": {
-          "render": "EAGERLY"
-        },
-        "actions": {
-          "addPreference": {
-            "actionLayout": {
-              "named": "Add"
-            }
-          },
-          "removePreference": {
-            "actionLayout": {
-              "named": "Remove"
-            }
-          }
-        }
-      }
-    }
-
-
-For the `FoodStuff` entity meanwhile, only the `addPreference` action is made available:
-
-<img src="images/suppressing-contributions-foodstuff.png" width="800px"/>
-
-which is accomplished using this [fragment](https://github.com/isisaddons/isis-app-kitchensink/blob/262e3bc149ac0d82757738339af9683668f44155/dom/src/main/java/org/isisaddons/app/kitchensink/dom/contrib/contributee/FoodStuff.layout.json#L48-L59) in the `FoodStuff.layout.json` file: we have:
-
-    "actions": {
-      "addPreference": {
-        "actionLayout": {
-          "cssClass": "btn-success"
-        }
-      },
-      "removePreference": {
-        "actionLayout": {
-          "cssClass": "btn-warn",
-          "hidden": "EVERYWHERE" /* contributed action is hidden on one of its contributees */
-        }
-      }
-    }

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/images/Fixtures.png
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/images/Fixtures.png b/content-OLDSITE/more-advanced-topics/images/Fixtures.png
deleted file mode 100644
index 2f3461b..0000000
Binary files a/content-OLDSITE/more-advanced-topics/images/Fixtures.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/images/are-you-sure-happy-case.png
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/images/are-you-sure-happy-case.png b/content-OLDSITE/more-advanced-topics/images/are-you-sure-happy-case.png
deleted file mode 100644
index 1981c09..0000000
Binary files a/content-OLDSITE/more-advanced-topics/images/are-you-sure-happy-case.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/images/are-you-sure-sad-case.png
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/images/are-you-sure-sad-case.png b/content-OLDSITE/more-advanced-topics/images/are-you-sure-sad-case.png
deleted file mode 100644
index 6182447..0000000
Binary files a/content-OLDSITE/more-advanced-topics/images/are-you-sure-sad-case.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/images/are-you-sure.png
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/images/are-you-sure.png b/content-OLDSITE/more-advanced-topics/images/are-you-sure.png
deleted file mode 100644
index e1a76fe..0000000
Binary files a/content-OLDSITE/more-advanced-topics/images/are-you-sure.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/images/fixture-scenarios-choice.png
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/images/fixture-scenarios-choice.png b/content-OLDSITE/more-advanced-topics/images/fixture-scenarios-choice.png
deleted file mode 100644
index 91b5744..0000000
Binary files a/content-OLDSITE/more-advanced-topics/images/fixture-scenarios-choice.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/images/fixture-scenarios-results.png
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/images/fixture-scenarios-results.png b/content-OLDSITE/more-advanced-topics/images/fixture-scenarios-results.png
deleted file mode 100644
index fe4a060..0000000
Binary files a/content-OLDSITE/more-advanced-topics/images/fixture-scenarios-results.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/images/fixture-scenarios-run.png
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/images/fixture-scenarios-run.png b/content-OLDSITE/more-advanced-topics/images/fixture-scenarios-run.png
deleted file mode 100644
index 1455db9..0000000
Binary files a/content-OLDSITE/more-advanced-topics/images/fixture-scenarios-run.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/images/fixture-scenarios.png
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/images/fixture-scenarios.png b/content-OLDSITE/more-advanced-topics/images/fixture-scenarios.png
deleted file mode 100644
index 5f5da74..0000000
Binary files a/content-OLDSITE/more-advanced-topics/images/fixture-scenarios.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/images/fixture-script-hierarchies-1.PNG
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/images/fixture-script-hierarchies-1.PNG b/content-OLDSITE/more-advanced-topics/images/fixture-script-hierarchies-1.PNG
deleted file mode 100644
index f4e33e3..0000000
Binary files a/content-OLDSITE/more-advanced-topics/images/fixture-script-hierarchies-1.PNG and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/images/fixture-script-hierarchies-2.PNG
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/images/fixture-script-hierarchies-2.PNG b/content-OLDSITE/more-advanced-topics/images/fixture-script-hierarchies-2.PNG
deleted file mode 100644
index aee1ec4..0000000
Binary files a/content-OLDSITE/more-advanced-topics/images/fixture-script-hierarchies-2.PNG and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/images/fixture-script-hierarchies.pptx
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/images/fixture-script-hierarchies.pptx b/content-OLDSITE/more-advanced-topics/images/fixture-script-hierarchies.pptx
deleted file mode 100644
index 7ee6238..0000000
Binary files a/content-OLDSITE/more-advanced-topics/images/fixture-script-hierarchies.pptx and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/images/suppressing-contributions-foodstuff.png
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/images/suppressing-contributions-foodstuff.png b/content-OLDSITE/more-advanced-topics/images/suppressing-contributions-foodstuff.png
deleted file mode 100644
index ce932ff..0000000
Binary files a/content-OLDSITE/more-advanced-topics/images/suppressing-contributions-foodstuff.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/images/suppressing-contributions-person.png
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/images/suppressing-contributions-person.png b/content-OLDSITE/more-advanced-topics/images/suppressing-contributions-person.png
deleted file mode 100644
index 6a66abc..0000000
Binary files a/content-OLDSITE/more-advanced-topics/images/suppressing-contributions-person.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-advanced-topics/multi-tenancy.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-advanced-topics/multi-tenancy.md b/content-OLDSITE/more-advanced-topics/multi-tenancy.md
deleted file mode 100644
index bc13835..0000000
--- a/content-OLDSITE/more-advanced-topics/multi-tenancy.md
+++ /dev/null
@@ -1,133 +0,0 @@
-Title: Multi-Tenancy support (1.8.0)
-
-[//]: # (content copied to _user-guide_xxx)
-
-## Theory
-
-Sometimes data belonging to one population of users should not be visible to another population
-of users.   This is often the case when a single application is accessed by geography: the data belonging to the
-Italian users should not be accessible by French users, and vice versa.
-
-While this could be accomplished by running multiple instances of the application, in some situations it
-may be considered preferable to run a single instance of the app, and have the application itself manage the partitioned
-access to data.  This is what we mean by multi-tenancy support.
-
-Furthermore, sometimes some data should be accessible by all users; it is global data.  This is often (though not always)
-read-only reference data (sometimes also called "golden data" or "standing data").  Running multiple instances of
-an app would require maintaining and synchronizing multiple copies of this data, whereas running just a single instance 
-eliminates such complexity.
-
-We can consider global/local data as a (very simple) hierarchy, which then leads onto the next idea that multi-tenancy
-may be hierarchical.  Thus, we could have global data, then Italian data, and then Milan (vs Rome vs Naples) data.  We
-could envisage this as a graph:
-
-<pre>
-/           # ie, root === global
-    italy
-        milan
-        rome
-        naples
-    france
-        paris
-        lyon
-        nice
-    sweden
-        stockholm
-        malmo
-</pre>
-        
-Not only does all data belong to a particular node ("tenancy") within this graph, so is each user associated.
-
-## Support within Isis (1.8.0)
-
-The Isis core framework provides the infrastructure to implement multi-tenancy, while the [Isis addons security module](https://github.com/isisaddons/isis-module-security) provides a full implementation for you to use out-of-the-box or to fork and adapt as you require.
-
-The key concept within Isis core is that, whenever rendering a domain object, the framework will check if that object
-is visible to the current user.  If visibility is vetoed (for whatever reason) then the object will not be displayed.
-
-* if the viewer was attempting to render the object on a page, an authorization exception (404 page) will be thrown.
-* if the viewer was attempting to render the object within a table, that row will simply be excluded.
-
-The Isis addons security module provides an implementation (of a [FacetFactory](../config/metamodel-finetuning-the-programming-model.html)) that
-vetoes access where required.  This vetoing is based on the relationship between data and the current user.  The security module:
-
-* defines the `ApplicationTenancy` that enumerates the available tenancies, placing them into a hierarchy.
-* maps each current user to the `ApplicationUser` entity; each application user can optionally be associated with an application tenancy
-* the `WithApplicationTenancy` interface can be implemented by any domain object.  If the domain object to be viewed
-  implements this interface, then the security module('s FacetFactory) performs the check.
-  
-The following table illustrates the visibility rules:
-
-<table class="table table-striped table-bordered table-condensed">
-    <tr>
-        <th>object's tenancy</th><th>user's tenancy</th><th>access</th>
-    </tr>
-    <tr>
-        <td>null</td><td>null</td><td>editable</td>
-    </tr>
-    <tr>
-        <td>null</td><td>non-null</td><td>editable</td>
-    </tr>
-    <tr>
-        <td>/</td><td>/</td><td>editable</td>
-    </tr>
-    <tr>
-        <td>/</td><td>/it</td><td>visible</td>
-    </tr>
-    <tr>
-        <td>/</td><td>/it/car</td><td>visible</td>
-    </tr>
-    <tr>
-        <td>/</td><td>/it/igl</td><td>visible</td>
-    </tr>
-    <tr>
-        <td>/</td><td>/fr</td><td>visible</td>
-    </tr>
-    <tr>
-        <td>/</td><td>null</td><td>not visible</td>
-    </tr>
-    <tr>
-        <td>/it</td><td>/</td><td>editable</td>
-    </tr>
-    <tr>
-        <td>/it</td><td>/it</td><td>editable</td>
-    </tr>
-    <tr>
-        <td>/it</td><td>/it/car</td><td>visible</td>
-    </tr>
-    <tr>
-        <td>/it</td><td>/it/igl</td><td>visible</td>
-    </tr>
-    <tr>
-        <td>/it</td><td>/fr</td><td>not visible</td>
-    </tr>
-    <tr>
-        <td>/it</td><td>null</td><td>not visible</td>
-    </tr>
-    <tr>
-        <td>/it/car</td><td>/</td><td>editable</td>
-    </tr>
-    <tr>
-        <td>/it/car</td><td>/it</td><td>editable</td>
-    </tr>
-    <tr>
-        <td>/it/car</td><td>/it/car</td><td>editable</td>
-    </tr>
-    <tr>
-        <td>/it/car</td><td>/it/igl</td><td>not visible</td>
-    </tr>
-    <tr>
-        <td>/it/car</td><td>/fr</td><td>not visible</td>
-    </tr>
-    <tr>
-        <td>/it/car</td><td>null</td><td>not visible</td>
-    </tr>
-</table>
-
-To enable this requires a single configuration property to be set:
-
-    isis.reflector.facets.include=org.isisaddons.module.security.facets.TenantedAuthorizationFacetFactory
-
-If you have different rules, you could still leverage `ApplicationUser` and `ApplicationTenancy` but implement your rules
-in your own facet factory.
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/more-thanks.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/more-thanks.md b/content-OLDSITE/more-thanks.md
deleted file mode 100644
index a619218..0000000
--- a/content-OLDSITE/more-thanks.md
+++ /dev/null
@@ -1,41 +0,0 @@
-Title: More Thanks
-
-[//]: # (content copied to _user-guide_xxx)
-
-In addition to the [support given to Apache Foundation as a whole](http://www.apache.org/foundation/thanks.html), the Isis community would also like to extend our thanks to:
-
-<table class="table table-bordered table-condensed table-hover">
-<tr>
-    <td style="background-color: #426779">
-        <a href="<a href="http://www.eurocommercialproperties.com/"><img src="images/more-thanks/ecp.png"></a>
-    </td>
-    <td style="padding: 10px">
-        <a href="http://www.eurocommercialproperties.com/">Eurocommercial Properties</a>, for sponsoring the development of Isis in support of the <a href="getting-started/powered-by/powered-by.html">Estatio</a> estate management application.  Our heart-felt thanks.
-    </td>
-</tr>
-<tr>
-    <td>
-        <a href="<a href="http://structure101.com"><img src="images/s101_170.png"></a>
-    </td>
-    <td style="padding: 10px">
-        <a href="http://structure101.com">Headway Software</a>, for supplying an open source license to Structure&nbsp;101.
-    </td>
-</tr>
-<tr>
-    <td>
-        <a href="http://www.ej-technologies.com/products/jprofiler/overview.html"><img src="http://static-aws.ej-technologies.com/71M9S7eqUeTUsoOQW64VqrZSZX0E6cxFxLRjO1quRdN.png"></a>
-    </td>
-    <td style="padding: 10px">
-        <a href="http://www.ej-technologies.com">EJ Technologies</a>, for supplying an open source license to <a href="http://www.ej-technologies.com/products/jprofiler/overview.html">JProfiler</a>
-    </td>
-</tr>
-<tr>
-    <td>
-        <a href="http://icons8.com"><img src="images/icons8-logo.png"></a>
-    </td>
-    <td style="padding: 10px">
-        <a href="http://icons8.com/">Icons8</a>, for selected icons on this website and in the <a href="https://github.com/apache/isis/tree/master/example/application/simpleapp/dom/src/main/resources/images">simpleapp</a> used to generate the <a href="intro/getting-started/simple-archetype.html">simpleapp archetype</a>
-    </td>
-</tr>
-</table>
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/other/about.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/other/about.md b/content-OLDSITE/other/about.md
deleted file mode 100644
index 013e037..0000000
--- a/content-OLDSITE/other/about.md
+++ /dev/null
@@ -1,6 +0,0 @@
-title: Other Topics
-
-go back to: [documentation](../documentation.html)
-
-
-

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/other/dsl.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/other/dsl.md b/content-OLDSITE/other/dsl.md
deleted file mode 100644
index 29fef67..0000000
--- a/content-OLDSITE/other/dsl.md
+++ /dev/null
@@ -1,7 +0,0 @@
-Title: Domain Specific Language
-
-{stub
-This page is a stub.
-}
-
-This is a placeholder.

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/other/eclipse-plugin.md
----------------------------------------------------------------------
diff --git a/content-OLDSITE/other/eclipse-plugin.md b/content-OLDSITE/other/eclipse-plugin.md
deleted file mode 100644
index a9fe46c..0000000
--- a/content-OLDSITE/other/eclipse-plugin.md
+++ /dev/null
@@ -1,7 +0,0 @@
-Title: Eclipse Plugin
-
-{stub
-This page is a stub.
-}
-
-This is a placeholder.

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/other/images/intellij-040-run-config.png
----------------------------------------------------------------------
diff --git a/content-OLDSITE/other/images/intellij-040-run-config.png b/content-OLDSITE/other/images/intellij-040-run-config.png
deleted file mode 100644
index 67c5cec..0000000
Binary files a/content-OLDSITE/other/images/intellij-040-run-config.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/isis-site/blob/365806f1/content-OLDSITE/other/images/intellij-050-run-config-vm.png
----------------------------------------------------------------------
diff --git a/content-OLDSITE/other/images/intellij-050-run-config-vm.png b/content-OLDSITE/other/images/intellij-050-run-config-vm.png
deleted file mode 100644
index 89e450e..0000000
Binary files a/content-OLDSITE/other/images/intellij-050-run-config-vm.png and /dev/null differ