# ShadowAssociationTypeDefinitionType (Complex Type)

### Namespace: http://midpoint.evolveum.com/xml/ns/public/common/common-3

Definition of a high-level (logical) association type. Such an association binds together a subject and 0, 1, or more objects. Some examples:

- Simple group membership: This is an association between objects (users, printers, computers, groups, org units, and so on) and groups. Each object can belong to 0-N groups, and each group can have 0-N members. There are no additional attributes related to the membership itself.
- Complex group membership: Likewise, this is an association between objects and groups, but each association value can have some attributes, like the time validity.
- Access rights: This is an association between principals (e.g., users) and objects (e.g., documents), where each association value has an attribute describing the access level (reader, writer, admin, ...).
- Employment contracts: An association connecting physical persons and organizational units; optionally it can also embrace other entities, like cost centers, job positions, and so on, if they are represented as separate objects on the resource. In its most extreme form, a contract can have no objects, just a subject (person).

An association type can be defined over either native or simulated (physical) shadow reference. Legacy simulated associations are not supported by association types.

Item Summary
Name | Type | Multiplicity | Description
--- | --- | --- | ---
name | property QName | [1,1] | The name of the association type.
displayName | property string | [0,1] | Human readable name.
description | property string | [0,1] | Free-form textual description of the object.
documentation | property string | [0,1] | Technical documentation for a particular object or construct.
lifecycleState | property string | [0,1] | Lifecycle state of the object.
subject | container ShadowAssociationTypeSubjectDefinitionType | [1,1] | Definition of the "subject" participant of the association.
object | container ShadowAssociationTypeObjectDefinitionType | [0,-1] | Definition of the "object" participant of participants of the association.
associationObject | container AssociatedResourceObjectTypeDefinitionType | [0,1] | If the association contains its own data (as a separate resource object), they can be defined here.

- ### Items

  - #### name

    Flags: RAM,runtime

    Multiplicity: [1,1]

    The name of the association type. It must be either unqualified, or in the "ri" namespace.

  - #### displayName

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Human readable name. This name may be displayed in tools and GUIs to provide more pleasant user experience, as the XML data type names or object names may look quite frightening.

    The "displayName" should contain a value that is readable for almost any user. It is never used in the "logic", it is used only for display purposes.

    The use of national characters is in "displayName" is fully supported.

    DisplayName is reused in several location, but the meaning is still the same.

  - #### description

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Free-form textual description of the object. It is supposed to describe the object or a construct that it is attached to.

    This information may be presented to midPoint users, even to ordinary end users. For example role description may be presented to users when they are selecting roles to request. Therefore the description should be written in a language that the users can understand.

    Description is assumed to be a plan, non-formatted text. Amount of white space is considered insignificant. E.g. leading and trailing white space may be skipped, multiple spaces can be collapsed to one and so on.

  - #### documentation

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Technical documentation for a particular object or construct.

    The purpose of this element is to document system configuration and behavior. The documentation will not be presented to end users. In fact, it will probably not be presented at all in midPoint user interface. This documentation element is supposed to be a part of the technical documentation of midPoint deployment. The tools than generate deployment configuration will look for these elements and combine them to compiled documentation document.

    AsciiDoc formatting is assumed for this element. Any leading or trailing whitespace is skipped. Indentation equivalent to he indentation of the first non-blank line of text is also skipped.

  - #### lifecycleState

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Lifecycle state of the object. This property defines whether the object represents a draft, proposed definition, whether it is active, deprecated, archived, and so on. See "Object Lifecycle" in the documentation.

  - #### subject

    Flags: RAM,runtime

    Multiplicity: [1,1]

    Definition of the "subject" participant of the association. Typically, but not necessarily, here we have resource objects corresponding to persons or user accounts.

  - #### object

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    Definition of the "object" participant of participants of the association.

  - #### associationObject

    Flags: RAM,runtime

    Multiplicity: [0,1]

    If the association contains its own data (as a separate resource object), they can be defined here. Although formally an object type definition, please use only the type identifier and delineation here.