<?xml version="1.0" encoding="UTF-8" standalone="no"?><!--
  ~ Copyright (C) 2010-2023 Evolveum and contributors
  ~
  ~ Licensed under the EUPL-1.2 or later.
  --><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:a="http://prism.evolveum.com/xml/ns/public/annotation-3" xmlns:c="http://midpoint.evolveum.com/xml/ns/public/common/common-3" xmlns:jaxb="https://jakarta.ee/xml/ns/jaxb" xmlns:q="http://prism.evolveum.com/xml/ns/public/query-3" xmlns:t="http://prism.evolveum.com/xml/ns/public/types-3" xmlns:tns="http://midpoint.evolveum.com/xml/ns/public/common/common-3" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" elementFormDefault="qualified" jaxb:extensionBindingPrefixes="xjc" jaxb:version="3.0" targetNamespace="http://midpoint.evolveum.com/xml/ns/public/common/common-3">

    <xsd:annotation>
        <xsd:documentation>
            Parts of the role of analysts.
        </xsd:documentation>
    </xsd:annotation>

    <!-- Don't provide schemaLocation here, as it causes xjc to really contact the URIs (!) -->
    <xsd:import namespace="http://prism.evolveum.com/xml/ns/public/annotation-3" schemaLocation="../annotation-3.xsd"/>
    <xsd:import namespace="http://prism.evolveum.com/xml/ns/public/types-3" schemaLocation="../types-3.xsd"/>
    <xsd:import namespace="http://prism.evolveum.com/xml/ns/public/query-3" schemaLocation="../query-3.xsd"/>

    <xsd:include schemaLocation="common-core-3.xsd"/>

    <!--NOTE this is just experimental schema, many things is not needed.-->
    <xsd:complexType name="RoleAnalysisOutlierType">
        <xsd:annotation>
            <xsd:documentation>
                Contains information about outliers and their analysis.
            </xsd:documentation>
            <xsd:appinfo>
                <a:object/>
                <a:since>4.9</a:since>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:complexContent>
            <xsd:extension base="tns:AssignmentHolderType">
                <xsd:sequence>

                    <!--TODO design decision, where-metadata? what is the best way to store this information?-->
                    <!--TODO also don't forget about "Valid from" and "Valid to" attributes. Think about other conditions.-->

                    <!--TODO don't forget important for search -->
                    <xsd:element minOccurs="0" name="objectRef" type="c:ObjectReferenceType">
                        <xsd:annotation>
                            <xsd:documentation>
                                The object that is the target of the outlier analysis.
                            </xsd:documentation>
                            <xsd:appinfo>
                                <a:displayName>RoleAnalysisOutlierType.targetObject</a:displayName>
                                <a:objectReferenceTargetType>tns:UserType</a:objectReferenceTargetType>
                            </xsd:appinfo>
                        </xsd:annotation>
                    </xsd:element>

                    <!--TODO we need search across partition clusters, session & target object ref -->
                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="partition" type="tns:RoleAnalysisOutlierPartitionType">
                        <xsd:annotation>
                            <xsd:documentation>
                                <p>
                                    Partition contains information about outliers analysis result for specific session.
                                </p>
                            </xsd:documentation>
                        </xsd:annotation>
                    </xsd:element>

                    <!--TODO think about this, store it in separate container?-->
                    <xsd:element minOccurs="0" name="riskLevel" type="xsd:string">
                        <xsd:annotation>
                            <xsd:documentation>
                                <p>
                                    Indication of the level of risk associated with the outlier object.
                                    This may be a numeric value, textual label are any other suitable machine-processable indication.

                                    Currently not used (reserved for future use).
                                </p>
                            </xsd:documentation>
                            <xsd:appinfo>
                                <a:experimental>true</a:experimental>
                            </xsd:appinfo>
                        </xsd:annotation>
                    </xsd:element>

                    <xsd:element minOccurs="0" name="overallConfidence" type="xsd:double">
                        <xsd:annotation>
                            <xsd:documentation>
                                Confidence level associated with the identified outlier.
                            </xsd:documentation>
                            <xsd:appinfo>
                                <a:displayName>RoleAnalysisOutlierType.clusterConfidence</a:displayName>
                            </xsd:appinfo>
                        </xsd:annotation>
                    </xsd:element>

                    <xsd:element minOccurs="0" name="anomalyObjectsConfidence" type="xsd:double">
                        <xsd:annotation>
                            <xsd:documentation>
                                Confidence level associated with the detected anomaly.
                            </xsd:documentation>
                            <xsd:appinfo>
                                <a:displayName>RoleAnalysisOutlierType.clusterConfidence</a:displayName>
                            </xsd:appinfo>
                        </xsd:annotation>
                    </xsd:element>

                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="duplicatedRoleAssignment" type="c:ObjectReferenceType">
                        <xsd:annotation>
                            <xsd:documentation>
                                <p>
                                    Contains reference to duplicated role assignment.
                                </p>
                            </xsd:documentation>
                        </xsd:annotation>
                    </xsd:element>

                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>

    </xsd:complexType>
    <xsd:element name="roleAnalysisOutlier" substitutionGroup="tns:object" type="tns:RoleAnalysisOutlierType"/>

    <xsd:complexType name="RoleAnalysisOutlierPartitionType">
        <xsd:annotation>
            <xsd:documentation>
                Partitions contains information about outliers analysis result for specific session.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>
            <!-- TODO think about creationTimestamp, do we need it? if yes, where we need to access it? -->
            <xsd:element minOccurs="0" name="createTimestamp" type="xsd:dateTime">
                <xsd:annotation>
                    <xsd:documentation>
                        When this object was created.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisOutlierType.createTimestamp</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <!--TODO search-->
            <xsd:element minOccurs="0" name="targetSessionRef" type="c:ObjectReferenceType">
                <xsd:annotation>
                    <xsd:documentation>
                        Session to which the outlier belongs.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <!--TODO search-->
            <!-- TODO important!!! whats if cluster is outlier_cluster, in this case is outlier OUTER OUTLIER, so we need store*
 TODO *refs of all similar object or store all statistics data, NEED TO BE RESOLVED -->
            <xsd:element minOccurs="0" name="clusterRef" type="c:ObjectReferenceType">
                <xsd:annotation>
                    <xsd:documentation>
                        The cluster that owns outlier.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisOutlierType.clusterRef</a:displayName>
                        <a:objectReferenceTargetType>tns:RoleAnalysisClusterType</a:objectReferenceTargetType>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>


            <!-- TODO clean, design what's, where and when we need store statistics -->
            <xsd:element minOccurs="0" name="partitionAnalysis" type="c:RoleAnalysisPartitionAnalysisType">
                <xsd:annotation>
                    <xsd:documentation>
                        Statistical information about the outlier.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisOutlierType.statistics</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <!-- TODO clean, design what's, where and when we need store statistics -->
            <xsd:element maxOccurs="unbounded" minOccurs="0" name="detectedAnomalyResult" type="c:DetectedAnomalyResultType">
                <xsd:annotation>
                    <xsd:documentation>
                        Statistical information about the outlier.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisOutlierType.statistics</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="roleAnalysisOutlierPartitionsType" type="tns:RoleAnalysisOutlierPartitionType"/>

    <xsd:complexType name="RoleAnalysisPartitionAnalysisType">
        <xsd:annotation>
            <xsd:documentation>
                Contains information about the outlier statistic result.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <xsd:element minOccurs="0" name="overallConfidence" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        Confidence level associated with the identified outlier.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisOutlierType.clusterConfidence</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="similarObjectsConfidence" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        Confidence level associated with the similar objects.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisOutlierType.clusterConfidence</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="anomalyObjectsConfidence" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        Confidence level associated with the detected anomaly.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisOutlierType.clusterConfidence</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="outlierAssignmentFrequencyConfidence" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        Confidence level associated with the frequency of the assignment for similar objects group.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisOutlierType.outlierAssignmentFrequencyConfidence</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="attributeAnalysis" type="c:AttributeAnalysisType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Contains information about the user(outlier) attribute analysis result.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>AttributeAnalysis.attributeAnalysis</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <!--TODO move to similarObjectAnalysis-->
            <xsd:element minOccurs="0" name="patternAnalysis" type="c:RoleAnalysisPatternAnalysisType">
                <xsd:annotation>
                    <xsd:documentation>
                        Pattern analysis result above the similar object group.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="similarObjectAnalysis" type="c:RoleAnalysisOutlierSimilarObjectsAnalysisResultType">
                <xsd:annotation>
                    <xsd:documentation>
                        Analysis of similar objects.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <!--TODO think about this -->
            <xsd:element minOccurs="0" name="outlierCategory" type="tns:OutlierCategoryType">
                <xsd:annotation>
                    <xsd:documentation>
                        Category classification of the outlier object.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>


        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="roleAnalysisPartitionAnalysisType" type="tns:RoleAnalysisPartitionAnalysisType"/>

    <xsd:complexType name="DetectedAnomalyResultType">
        <xsd:annotation>
            <xsd:documentation>
                Contains information about the outlier assignment anomaly result.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <!--TODO search-->
            <xsd:element minOccurs="0" name="targetObjectRef" type="c:ObjectReferenceType">
                <xsd:annotation>
                    <xsd:documentation>
                        Object that is identified as an outlier during the analysis.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <!--TODO add category classification here? -->
            <!--(Check it) We cant use RoleAnalysisIdentifiedCharacteristicsItemType because targetObjectRef is searchable.-->
            <!--Currently, we need fetch session object and compare anomaly with RoleAnalysisIdentifiedCharacteristicsItemsType.-->

            <xsd:element minOccurs="0" name="createTimestamp" type="xsd:dateTime">
                <xsd:annotation>
                    <xsd:documentation>
                        When this object was created.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>DetectedAnomalyResult.createTimestamp</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="statistics" type="c:DetectedAnomalyStatisticsType">
                <xsd:annotation>
                    <xsd:documentation>
                        Pattern result.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="detectedAnomalyResult" type="tns:DetectedAnomalyResultType"/>

    <xsd:complexType name="DetectedAnomalyStatisticsType">
        <xsd:annotation>
            <xsd:documentation>
                Contains information about the outlier assignment anomaly result.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <xsd:element minOccurs="0" name="attributeAnalysis" type="c:AttributeAnalysisType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Contains information about the user(outlier) attribute analysis result vs role members.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>AttributeAnalysis.attributeAnalysis</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="confidenceDeviation" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        Confidence level associated with the standard deviation.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="confidence" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        Confidence level associated with the identified anomaly.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="itemFactorConfidence" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        Confidence level associated with the attribute factor.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>


            <xsd:element minOccurs="0" name="memberCoverageConfidence" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        Confidence level associated with the identified outlier.
                        DEPRECATED
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="memberCoverageConfidenceStat" type="tns:FrequencyType">
                <xsd:annotation>
                    <xsd:documentation>
                        Expressing the access frequency right above the entire system.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <!--TODO check it this might be duplication-->
            <xsd:element minOccurs="0" name="outlierCoverageConfidence" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        Confidence level associated with the identified outlier.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="frequency" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        Frequency of the outlier for the given similar objects group.
                        DEPRECATED
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="groupFrequency" type="tns:FrequencyType">
                <xsd:annotation>
                    <xsd:documentation>
                        Expressing the access frequency right above the group (cluster).
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="patternAnalysis" type="c:RoleAnalysisPatternAnalysisType">
                <xsd:annotation>
                    <xsd:documentation>
                        Pattern result.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="detectedAnomalyStatistics" type="tns:DetectedAnomalyStatisticsType"/>

    <xsd:complexType name="RoleAnalysisOutlierSimilarObjectsAnalysisResultType">
        <xsd:annotation>
            <xsd:documentation>
                Contains detailed information about similar objects analysis.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <!-- TODO important!!! whats if cluster is outlier_cluster, in this case is outlier OUTER OUTLIER, so we need store*
 TODO *refs of all similar object or store all statistics data, NEED TO BE RESOLVED -->
            <!-- Let's store two types in case of USER MODE - RoleAnalysisClusterType and UserType,
            when similarObjects refs is size of 1 and type of RoleAnalysisClusterType we can return similar object from
            cluster object else we must store similar user so UserType objects
            also this can be decided from outlier category -->
            <xsd:element maxOccurs="unbounded" minOccurs="0" name="similarObjects" type="c:ObjectReferenceType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Contains information about the similar objects.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="similarObjectsCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        Number of similar objects.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisOutlierType.similarObjects</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="similarObjectsDensity" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        Similar objects density.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisOutlierType.similarObjectsDensity</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="similarObjectsThreshold" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        Similar objects density.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisOutlierType.similarObjectsDensity</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <!-- TODO think about this, don't need to store this information? Maybe we can store it but in limited way (operation is time consuming).-->
            <xsd:element minOccurs="0" name="clusterStatistics" type="c:AnalysisClusterStatisticType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            The container consists of statistical data about the cluster.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>AnalysisClusterStatisticType.clusterStatistic</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="roleAnalysisOutlierSimilarObjectsAnalysisResult" type="tns:RoleAnalysisOutlierSimilarObjectsAnalysisResultType"/>

    <xsd:complexType name="AttributeAnalysisType">
        <xsd:annotation>
            <xsd:documentation>
                The container consists of statistical data about object.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element minOccurs="0" name="roleAttributeAnalysisResult" type="c:RoleAnalysisAttributeAnalysisResultType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Contains information about the attribute analysis result.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>AttributeAnalysis.roleAttributeAnalysisResult</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="userAttributeAnalysisResult" type="c:RoleAnalysisAttributeAnalysisResultType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Contains information about the attribute analysis result.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>AttributeAnalysis.userAttributeAnalysisResult</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="userClusterCompare" type="c:RoleAnalysisAttributeAnalysisResultType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Contains information about the attribute analysis result.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>AttributeAnalysis.userAttributeAnalysisResult</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="userRoleMembersCompare" type="c:RoleAnalysisAttributeAnalysisResultType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Contains information about the attribute analysis result.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>AttributeAnalysis.userAttributeAnalysisResult</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="attributeAnalysis" type="tns:AttributeAnalysisType"/>

    <xsd:complexType name="RoleAnalysisClusterType">
        <xsd:annotation>
            <xsd:documentation>
                A set of grouped objects based on density and similarity.
                Role analysis cluster defines a group of objects that are similar
                or fall into one category based on the specified conditions.
            </xsd:documentation>
            <xsd:appinfo>
                <a:object/>
                <a:since>4.8</a:since>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:complexContent>
            <xsd:extension base="tns:AssignmentHolderType">
                <xsd:sequence>

                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="member" type="c:ObjectReferenceType">
                        <xsd:annotation>
                            <xsd:documentation>
                                The "main" object that was analyzed and determined to be part of this cluster.
                                In the case of ROLE MODE, the list of role object (members = roles) references that make up
                                the given group is included in the object.
                                In the case of USER MODE, the list of users object (members = users) references that make up
                                the given group is included in the object.
                            </xsd:documentation>
                        </xsd:annotation>
                    </xsd:element>

                    <xsd:element minOccurs="0" name="roleAnalysisSessionRef" type="c:ObjectReferenceType">
                        <xsd:annotation>
                            <xsd:documentation>
                                Identifies the role analysis session ("parent") under which the cluster is included.
                            </xsd:documentation>
                            <xsd:appinfo>
                                <a:displayName>RoleAnalysisClusterType.roleAnalysisSessionRef</a:displayName>
                                <a:objectReferenceTargetType>tns:RoleAnalysisSessionType</a:objectReferenceTargetType>
                            </xsd:appinfo>
                        </xsd:annotation>
                    </xsd:element>

                    <xsd:element minOccurs="0" name="clusterStatistics" type="c:AnalysisClusterStatisticType">
                        <xsd:annotation>
                            <xsd:documentation>
                                <p>
                                    The container consists of statistical data about the cluster.
                                </p>
                            </xsd:documentation>
                            <xsd:appinfo>
                                <a:displayName>AnalysisClusterStatisticType.clusterStatistic</a:displayName>
                            </xsd:appinfo>
                        </xsd:annotation>
                    </xsd:element>

                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="candidateRoles" type="c:RoleAnalysisCandidateRoleType">
                        <xsd:annotation>
                            <xsd:documentation>
                                <p>
                                    Contains information about candidate roles and their analysis.
                                </p>
                            </xsd:documentation>
                            <xsd:appinfo>
                                <a:displayName>RoleAnalysisCandidateRoleType.candidateRoles</a:displayName>
                            </xsd:appinfo>
                        </xsd:annotation>
                    </xsd:element>

                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="detectedPattern" type="c:RoleAnalysisDetectionPatternType">
                        <xsd:annotation>
                            <xsd:documentation>
                                It consists of a sheet of reference objects and their specifications in which matches are found
                                based on the set parameters. These objects are subsequently processed as proposals for
                                implementing changes in the system (Business role).
                            </xsd:documentation>
                            <xsd:appinfo>
                                <a:displayName>RoleAnalysisDetectionPatternType.detectedPattern</a:displayName>
                            </xsd:appinfo>
                        </xsd:annotation>
                    </xsd:element>

                    <xsd:element minOccurs="0" name="detectionOption" type="c:RoleAnalysisDetectionOptionType">
                        <xsd:annotation>
                            <xsd:documentation>
                                <p>
                                    Options for detecting Business Roles.

                                    These parameters serve as key specifications for performing searches
                                    and analyzes aimed at discovering different business roles.
                                </p>
                            </xsd:documentation>
                        </xsd:annotation>
                    </xsd:element>

                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="resolvedPattern" type="c:ObjectReferenceType">
                        <xsd:annotation>
                            <xsd:documentation>
                                Applied business roles.
                            </xsd:documentation>
                            <xsd:appinfo>
                                <a:displayName>RoleAnalysisClusterType.reductionObjects</a:displayName>
                            </xsd:appinfo>
                        </xsd:annotation>
                    </xsd:element>

                    <xsd:element minOccurs="0" name="category" type="tns:RoleAnalysisClusterCategory">
                        <xsd:annotation>
                            <xsd:documentation>
                                <p>
                                    Description of recent operations executed on this object.
                                </p>
                            </xsd:documentation>
                        </xsd:annotation>
                    </xsd:element>

                    <xsd:element maxOccurs="unbounded" minOccurs="0" name="operationStatus" type="tns:RoleAnalysisOperationStatusType">
                        <xsd:annotation>
                            <xsd:documentation>
                                <p>
                                    Description of recent operations executed on this object (or related objects in special
                                    cases). The number of operations to be kept here is configurable.
                                </p>
                            </xsd:documentation>
                        </xsd:annotation>
                    </xsd:element>

                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>

    </xsd:complexType>
    <xsd:element name="roleAnalysisCluster" substitutionGroup="tns:object" type="tns:RoleAnalysisClusterType"/>

    <xsd:complexType name="RoleAnalysisSessionType">
        <xsd:annotation>
            <xsd:documentation>
                <p>
                    Session for role analysis, e.g. a role mining session.
                    Specifies settings for a session, and contains session results,
                    e.g. providing a container for role analysis cluster objects.
                </p>
            </xsd:documentation>
            <xsd:appinfo>
                <a:object/>
                <a:since>4.8</a:since>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:complexContent>
            <xsd:extension base="tns:AssignmentHolderType">
                <xsd:sequence>

                    <xsd:element minOccurs="0" name="analysisOption" type="c:RoleAnalysisOptionType">
                        <xsd:annotation>
                            <xsd:documentation>
                                <p>
                                    Process mode for role analysis. It determines the specific approach
                                    or methodology used during the analysis.

                                    We currently use an enum type to identify the mode (ROLE MODE, USER MODE)
                                    For Role Analysis (ROLE):
                                    Role perspective is taken into account. The role mining process focuses on identifying
                                    and analyzing roles based on their similarity and considering the perspective of roles
                                    (vectors of users who have this role are compared). Objects
                                    that meet the specified conditions, determined by the input parameters, are added to the data set
                                    to facilitate role mining

                                    For User Analysis (USER):
                                    User perspective is taken into account. The user mining process focuses on identifying and
                                    analyzing users based on their similarity and considering the perspective of users
                                    (the role vectors assigned to the given users are compared). Objects that
                                    meet the specified conditions, determined by the input parameters, are added to the data set to
                                    facilitate role mining.
                                </p>
                            </xsd:documentation>
                            <xsd:appinfo>
                                <a:displayName>RoleAnalysisOptionType.analysisOption</a:displayName>
                            </xsd:appinfo>
                        </xsd:annotation>
                    </xsd:element>

                    <xsd:element minOccurs="0" name="roleModeOptions" type="c:RoleAnalysisSessionOptionType">
                        <xsd:annotation>
                            <xsd:documentation>
                                <p>
                                    Session process options.

                                    Specification of parameters utilized for establishing cluster
                                    generation conditions, specifically pertaining to the role analysis clusters.
                                    These parameters play a critical role in defining the criteria and conditions for
                                    grouping objects into clusters, enabling effective role analysis.

                                    Furthermore, the role analysis session allows for the possibility of updating these values.
                                    If there is a need to modify or refine the cluster options during the analysis process, the values
                                    associated with the keys can be updated accordingly. This flexibility enables fine-tuning of the
                                    role analysis based on changing requirements or new insights gained during the analysis phase.
                                </p>
                            </xsd:documentation>
                            <xsd:appinfo>
                                <a:displayName>RoleAnalysisSessionType.roleModeOptions</a:displayName>
                            </xsd:appinfo>
                        </xsd:annotation>

                    </xsd:element>

                    <xsd:element minOccurs="0" name="userModeOptions" type="c:UserAnalysisSessionOptionType">
                        <xsd:annotation>
                            <xsd:documentation>
                                <p>
                                    Session process options.

                                    Specification of parameters utilized for establishing cluster
                                    generation conditions, specifically pertaining to the role analysis clusters.
                                    These parameters play a critical role in defining the criteria and conditions for
                                    grouping objects into clusters, enabling effective role analysis.

                                    Furthermore, the role analysis session allows for the possibility of updating these values.
                                    If there is a need to modify or refine the cluster options during the analysis process, the values
                                    associated with the keys can be updated accordingly. This flexibility enables fine-tuning of the
                                    role analysis based on changing requirements or new insights gained during the analysis phase.
                                </p>
                            </xsd:documentation>
                            <xsd:appinfo>
                                <a:displayName>RoleAnalysisSessionType.userModeOptions</a:displayName>
                            </xsd:appinfo>
                        </xsd:annotation>

                    </xsd:element>

                    <xsd:element minOccurs="0" name="sessionStatistic" type="c:RoleAnalysisSessionStatisticType">
                        <xsd:annotation>
                            <xsd:documentation>
                                <p>
                                    The container consists of statistical data about the role analysis session.
                                </p>
                            </xsd:documentation>
                            <xsd:appinfo>
                                <a:displayName>RoleAnalysisSessionStatisticType.sessionStatistic</a:displayName>
                            </xsd:appinfo>
                        </xsd:annotation>

                    </xsd:element>

                    <xsd:element minOccurs="0" name="identifiedCharacteristics" type="c:RoleAnalysisIdentifiedCharacteristicsType">
                        <xsd:annotation>
                            <xsd:documentation>
                                <p>
                                    The container consists of statistical/categorization data about the role
                                    analysis session processed objects.
                                </p>
                            </xsd:documentation>
                            <xsd:appinfo>
                                <a:displayName>RoleAnalysisIdentifiedCharacteristicsType.identifiedCharacteristics</a:displayName>
                            </xsd:appinfo>
                        </xsd:annotation>

                    </xsd:element>

                    <xsd:element minOccurs="0" name="defaultDetectionOption" type="c:RoleAnalysisDetectionOptionType">
                        <xsd:annotation>
                            <xsd:documentation>
                                <p>
                                    Default options for detecting Business Roles.

                                    These parameters serve as key specifications for performing searches
                                    and analyzes aimed at discovering different business roles.
                                </p>
                            </xsd:documentation>
                            <xsd:appinfo>
                                <a:displayName>RoleAnalysisDetectionOptionType.defaultDetectionOption</a:displayName>
                            </xsd:appinfo>
                        </xsd:annotation>
                    </xsd:element>

                    <xsd:element minOccurs="0" name="operationStatus" type="tns:RoleAnalysisOperationStatusType">
                        <xsd:annotation>
                            <xsd:documentation>
                                <p>
                                    Description of recent operations executed on this object (or related objects in special
                                    cases). The number of operations to be kept here is configurable.
                                </p>
                            </xsd:documentation>
                        </xsd:annotation>
                    </xsd:element>

                </xsd:sequence>
            </xsd:extension>
        </xsd:complexContent>

    </xsd:complexType>
    <xsd:element name="roleAnalysisSession" substitutionGroup="tns:object" type="tns:RoleAnalysisSessionType"/>

    <xsd:complexType name="AnalysisClusterStatisticType">
        <xsd:annotation>
            <xsd:documentation>
                The container consists of statistical data about role analysis cluster.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element minOccurs="0" name="usersCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of users in the cluster.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="rolesCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of roles in the cluster.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="membershipDensity" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Properties density refers to the measure of how tightly packed or concentrated the
                            data points are within a cluster.
                            This parameter represents the total overlap of compared objects.

                            In the case of USER MODE, it is the role (properties) overlay over all users (members).
                            In the case of ROLE MODE, it is the user (properties) overlay over all roles (members).
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="membershipMean" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Average number of compared objects (properties) per member in a cluster.
                            In the case of USER MODE, it is the average number of roles (properties).
                            In the case of ROLE MODE, it is the average number of users (properties).
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="membershipRange" type="tns:RangeType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Specifies the minimum and maximum required number of properties.
                            If the condition is not met, the object is excluded.
                            USER MODE - min role assign.
                            ROLE MODE - min members count.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="detectedReductionMetric" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of relationships value when applying the largest pattern found.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="riskLevel" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Indication of the level of risk associated with the cluster.
                            This may be a numeric value, textual label are any other suitable machine-processable indication.

                            Currently not used (reserved for future use).
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:experimental>true</a:experimental>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="roleAttributeAnalysisResult" type="c:RoleAnalysisAttributeAnalysisResultType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Contains information about the attribute analysis result.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeAnalysisResult.roleAttributeAnalysisResult</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="userAttributeAnalysisResult" type="c:RoleAnalysisAttributeAnalysisResultType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Contains information about the attribute analysis result.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeAnalysisResult.userAttributeAnalysisResult</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="analysisClusterStatisticType" type="tns:AnalysisClusterStatisticType"/>

    <xsd:complexType name="AbstractAnalysisSessionOptionType">
        <xsd:annotation>
            <xsd:documentation>
                Session process options.

                Specification of parameters utilized for establishing cluster
                generation conditions, specifically pertaining to the RoleAnalysisClusterType.
                These parameters play a critical role in defining the criteria and conditions for
                grouping objects into clusters, enabling effective role analysis.

                Furthermore, the role analysis session allows for the possibility of updating these values.
                If there is a need to modify or refine the cluster options during the analysis process, the values
                associated with the keys can be updated accordingly. This flexibility enables fine-tuning of the
                role analysis based on changing requirements or new insights gained during the analysis phase.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element minOccurs="0" name="userSearchFilter" type="q:SearchFilterType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Specifies the query or filter applied to the UserType objects.
                            Only the objects that match the filter are included in the analysis.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:schemaContext>
                            <a:type>tns:UserType</a:type>
                        </a:schemaContext>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="roleSearchFilter" type="q:SearchFilterType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Specifies the query or filter applied to the RoleType objects.
                            Only the objects that match the filter are included in the analysis.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:schemaContext>
                            <a:type>tns:RoleType</a:type>
                        </a:schemaContext>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="assignmentSearchFilter" type="q:SearchFilterType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Specifies the query or filter applied to the AssignmentType objects.
                            Only the objects that match the filter are included in the analysis.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:schemaContext>
                            <a:type>tns:AssignmentHolderType</a:type>
                            <a:path>assignment</a:path>
                        </a:schemaContext>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="similarityThreshold" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Similarity threshold used for clustering (Jaccard).
                            If the condition is not met, then the objects are not grouped.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="minMembersCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Specifies the minimum required cluster size (member objects).

                            NOTE: The parameter checks the number of these unique objects, not the total
                            number of included objects in the cluster.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="minPropertiesOverlap" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Minimum property overlap size between cluster members.

                            In the case of USER MODE, the user (member) is included in the cluster, if there are other user(s) who have
                            at least "minOverlapCondition" equal roles.
                            In the case of ROLE MODE, the role (member) is included in the cluster, if there are other role(s) who have
                            at least "minOverlapCondition" equal users.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="minAccessPopularity" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Represents the minimum number of members with access to a role required for the role to be considered popular.
                            Roles with fewer members are marked as unpopular and excluded from clustering and analysis.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="maxAccessPopularity" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Represents the maximum number of members with access to a role.
                            This value is used to identify roles with high popularity and may
                            influence clustering and analysis procedures by prioritizing roles
                            with a higher number of members.
                            Roles with more members than the specified value are marked as popular.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="minUsersPopularity" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Represents the minimum number of role access assignment required for a user to be considered popular.
                            User with fewer role access are marked as unpopular and may be excluded from certain analyses
                            or clustering processes.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="maxUsersPopularity" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Represents the maximum number of role access assignments allowed for a user to be considered popular.
                            Users with more role access than this threshold may be marked as overly popular and can be flagged
                            for further analysis or excluded from certain clustering processes.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <!--TODO think about this it should be different compare metric instead minPropertiesOverlap and maxDistance-->
            <!--<xsd:element name="maxDistance" type="xsd:int" minOccurs="0">-->
            <!--    <xsd:annotation>-->
            <!--        <xsd:documentation>-->
            <!--            <p>-->
            <!--                Maximum distance between cluster members.-->
            <!--            </p>-->
            <!--        </xsd:documentation>-->
            <!--    </xsd:annotation>-->
            <!--</xsd:element>-->

            <xsd:element minOccurs="0" name="clusteringAttributeSetting" type="tns:ClusteringAttributeSettingType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Contains information about the clustering attribute analysis settings.
                            It allows for configuration of settings related to attribute analysis within clustering process.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="userAnalysisAttributeSetting" type="tns:AnalysisAttributeSettingType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Contains information about attribute analysis settings.
                            It allows for configuration of settings related to attribute analysis within the analysis process.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>AnalysisAttributeSettingType.userAnalysisAttributeSetting</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="isIndirect" type="xsd:boolean">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Specifies whether the clustering runs in indirect mode.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>AbstractAnalysisSessionOptionType.isIndirect</a:displayName>
                        <a:experimental>true</a:experimental>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="detailedAnalysis" type="xsd:boolean">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Specifies whether the outlier detection process run over clustering noise group.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>AbstractAnalysisSessionOptionType.detailedAnalysis</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="abstractAnalysisSessionOption" type="tns:AbstractAnalysisSessionOptionType"/>

    <xsd:complexType name="RoleAnalysisSessionOptionType">
        <xsd:annotation>
            <xsd:documentation>
                Object clustering options for "role" mode.

                Specification of parameters utilized for establishing cluster
                generation conditions, specifically pertaining to the RoleAnalysisClusterType.
                These parameters play a critical role in defining the criteria and conditions for
                grouping objects into clusters, enabling effective role analysis.

                Furthermore, the role analysis session allows for the possibility of updating these values.
                If there is a need to modify or refine the cluster options during the analysis process, the values
                associated with the keys can be updated accordingly. This flexibility enables fine-tuning of the
                role analysis based on changing requirements or new insights gained during the analysis phase.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:complexContent>
            <xsd:extension base="c:AbstractAnalysisSessionOptionType"/>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="UserAnalysisSessionOptionType">
        <xsd:annotation>
            <xsd:documentation>
                Object clustering options for "user" mode.

                Specification of parameters utilized for establishing cluster
                generation conditions, specifically pertaining to the RoleAnalysisClusterType.
                These parameters play a critical role in defining the criteria and conditions for
                grouping objects into clusters, enabling effective role analysis.

                Furthermore, the role analysis session allows for the possibility of updating these values.
                If there is a need to modify or refine the cluster options during the analysis process, the values
                associated with the keys can be updated accordingly. This flexibility enables fine-tuning of the
                role analysis based on changing requirements or new insights gained during the analysis phase.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:complexContent>
            <xsd:extension base="c:AbstractAnalysisSessionOptionType"/>
        </xsd:complexContent>
    </xsd:complexType>

    <xsd:complexType name="RoleAnalysisSessionStatisticType">
        <xsd:annotation>
            <xsd:documentation>
                The container consists of statistical data about the role analysis session.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>


            <xsd:element minOccurs="0" name="processedPropertiesCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of properties objects
                            that are part of clusters belonging to role analysis session.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisSessionStatisticType.processedPropertiesCount</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="processedAssignmentCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of processed assignment
                            that are part of clusters belonging to role analysis session.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisSessionStatisticType.processedAssignmentCount</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="clusterCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of cluster objects
                            that are part of clusters belonging to role analysis session.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisSessionStatisticType.clusterCount</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="meanDensity" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            It expresses the average overlap density of child clusters (RoleAnalysisClusterType).
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisSessionStatisticType.meanDensity</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="processedObjectCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of members objects
                            that are part of clusters belonging to role analysis session.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisSessionStatisticType.processedObjectCount</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="riskLevel" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Indication of the level of risk associated with the session.
                            This may be a numeric value, textual label are any other suitable machine-processable indication.

                            Currently not used (reserved for future use).
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisSessionStatisticType.riskLevel</a:displayName>
                        <a:experimental>true</a:experimental>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>

    <xsd:complexType name="RoleAnalysisDetectionPatternType">
        <xsd:annotation>
            <xsd:documentation>
                Contains information about detected or found patterns.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element maxOccurs="unbounded" minOccurs="0" name="userOccupancy" type="c:ObjectReferenceType">
                <xsd:annotation>
                    <xsd:documentation>
                        The number of users from the cluster to which the detected pattern can be applied.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisDetectionPatternType.userOccupancy</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element maxOccurs="unbounded" minOccurs="0" name="rolesOccupancy" type="c:ObjectReferenceType">
                <xsd:annotation>
                    <xsd:documentation>
                        The number of roles from the cluster from which the detected pattern can be assembled.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisDetectionPatternType.rolesOccupancy</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="reductionCount" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Expresses the range of reduced values when applying the detected pattern.
                            (Included in the group (cluster))
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisDetectionPatternType.reductionCount</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="itemConfidence" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Confidence level of the detected pattern.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisDetectionPatternType.itemConfidence</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="reductionConfidence" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Confidence level of the detected pattern.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisDetectionPatternType.reductionConfidence</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="candidateRole" type="c:ObjectReferenceType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            The role object that is the result of applying the detected pattern.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="roleAttributeAnalysisResult" type="c:RoleAnalysisAttributeAnalysisResultType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Contains information about the attribute analysis result.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeAnalysisResult.roleAttributeAnalysisResult</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="userAttributeAnalysisResult" type="c:RoleAnalysisAttributeAnalysisResultType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Contains information about the attribute analysis result.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeAnalysisResult.userAttributeAnalysisResult</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="roleAnalysisDetectionPattern" type="tns:RoleAnalysisDetectionPatternType"/>

    <xsd:complexType name="RoleAnalysisAttributeAnalysisResultType">
        <xsd:annotation>
            <xsd:documentation>
                Contains information about...
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>
            <!--TBD-->
            <xsd:element minOccurs="0" name="score" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Expresses the score of the attribute analysis.
                            How well the attribute fits.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeAnalysis.score</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element maxOccurs="unbounded" minOccurs="0" name="attributeAnalysis" type="c:RoleAnalysisAttributeAnalysisType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Contains information about the attribute analysis.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeAnalysisResult.attributeAnalysis</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="roleAnalysisAttributeAnalysisResult" type="tns:RoleAnalysisAttributeAnalysisResultType"/>

    <xsd:complexType name="RoleAnalysisAttributeAnalysisType">
        <xsd:annotation>
            <xsd:documentation>
                Contains information about...
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element minOccurs="0" ref="tns:description">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Free-form textual description of the object. This is meant to
                            be displayed in the user interface.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>ObjectType.description</a:displayName>
                        <a:displayOrder>10</a:displayOrder>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element maxOccurs="unbounded" minOccurs="0" name="attributeStatistics" type="c:RoleAnalysisAttributeStatisticsType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Attribute statistics analysis information.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeAnalysis.attributeStatistics</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="itemPath" type="t:ItemPathType">
                <xsd:annotation>
                    <xsd:documentation>
                        Item path to the object that is the target of the outlier analysis.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeAnalysis.itemPath</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="isUnusual" type="xsd:boolean">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Specifies whether the attribute is considered unusual.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeAnalysis.isUnusual</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="weight" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Expresses weight of attribute. Used for calculation item factor confidence.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeAnalysis.weight</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="density" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Expresses density of the object.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeAnalysis.density</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="analysedObjectCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of objects that are part of the analysis.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeAnalysis.analysedObjectCount</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="parentType" type="xsd:QName">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Specifies the parent type of the object.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeAnalysis.parentType</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="roleAnalysisAttributeAnalysis" type="tns:RoleAnalysisAttributeAnalysisType"/>

    <xsd:complexType name="RoleAnalysisAttributeStatisticsType">
        <xsd:annotation>
            <xsd:documentation>
                Contains information about...
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element minOccurs="0" name="attributeValue" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>
                        Attribute value.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeStatistics.attributeValue</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="frequency" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Frequency of the attribute value.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeStatistics.frequency</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="inRepo" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Count of the attribute value in the repository.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeStatistics.inRepo</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="inGroup" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Count of the attribute value in the group.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeStatistics.inGroup</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="isUnusual" type="xsd:boolean">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Specifies whether the attribute value is considered unusual.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisAttributeAnalysis.isUnusual</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="roleAnalysisAttributeStatistics" type="tns:RoleAnalysisAttributeStatisticsType"/>

    <xsd:complexType name="RoleAnalysisDetectionOptionType">
        <xsd:annotation>
            <xsd:documentation>
                Options for Detecting Business Roles

                These parameters serve as key specifications for performing searches
                and analyzes aimed at discovering different business roles.

                Furthermore, the role analysis session allows for the possibility of updating these values.
                If there is a need to modify or refine the cluster options during the analysis process, the values
                associated with the keys can be updated accordingly. This flexibility enables fine-tuning of the
                role analysis based on changing requirements or new insights gained during the analysis phase.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <xsd:element minOccurs="0" name="sensitivity" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Sensitivity of the detection process. This parameter influences the confidence threshold for
                            identifying outliers. For instance, only those outliers with a confidence level
                            above (100 - sensitivity) are considered valid outliers.
                        </p>
                        <p>
                            Additionally, the sensitivity parameter affects the range settings used for anomaly detection.
                            The range is adjusted by the formula: range_value * (1 + sensitivity).
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>ClusteringAttributeRuleType.sensitivity</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="minRolesOccupancy" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Define the minimum required count of roles occupancy for detected patterns.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisDetectionOptionType.minRolesOccupancy</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="minUserOccupancy" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Define the minimum required count of users occupancy for detected patterns.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisDetectionOptionType.minUserOccupancy</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="frequencyRange" type="tns:RangeType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Minimum and maximum required frequency. If the condition is not met, the objects are not included in the
                            detection (search).
                            In the case of USER MODE - frequency of application of roles (properties)
                            due to processed members(users)
                            In the case of ROLE MODE - frequency of disposition of users (properties)
                            due to processed members(roles)

                            Frequency expresses the percentage value of occupancy.
                            It refers to the number of occurrences of properties over cluster members.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisDetectionOptionType.frequencyRange</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="standardDeviation" type="tns:RangeType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Serves as a confidence interval,
                            providing a measure of statistical certainty by defining how much the values deviate
                            from the mean. A lower standard deviation indicates that data points are closely clustered
                            around the mean, while a higher value suggests a wider range of dispersion.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisDetectionOptionType.standardDeviation</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="frequencyThreshold" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Frequency threshold used for detection.
                            If the condition is not met, then the objects are excluded.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisDetectionOptionType.frequencyThreshold</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="detectionProcessMode" type="tns:RoleAnalysisDetectionProcessType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Option for executing detection pattern.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:since>4.8</a:since>
                        <a:displayName>RoleAnalysisDetectionOptionType.detectionProcessMode</a:displayName>
                        <a:experimental>true</a:experimental>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>

    <xsd:complexType name="RoleAnalysisCandidateRoleType">
        <xsd:annotation>
            <xsd:documentation>
                Contains information about candidate roles and their analysis.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element minOccurs="0" name="candidateRoleRef" type="c:ObjectReferenceType">
                <xsd:annotation>
                    <xsd:documentation>
                        The reference to the candidate role.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisCandidateRoleType.objectRef</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element maxOccurs="unbounded" minOccurs="0" name="candidateMembers" type="c:ObjectReferenceType">
                <xsd:annotation>
                    <xsd:documentation>
                        The number of users eligible for the candidate role.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisCandidateRoleType.candidateMembers</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="analysisMetric" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Represents the analysis metric value for the candidate role.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisCandidateRoleType.analysisMetric</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="operationStatus" type="tns:RoleAnalysisOperationStatusType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Description of recent operations executed on this object (or related objects in special
                            cases). The number of operations to be kept here is configurable.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="roleAnalysisCandidateRoleType" type="tns:RoleAnalysisCandidateRoleType"/>

    <xsd:complexType name="RoleAnalysisOperationStatusType">
        <xsd:annotation>
            <xsd:documentation>
                Information about an operation executed on an object.
            </xsd:documentation>
            <xsd:appinfo>
                <a:since>4.9</a:since>
                <a:container/>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element minOccurs="0" name="taskRef" type="tns:ObjectReferenceType">
                <xsd:annotation>
                    <xsd:documentation>
                        The task that was used to initiate the operation.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:objectReferenceTargetType>tns:TaskType</a:objectReferenceTargetType>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="operationChannel" type="tns:RoleAnalysisOperationType">
                <xsd:annotation>
                    <xsd:documentation>
                        Type of operation that was executed.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="createTimestamp" type="xsd:dateTime">
                <xsd:annotation>
                    <xsd:documentation>
                        When was this information recorded. It is expected that it was when
                        the operation finished (successfully or not).
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="modifyTimestamp" type="xsd:dateTime">
                <xsd:annotation>
                    <xsd:documentation>
                        When was this information recorded. It is expected that it was when
                        the operation finished (successfully or not).
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="status" type="tns:OperationResultStatusType">
                <xsd:annotation>
                    <xsd:documentation>
                        Result status of the whole operation.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="message" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>
                        Message connected to the reported result status.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="initiatorRef" type="tns:ObjectReferenceType">
                <xsd:annotation>
                    <xsd:documentation>
                        User that initiated the operation.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:objectReferenceTargetType>tns:FocusType</a:objectReferenceTargetType>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>

    <xsd:complexType name="AnalysisAttributeRuleType">
        <xsd:annotation>
            <xsd:documentation>
                <p>Contains information about matching rules for attribute analysis.</p>
                <p>Matching rule presupposes the business logic for the comparison of objects.</p>
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <xsd:element minOccurs="0" name="targetType" type="xsd:QName">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>Path to the property used for comparison.</p>
                        <p>It is necessary that the output be a simple object convertible to a String type</p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>AnalysisAttributeRuleType.targetType</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="rootOrganization" type="tns:ObjectReferenceType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>Path to the property used for comparison.</p>
                        <p>It is necessary that the output be a simple object convertible to a String type</p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>AnalysisAttributeRuleType.rootOrganization</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="archetypeRef" type="tns:ObjectReferenceType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>Path to the property used for comparison.</p>
                        <p>It is necessary that the output be a simple object convertible to a String type</p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>AnalysisAttributeRuleType.archetypeRef</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="analysisAttributeRuleType" type="tns:AnalysisAttributeRuleType"/>

    <xsd:complexType name="ClusteringAttributeSettingType">
        <xsd:annotation>
            <xsd:documentation>
                <p>Contains information about matching rules for clustering process.</p>
                <p>Matching rule presupposes the business logic for the comparison of objects.</p>
            </xsd:documentation>
            <xsd:appinfo>
                <a:container/>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <xsd:element maxOccurs="unbounded" minOccurs="0" name="clusteringAttributeRule" type="tns:ClusteringAttributeRuleType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Matching rule for attribute clustering.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>ClusteringAttributeSettingType.clusteringAttributeRule</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="clusteringAttributeSettingType" type="tns:ClusteringAttributeSettingType"/>

    <xsd:complexType name="AnalysisAttributeSettingType">
        <xsd:annotation>
            <xsd:documentation>
                <p>Contains information about matching rules for object analysis process.</p>
                <p>Matching rule presupposes the business logic for the comparison of objects.</p>
            </xsd:documentation>
            <xsd:appinfo>
                <a:container/>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <xsd:element maxOccurs="unbounded" minOccurs="0" name="path" type="t:ItemPathType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Matching rule for attribute clustering.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>AnalysisAttributeSettingType.itemPath</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <!--<xsd:element name="assignmentRule" type="tns:AnalysisAttributeRuleType" minOccurs="0" maxOccurs="unbounded">-->
            <!--    <xsd:annotation>-->
            <!--        <xsd:documentation>-->
            <!--            <p>-->
            <!--                Matching rule for attribute clustering.-->
            <!--            </p>-->
            <!--        </xsd:documentation>-->
            <!--        <xsd:appinfo>-->
            <!--            <a:displayName>AnalysisAttributeSettingType.assignmentRule</a:displayName>-->
            <!--        </xsd:appinfo>-->
            <!--    </xsd:annotation>-->
            <!--</xsd:element>-->

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="analysisAttributeSettingType" type="tns:AnalysisAttributeSettingType"/>

    <xsd:complexType name="ClusteringAttributeRuleType">
        <xsd:annotation>
            <xsd:documentation>
                <p>Contains information about matching rules for clustering process.</p>
                <p>Matching rule presupposes the business logic for the comparison of objects.</p>
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <xsd:element minOccurs="0" name="path" type="t:ItemPathType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>Path to the property used for comparison.</p>
                        <p>It is necessary that the output be a simple object convertible to a String type</p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>ClusteringAttributeRuleType.attributeIdentifier</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="isMultiValue" type="xsd:boolean">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>If true, the matching rule is applied to each value of the property.</p>
                        <p>Also, there must be specified a matchSimilarity value. If not default 100% is used.</p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>ClusteringAttributeRuleType.isMultiValue</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="similarity" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>Similarity threshold used for comparison (Jaccard metric).</p>
                        <p>If the condition is not met, then the objects are excluded.</p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>ClusteringAttributeRuleType.similarity</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="weight" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>Weight of the matching rule.</p>
                        <p>For inclusion object in the cluster, the sum of the weights of the matching
                            rules must be greater than or equal to 1.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>ClusteringAttributeRuleType.weight</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="clusteringAttributeRuleType" type="tns:ClusteringAttributeRuleType">
        <xsd:annotation>
            <xsd:documentation>
                Setting for attribute clustering.
            </xsd:documentation>
        </xsd:annotation>
    </xsd:element>

    <xsd:complexType name="RoleAnalysisPatternAnalysisType">
        <xsd:annotation>
            <xsd:documentation>
                Contains detailed information about pattern analysis.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <xsd:element minOccurs="0" name="confidence" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        Confidence level associated with the identified outlier.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="totalRelations" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        Confidence level associated with the identified outlier.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="clusterRelations" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        Confidence level associated with the identified outlier.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="topPatternRelation" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        Confidence level associated with the identified outlier.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="detectedPatternCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        Confidence level associated with the identified outlier.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="topDetectedPattern" type="c:RoleAnalysisDetectionPatternType">
                <xsd:annotation>
                    <xsd:documentation>
                        The top detected pattern.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="roleAnalysisPatternAnalysis" type="tns:RoleAnalysisPatternAnalysisType"/>

    <xsd:complexType name="RoleAnalysisOptionType">
        <xsd:annotation>
            <xsd:documentation>
                This complex type defines options for role analysis.
                It encapsulates elements related to the process mode and analysis category,
                providing flexibility in configuring the specific approach for analysis.

                The "processMode" element determines the methodology used during the analysis,
                considering either a role perspective or a user perspective.

                The "analysisCategory" element specifies the mode for categorizing the analysis,
                allowing for differentiation between standard and advanced approaches.

                The "id" attribute uniquely identifies each role analysis option.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element minOccurs="0" name="analysisProcedureType" type="tns:RoleAnalysisProcedureType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            It determines the specific approach
                            or methodology used during the analysis.

                            Role mining analysis (ROLE_MINING):

                            Outlier detection analysis (OUTLIER_DETECTION):
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisProcedureType.analysisProcedureType</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="processMode" type="tns:RoleAnalysisProcessModeType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Process mode for role analysis. It determines the specific approach
                            or methodology used during the analysis.

                            We currently use an enum type to identify the mode (ROLE MODE, USER MODE)
                            For Role Analysis (ROLE):
                            Role perspective is taken into account. The role mining process focuses on identifying
                            and analyzing roles based on their similarity and considering the perspective of roles
                            (vectors of users who have this role are compared). Objects
                            that meet the specified conditions, determined by the input parameters, are added to the data set
                            to facilitate role mining

                            For User Analysis (USER):
                            User perspective is taken into account. The user mining process focuses on identifying and
                            analyzing users based on their similarity and considering the perspective of users
                            (the role vectors assigned to the given users are compared). Objects that
                            meet the specified conditions, determined by the input parameters, are added to the data set to
                            facilitate role mining.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RoleAnalysisProcessModeType.processMode</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="analysisCategory" type="tns:RoleAnalysisCategoryType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Analysis category mode for role analysis. It determines the specific approach
                            or methodology used during the analysis.

                            We currently use an enum type to identify the mode (STANDARD MODE, ADVANCED MODE)
                            For Standard Mode (STANDARD):
                            This mode represents a basic approach to role analysis, focusing on fundamental criteria
                            and techniques for identifying and analyzing roles within the system.

                            For Advanced Mode (ADVANCED):
                            This mode represents a more sophisticated approach, often involving complex matching rules
                            and additional criteria for role identification and analysis.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="roleAnalysisOptionType" type="tns:RoleAnalysisOptionType"/>

    <xsd:complexType name="OutlierCategoryType">
        <xsd:annotation>
            <xsd:documentation>
                The container consists of statistical data about object.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <xsd:element minOccurs="0" name="outlierClusterCategory" type="tns:OutlierClusterCategoryType">
                <xsd:annotation>
                    <xsd:documentation>
                        Category classification of the anomaly.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:since>4.9</a:since>
                        <a:displayName>OutlierClusterCategoryType.outlierNoiseCategory</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="outlierNoiseCategory" type="tns:OutlierNoiseCategoryType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Describe category of noise.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:since>4.9</a:since>
                        <a:displayName>OutlierNoiseCategoryType.outlierNoiseCategory</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>


            <xsd:element minOccurs="0" name="outlierSpecificCategory" type="tns:OutlierSpecificCategoryType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Describe specific category of outlier object.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:since>4.9</a:since>
                        <a:displayName>OutlierSpecificCategoryType.outlierNoiseCategory</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="outlierCategoryType" type="tns:OutlierCategoryType"/>

    <xsd:complexType name="RoleAnalysisExcludeType">
        <xsd:annotation>
            <xsd:documentation>
                Object that should be excluded from the analysis in next analysis round.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <xsd:element maxOccurs="unbounded" minOccurs="0" name="excludeUserRef" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>
                        Users can be flagged for further analysis or excluded from certain clustering processes.
                        Manual exclusion.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element maxOccurs="unbounded" minOccurs="0" name="excludeRoleRef" type="xsd:string">
                <xsd:annotation>
                    <xsd:documentation>
                        Role can be flagged for further analysis or excluded from certain clustering processes.
                        Manual exclusion.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element maxOccurs="unbounded" minOccurs="0" name="excludeRoleCategory" type="tns:RoleAnalysisObjectCategorizationType">
                <xsd:annotation>
                    <xsd:documentation>
                        Category classification. Role excluded from future clustering processes.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element maxOccurs="unbounded" minOccurs="0" name="excludeUserCategory" type="tns:RoleAnalysisObjectCategorizationType">
                <xsd:annotation>
                    <xsd:documentation>
                        Category classification. User excluded from future clustering processes.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="roleAnalysisExcludeType" type="tns:RoleAnalysisExcludeType"/>

    <xsd:complexType name="RoleAnalysisIdentifiedCharacteristicsType">
        <xsd:annotation>
            <xsd:documentation>
                Objects above which a specific characteristic has been identified.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <xsd:element minOccurs="0" name="rolesCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Included roles count.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="usersCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Included users count.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="focusCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Included focus count.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="roles" type="tns:RoleAnalysisIdentifiedCharacteristicsItemsType">
                <xsd:annotation>
                    <xsd:documentation>
                        Contains specific characteristics of the role type objects.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="users" type="tns:RoleAnalysisIdentifiedCharacteristicsItemsType">
                <xsd:annotation>
                    <xsd:documentation>
                        Contains specific characteristics of the user type objects.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="focus" type="tns:RoleAnalysisIdentifiedCharacteristicsItemsType">
                <xsd:annotation>
                    <xsd:documentation>
                        Contains specific characteristics of the focus type object (except user and role type object).
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="exclude" type="tns:RoleAnalysisExcludeType">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Object that should be excluded from the analysis in next analysis round.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="identifiedCharacteristics" type="tns:RoleAnalysisIdentifiedCharacteristicsType"/>

    <xsd:complexType name="RoleAnalysisIdentifiedCharacteristicsItemsType">
        <xsd:annotation>
            <xsd:documentation>
                Contains specific characteristics of the object.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <xsd:element minOccurs="0" name="unPopularCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of unpopular objects.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="abovePopularCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of above popular objects.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="noiseCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of noise objects.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="noiseExclusiveCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of noise exclusive objects.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="anomalyCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of anomaly objects.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="overallAnomalyCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of overall anomaly objects.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="outlierCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of outlier objects.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="excludedCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of excluded objects.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="insufficientCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of insufficient per similarity.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="noiseExclusiveUnpopular" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of noise exclusive unpopular objects (noise exclusive and unpopular).
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="excludedMissingBase" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Number of excluded missing base objects.
                        </p>
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element maxOccurs="unbounded" minOccurs="0" name="item" type="tns:RoleAnalysisIdentifiedCharacteristicsItemType">
                <xsd:annotation>
                    <xsd:documentation>
                        Roles with identified characteristics.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="items" type="tns:RoleAnalysisIdentifiedCharacteristicsItemsType"/>

    <xsd:complexType name="RoleAnalysisIdentifiedCharacteristicsItemType">
        <xsd:annotation>
            <xsd:documentation>
                Contains specific characteristics of the object.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <xsd:element minOccurs="0" name="objectRef" type="tns:ObjectReferenceType">
                <xsd:annotation>
                    <xsd:documentation>
                        Reference to the object that has been identified.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element maxOccurs="unbounded" minOccurs="0" name="category" type="tns:RoleAnalysisObjectCategorizationType">
                <xsd:annotation>
                    <xsd:documentation>
                        Category classification.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="item" type="tns:RoleAnalysisIdentifiedCharacteristicsItemType"/>

    <xsd:complexType name="FrequencyType">
        <xsd:annotation>
            <xsd:documentation>
                Represents frequency-related information.
            </xsd:documentation>
            <xsd:appinfo>
                <a:container>true</a:container>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:sequence>

            <xsd:element minOccurs="0" name="percentageRatio" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        Providing information about the percentage-based
                        frequency.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="valueRatio" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        Providing information about the number-based
                        frequency.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

            <xsd:element minOccurs="0" name="entiretyCount" type="xsd:int">
                <xsd:annotation>
                    <xsd:documentation>
                        Providing information about entire count of objects.
                    </xsd:documentation>
                </xsd:annotation>
            </xsd:element>

        </xsd:sequence>
        <xsd:attribute name="id" type="xsd:long"/>
    </xsd:complexType>
    <xsd:element name="frequencyType" type="tns:FrequencyType"/>

    <xsd:complexType name="RangeType">
        <xsd:annotation>
            <xsd:documentation>
                TODO
            </xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element minOccurs="0" name="min" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Minimum required frequency.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RangeType.min</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element minOccurs="0" name="max" type="xsd:double">
                <xsd:annotation>
                    <xsd:documentation>
                        <p>
                            Maximum required frequency.
                        </p>
                    </xsd:documentation>
                    <xsd:appinfo>
                        <a:displayName>RangeType.max</a:displayName>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:element name="range" type="tns:RangeType">
        <xsd:annotation>
            <xsd:documentation>
                Min - max range.
            </xsd:documentation>
        </xsd:annotation>
    </xsd:element>

    <xsd:simpleType name="RoleAnalysisCategoryType">
        <xsd:annotation>
            <xsd:documentation>
                Category classification.
            </xsd:documentation>
            <xsd:appinfo>
                <a:experimental>true</a:experimental>
                <a:since>4.9</a:since>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <!--<xsd:enumeration value="standard">-->
            <!--    <xsd:annotation>-->
            <!--        <xsd:documentation>-->
            <!--            This mapping should be used during basic analysis.-->
            <!--        </xsd:documentation>-->
            <!--        <xsd:appinfo>-->
            <!--            <jaxb:typesafeEnumMember name="STANDARD"/>-->
            <!--        </xsd:appinfo>-->
            <!--    </xsd:annotation>-->
            <!--</xsd:enumeration>-->
            <xsd:enumeration value="balanced">
                <xsd:annotation>
                    <xsd:documentation>
                        This mapping should be used during basic analysis.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="BALANCED"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="exact">
                <xsd:annotation>
                    <xsd:documentation>
                        This mapping should be used during basic analysis.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="EXACT"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="exploration">
                <xsd:annotation>
                    <xsd:documentation>
                        This mapping should be used during basic analysis.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="EXPLORATION"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="department">
                <xsd:annotation>
                    <xsd:documentation>
                        This mapping should be used during basic analysis.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="DEPARTMENT"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="attribute_based">
                <xsd:annotation>
                    <xsd:documentation>
                        This mapping should be used during basic analysis.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="ATTRIBUTE_BASED"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="advanced">
                <xsd:annotation>
                    <xsd:documentation>
                        This mapping should be used during advanced analysis (matching rules).
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="ADVANCED"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="outliers_department">
                <xsd:annotation>
                    <xsd:documentation>
                        This mapping should be used during outlier analysis.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="OUTLIERS_DEPARTMENT"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="birthright">
                <xsd:annotation>
                    <xsd:documentation>
                        This mapping should be used during outlier analysis.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="BIRTHRIGHT"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="RoleAnalysisObjectCategorizationType">
        <xsd:annotation>
            <xsd:documentation>
                Category classification.
            </xsd:documentation>
            <xsd:appinfo>
                <a:experimental>true</a:experimental>
                <a:since>4.8</a:since>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="un_popular">
                <xsd:annotation>
                    <xsd:documentation>
                        Unpopular roles or users.
                        Objects that are not frequently used or accessed.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="UN_POPULAR"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="above_popular">
                <xsd:annotation>
                    <xsd:documentation>
                        Above popular roles or users.
                        Objects that are frequently used or accessed.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="ABOVE_POPULAR"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="noise_exclusive">
                <xsd:annotation>
                    <xsd:documentation>
                        Noise exclusive roles or users.
                        Objects that appears only in noise clusters.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="NOISE_EXCLUSIVE"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="noise">
                <xsd:annotation>
                    <xsd:documentation>
                        Objects that appears in noise clusters.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="NOISE"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="overall_anomaly">
                <xsd:annotation>
                    <xsd:documentation>
                        Anomaly roles or users.
                        Currently, user-mode outlier detection, this category is used only if role is
                        marked as anomaly in every analysis user object.
                        (In the future, it will be used for more complex role mode analysis)
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="OVERALL_ANOMALY"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="anomaly">
                <xsd:annotation>
                    <xsd:documentation>
                        Anomaly roles or users.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="ANOMALY"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="outlier">
                <xsd:annotation>
                    <xsd:documentation>
                        Outlier roles or users.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="OUTLIER"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="insufficient">
                <xsd:annotation>
                    <xsd:documentation>
                        Insufficient peer similarity (noise exclusive = noise - unpopular).
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="INSUFFICIENT"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="noise_exclusive_unpopular">
                <xsd:annotation>
                    <xsd:documentation>
                        (noise_exclusive_unpopular = noise exclusive and unpopular).
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="NOISE_EXCLUSIVE_UNPOPULAR"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="excluded">
                <xsd:annotation>
                    <xsd:documentation>
                        Outlier roles or users.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="EXCLUDED"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="excluded_missing_base">
                <xsd:annotation>
                    <xsd:documentation>
                        If object is excluded due to missing member/assignment.
                        For example user "Jack" has role A,B,C and these roles is unpopular with means that is excluded from analysis.
                        That means that user "Jack" is excluded from analysis due to missing roles.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="EXCLUDED_MISSING_BASE"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="OutlierClusterCategoryType">
        <xsd:annotation>
            <xsd:documentation>
                Represents the outlier status in role analysis.
            </xsd:documentation>
            <xsd:appinfo>
                <jaxb:typesafeEnumClass/>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="inner_outlier">
                <xsd:annotation>
                    <xsd:documentation>
                        Inner outlier: An outlier that is inside the cluster.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="INNER_OUTLIER"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="outer_outlier">
                <xsd:annotation>
                    <xsd:documentation>
                        Outer outlier: An outlier that is outside the cluster.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="OUTER_OUTLIER"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="OutlierNoiseCategoryType">
        <xsd:annotation>
            <xsd:documentation>
                Category classification.
            </xsd:documentation>
            <xsd:appinfo>
                <a:experimental>true</a:experimental>
                <a:since>4.9</a:since>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">

            <xsd:enumeration value="suitable">
                <xsd:annotation>
                    <xsd:documentation>
                        There is detected cluster/group that meet business definition.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="SUITABLE"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>

            <xsd:enumeration value="access_or_rule_noise">
                <xsd:annotation>
                    <xsd:documentation>
                        Not required members that meet access or rule definition (not both together).
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="ACCESS_OR_RULE_NOISE"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>

            <xsd:enumeration value="members_noise">
                <xsd:annotation>
                    <xsd:documentation>
                        Not required members that meet business definition.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="MEMBERS_NOISE"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>

            <xsd:enumeration value="access_noise">
                <xsd:annotation>
                    <xsd:documentation>
                        Not required members count that meet access definition.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="ACCESS_NOISE"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>

            <xsd:enumeration value="rule_noise">
                <xsd:annotation>
                    <xsd:documentation>
                        Not required members count that meet rule definition.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="RULE_NOISE"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>

            <xsd:enumeration value="overal_noise">
                <xsd:annotation>
                    <xsd:documentation>
                        Not required members count that meet business definition.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="OVERAL_NOISE"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>

        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="OutlierSpecificCategoryType">
        <xsd:annotation>
            <xsd:documentation>
                Represents the outlier status in role analysis.
            </xsd:documentation>
            <xsd:appinfo>
                <jaxb:typesafeEnumClass/>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="access_noise">
                <xsd:annotation>
                    <xsd:documentation>
                        Object that contains duplicate access right.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="ACCESS_NOISE"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="unique_object">
                <xsd:annotation>
                    <xsd:documentation>
                        Object that is unique in the system.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="UNIQUE_OBJECT"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="RoleAnalysisOperationType">
        <xsd:annotation>
            <xsd:documentation>
                Role analysis operation.
            </xsd:documentation>
            <xsd:appinfo>
                <jaxb:typesafeEnumClass/>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="clustering">
                <xsd:annotation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="CLUSTERING"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="detection">
                <xsd:annotation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="DETECTION"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="migration">
                <xsd:annotation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="MIGRATION"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="RoleAnalysisClusterCategory">
        <xsd:annotation>
            <xsd:documentation>
                Role analysis relation
            </xsd:documentation>
            <xsd:appinfo>
                <jaxb:typesafeEnumClass/>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="inliers">
                <xsd:annotation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="INLIERS"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="outliers">
                <xsd:annotation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="OUTLIERS"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="RoleAnalysisProcedureType">
        <xsd:annotation>
            <xsd:documentation>
                Role analysis type.
            </xsd:documentation>
            <xsd:appinfo>
                <a:experimental>true</a:experimental>
                <a:since>4.8</a:since>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="role_mining">
                <xsd:annotation>
                    <xsd:documentation>
                        This mapping should be used during role mining analysis.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="ROLE_MINING"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="outlier_detection">
                <xsd:annotation>
                    <xsd:documentation>
                        This mapping should be used during outlier detection analysis.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="OUTLIER_DETECTION"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="RoleAnalysisProcessModeType">
        <xsd:annotation>
            <xsd:documentation>
                Role analysis processing mode (user or role).
            </xsd:documentation>
            <xsd:appinfo>
                <a:experimental>true</a:experimental>
                <a:since>4.8</a:since>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="role">
                <xsd:annotation>
                    <xsd:documentation>
                        This mapping should be used during parsing over role objects
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="ROLE"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="user">
                <xsd:annotation>
                    <xsd:documentation>
                        This mapping should be used during parsing over user objects
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="USER"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
        </xsd:restriction>
    </xsd:simpleType>

    <xsd:simpleType name="RoleAnalysisDetectionProcessType">
        <xsd:annotation>
            <xsd:documentation>
                Role analysis detection processing mode.
            </xsd:documentation>
            <xsd:appinfo>
                <a:experimental>true</a:experimental>
                <a:since>4.8</a:since>
            </xsd:appinfo>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="full">
                <xsd:annotation>
                    <xsd:documentation>
                        This mapping should be used during detection pattern on all cluster objects.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="FULL"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="partial">
                <xsd:annotation>
                    <xsd:documentation>
                        This mapping should be used for skipping potential large clustering objects.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="PARTIAL"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
            <xsd:enumeration value="skip">
                <xsd:annotation>
                    <xsd:documentation>
                        This mapping should be used for skipping detection pattern on clustering objects.
                    </xsd:documentation>
                    <xsd:appinfo>
                        <jaxb:typesafeEnumMember name="SKIP"/>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:enumeration>
        </xsd:restriction>
    </xsd:simpleType>

</xsd:schema>