HsM supports different types of customer relations (see table 26). Each of these relations types organize customers in an independent tree-like or multi-tree-like structure. A customer relation is a directed relationship between two customers. One customer acting as the ancestor one acting as descendant in this relation.
Relation type |
Description |
|---|---|
The invoice recipient customer (ancestor) receives the invoices for its invoice source customers (descendant). Invoicing relations are optional, i.e., customers can exist without any invoicing relation. Invoicing relations build up a collection of tree data structures, i.e. a forest. |
|
The reseller customer (ancestor) resells items to its sub-customers (descendants). In HsM only one customer is allowed to have no reseller, i.e., all customers except one root-customer have to be sub-customers of some reseller. Reseller relations build up a tree data structure. |
|
The parent customer (ancestor) owns and/or manages the subsidiary customers (descendants). Hierarchy relations are optional, i.e., customers can exist without any hierarchy relation. Hierarchy relations build up a collection of tree data structures, i.e. a forest. |
|
The condition owner customer (ancestor) provides its conditions to its beneficiaries (descendant). Condition relations are optional, i.e., customers can exist without any condition relation. Condition relations build up a collection of tree data structures, i.e. a forest. |
|
The facility management provider (anchestor) provides facility management services to its facility management clients (descendant). |
Table 26: Customer relation types
Various settings (e.g. brandings, stored device filters) that can be stored in the context of a customer can be propagated via customer relationships to other customers.
The inclusive customer relationship path (or just inclusive path for short) of a customer in respect to a specific customer relation type is the sorted set of customers from the root node of the relationship tree to that customer (including that customer itself). In the example shown in figure 2 the inclusive-path of customer H is (A, C, F, H) . The length L of the path is the number of customers in the path. In the example mentioned before the length of the path is 4. The depth of a customer in the relationship tree is L – 1 . In the example mentioned the depth of customer H in the relationship tree is 3.
The non-inclusive path of a customer is the path of the customer excluding that customer itself. In the example shown in figure 2 the non-inclusive path of customer H is (A, C, F) . The non-inclusive path of the root customer is the empty path (a path with no elements).
While the reseller relationship tree is a tree structure with a single root node (the root customer) all other relation ships form multi-tree structures. In the example shown in figure 3 the path of customer H is (B, H), the length of the path is 2 and the depth of customer H in the relationship tree is 1.
The distance of two customers with respect to a specific relationship type is the number of edges on the relationship tree between these two customers. In the example shown in figure 1 the distance between A and F is 2, the distance between B and D is 1, the distance between E and B is undefined.
The closest customer to a given customer C in respect to a specific customer relationship type and in respect to a specific condition is that customer on the inclusive path or non-inclusive path of customer C that fulfills the condition and whose distance to customer C is minimal. E.g. if in the example shown in 1 customers C and F would fulfill the condition, the closest customer to customer H would be F.
All customers (but the root customer) have a reseller relationship pointing to their reseller. This relationship is set when the customer is created and cannot be modified afterward. All other types of relationship can be created or deleted at any time.
To create a new relationship between a customer A as ancestor and a customer B as descendant the user trying to create this relationship must have the permission to add the type of relation on customer A (e.g. ADD_SUBSIDIARIES) and must have EDIT_CUSTOMER permission on customer B.
To delete a relationship between an anchester customer A ancestor and a descentant customer B the user trying to delete the relationship must have the permission to add the type of relation on customer A (e.g. ADD_SUBSIDIARIES) and must have EDIT_CUSTOMER permission on customer B.