<xs:schema
    targetNamespace="http://schemas.microsoft.com/bestpractices/models/ServerManager/TerminalServices/TerminalServicesComposite/2008/04"
    xmlns:tns="http://schemas.microsoft.com/bestpractices/models/ServerManager/TerminalServices/TerminalServicesComposite/2008/04"
    elementFormDefault="qualified"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="TerminalServicesComposite" type="tns:TerminalServicesCompositeType" />

    <xs:complexType name="TerminalServicesCompositeType">
        <xs:sequence>
            <xs:element name="TSGateway" type="tns:TSGatewayType" minOccurs="0" maxOccurs="1" />
            <xs:element name="TSLicensing" type="tns:TSLicensingType" minOccurs="0" maxOccurs="1" />
            <xs:element name="TSTerminalServer" type="tns:TSTerminalServerType" minOccurs="0" maxOccurs="1" />
            <xs:element name="RDConnectionBroker" type="tns:RDConnectionBrokerType" minOccurs="0" maxOccurs="1" />
            <xs:element name="RDWebAccess" type="tns:RDWebAccessType" minOccurs="0" maxOccurs="1" />
            <xs:element name="RDVH" type="tns:RDVHType" minOccurs="0" maxOccurs="1" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="TSLicensingType">
        <xs:sequence>
            <xs:element name="ActivationStatus" type="xs:int"/>
            <xs:element name="CALAvailable" type="xs:int"/>
        </xs:sequence>
    </xs:complexType>

    <xs:element name="CAPPolicy" type="tns:CAPPolicyType" />

    <xs:complexType name="TSGatewayType">
        <xs:sequence>
            <xs:element name="TSGatewayInstalled" type="xs:int" />
            <xs:element name="CAPSetup" type="tns:CAPSetupType" minOccurs="0" maxOccurs="1" />
            <xs:element name="RAPSetup" type="tns:RAPSetupType" minOccurs="0" maxOccurs="1" />
            <xs:element name="MaxConnectionsAllowed" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="ConnectionsExhausted" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="GatewayFarmConfigured" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="IISConfiguration" type="tns:IISConfigurationType" minOccurs="0" maxOccurs="1" />
            <xs:element name="CertConfiguration" type="tns:CertConfigurationType" minOccurs="0" maxOccurs="1" />
            <xs:element name="ConenctOnlytoWin7Client" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="ADForDomainReachable" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="RDGatewaySvcStarted" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="LoadBalancedServerComposite" type="tns:LoadBalancedServerCompositeType" minOccurs="0" maxOccurs="1" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="TSTerminalServerType">
        <xs:sequence>
            <xs:element name="RDSServiceRunning" type="xs:int"/>
        </xs:sequence>
    </xs:complexType>


    <xs:complexType name="RDWebAccessType">
        <xs:sequence>
            <xs:element name="RDWebAccessServiceRunning" type="xs:int"/>
        </xs:sequence>
    </xs:complexType>
  

    <xs:complexType name="RDVHType">
        <xs:sequence>
            <xs:element name="RDVHServiceRunning" type="xs:int"/>
        </xs:sequence>
    </xs:complexType>
    
    <xs:complexType name="RDConnectionBrokerType">
        <xs:sequence>
            <xs:element name="RDCBServiceRunning" type="xs:int"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="RDSHCollectionType">
        <xs:sequence>
            <xs:element name="RDSHCollectionReport" type="xs:string" minOccurs="0" maxOccurs="1"/>
            <xs:element name="RDSHCollectionStatus" type="xs:int" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
    </xs:complexType>
    
    <xs:complexType name="LoadBalancedServerCompositeType">
        <xs:sequence>
            <xs:element name="LoadBalancedServersErrorFree" type="xs:int" minOccurs="0" maxOccurs="1" />
        </xs:sequence>
    </xs:complexType>
    
    <xs:complexType name="CAPSetupType">
        <xs:sequence>
            <xs:element name="NPSServerReachable" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="NumberCAPPoliciesActive" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="SomeCAPPoliciesNonCompliant" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="NamesCAPPoliciesNonCompliant" type="xs:string" minOccurs="0" maxOccurs="1" />
            <xs:element ref="tns:CAPPolicy" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="CAPPolicyType">
        <xs:sequence>
            <xs:element name="A1CAPPolicyName" type="xs:string" minOccurs="0" maxOccurs="1" />
            <xs:element name="A2PolicyAllowConenction" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="A3AllowClientWithoutAuthNego" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="A4NASPortTypeVPN" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="A5NumberUserGroups" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="A6AuthenticationSet" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="A7NumberHealthPolicies" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="A8PolicyCompliant" type="xs:int" minOccurs="0" maxOccurs="1" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="RAPSetupType">
        <xs:sequence>
            <xs:element name="NumberRAPPoliciesActive" type="xs:int" minOccurs="0" maxOccurs="1" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="IISConfigurationType">
        <xs:sequence>
            <xs:element name="WebSiteName" type="xs:string" minOccurs="0" maxOccurs="1" />
            <xs:element name="WebSiteConfigured" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="WebSiteRunning" type="xs:int" minOccurs="0" maxOccurs="1" />
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="CertConfigurationType">
        <xs:sequence>
            <xs:element name="CertConfigured" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="CertSubject" type="xs:string" minOccurs="0" maxOccurs="1" />
            <xs:element name="CertActive" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="CertExpired" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="CertSubjectMatchesCompName" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="CertNameIsFQDN" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="CertForServerAuthn" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="CertIsCACert" type="xs:int" minOccurs="0" maxOccurs="1" />
            <xs:element name="CertSettingsCompliant" type="xs:int" minOccurs="0" maxOccurs="1" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>