# ResourceObjectTypeDelineationType (Complex Type)

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

Delineates the boundary of a resource object type (i.e. objects that belong to that type). Contains also supporting ("imperative") instructions regarding classification of objects into types.

Item Summary
Name | Type | Multiplicity | Description
--- | --- | --- | ---
objectClass | property QName | [0,1] | Object class (like ri:inetOrgPerson) for this resource object type.
auxiliaryObjectClass | property QName | [0,-1] | The reference to additional object classes for this object.
baseContext | container ResourceObjectReferenceType | [0,1] | The definition of base context (resource object container).
searchHierarchyScope | property SearchHierarchyScopeType | [0,1] | Definition of search hierarchy scope.
filter | property SearchFilterType | [0,-1] | A filter that defines the object set.
classificationCondition | property ExpressionType | [0,1] | Expression that is evaluated to check whether a resource object is of given type.
classificationOrder | property int | [0,1] | In what order should this delineation specification be used for classification? No value means it should be used at the end.
baseContextClassificationUse | property BaseContextClassificationUseType | [0,1] | How should be the base context used for the classification?

- ### Items

  - #### objectClass

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Object class (like ri:inetOrgPerson) for this resource object type.

  - #### auxiliaryObjectClass

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    The reference to additional object classes for this object. The reference should point to object class definition (complex type definition in resource schema) and this definition should be marked as auxiliary. Definitions of attributes from these classes are "imported" to the object type. However, currently this auxiliary object classes are not used for classification; i.e. the classification decision is not based on their presence in the specific resource object.

  - #### baseContext

    Flags: RAM,runtime

    Multiplicity: [0,1]

    The definition of base context (resource object container). This object will be used as a base for searches for objects of this type. Usually only the objects that are hierarchically below the baseContext are returned by such a search. E.g. this is used to specify LDAP organizationalUnit that contains users or groups of particular type. This information is used for object classification as well. See also "baseContextClassificationUse" property.

  - #### searchHierarchyScope

    Flags: RAM,runtime,AVals:2

    Multiplicity: [0,1]

    Definition of search hierarchy scope. It specifies how "deep" the search should go into the object hierarchy. It is only applicable to resources that support hierarchical organization of objects (e.g. LDAP resources). This information is used for object classification (along with baseContext) as well. See also "baseContextClassificationUse" property.

  - #### filter

    Flags: RAM,runtime

    Multiplicity: [0,-1]

    A filter that defines the object set. Appended to any filter(s) defined in the supertype(s). Used also for classification.

  - #### classificationCondition

    Flags: RAM,runtime

    Multiplicity: [0,1]

    Expression that is evaluated to check whether a resource object is of given type. It is assumed to return a boolean value. (If no condition is present then it is assumed to be always true, i.e. the classification is done using the other means.) It is preferable to use declarative means for classification, i.e. baseContext and filter(s).

  - #### classificationOrder

    Flags: RAM,runtime

    Multiplicity: [0,1]

    In what order should this delineation specification be used for classification? No value means it should be used at the end. So, the overall classification algorithm is the following: 1. First, candidate object types with classification order specified are tried - in their respective order. The first matching one is used. 2. Then, candidate object types without order are tried. Matching ones are collected. - If there is a default object type ("default for object class") among matching ones, it is used. - If there is exactly one matching type, it is used. - If there is no matching type, the classification is unsuccessful. - If there are multiple (non-default) matching types, a special heuristic is executed: the first one with the legacy synchronization section present is returned. Otherwise, arbitrary one is used. (This may be changed in the future.)

  - #### baseContextClassificationUse

    Flags: RAM,runtime,AVals:3

    Multiplicity: [0,1]

    How should be the base context used for the classification?