Use default values for properties. When a value is used often, defining it as the property default helps reduce database size.
Use inheritance for the same reason. (Local inheriting means from the hierarchy you are looking at; Global means from the node’s position in a specific hierarchy, the Controlling Hierarchy.)
Use Global Properties unless
– the value must be different for the same node in different hierarchies or
– the value for shared nodes must be different from the primary node in the same hierarchy
Consider the performance implications of derived properties. Functions that are recursive, such as NumDescendantsWith, are much slower than simple functions. The order of items in, say, IF functions can affect performance too.
Do not delete properties once the system is live. You will lose historical data and it may have unexpected effects if anything else uses the property, such as exports, queries and derived properties. To deprecate a property, hide it instead.
Define a naming standard for versions so that it is easy to determine what is what in the future.
Baseline versions, together with the Transaction History, are used to create As-Of versions. If you do not require this functionality, you can turn off Baseline versions using the System Preference AllowAsOf. After setting this to false and restarting the DRM application, you will find they are no longer created when you create a new version.
Copy versions on a periodic basis. For example, start each month with copies of the previous months’. If you do not, the Transaction History for the version will eventually become unmanageable. Employing DRM’s versioning functionality gives the following benefits:
– allows the use of version status to lock older versions
– enables you to delete older versions and their transaction history
– permits easy comparisons with prior business states
– ensures the As-Of capability performs well.
It is best practice to use separate hierarchies rather than shared nodes if possible. For example, instead of having one Organization hierarchy that contains Legal, Managerial and Line of Business, separate them into three separate hierarchies and put them back together when exporting to downstream systems.
Creating properties with the validation logic (i.e. placing the logic inside a single derived boolean property rather than having complex tests in the validation itself) permits re-use of the properties in Queries, Exports and other Validations.
Real time validations have significant performance cost, especially complicated ones, because all of them are run on each change, including every line of Action Scripts. Use them wisely!
Note that Real Time usage does not protect against changes in values from inheritance or derivation. Consider whether certain validations should also be run as batch validations before performing exports etc.
Once Node Types are in use, any new validations or properties must be added to the appropriate node types or they will not visible to users.