// ===================================================================
// Title:       User-Security Organizations and Persons 2.7
// Filename:    User27_Org.mof
// Version:     2.7.0
// Status:      Final
// Date:        03/31/2003
// ===================================================================
// Copyright 2000-2003 Distributed Management Task Force, Inc. (DMTF).
// All rights reserved.  
// DMTF is a not-for-profit association of industry members dedicated 
// to promoting enterprise and systems management and interoperability. 
// DMTF specifications and documents may be reproduced for uses
// consistent with this purpose by members and non-members, 
// provided that correct attribution is given. 
// As DMTF specifications may be revised from time to time, 
// the particular version and release date should always be noted.
//
// Implementation of certain elements of this standard or proposed 
// standard may be subject to third party patent rights, including 
// provisional patent rights (herein "patent rights"). DMTF makes 
// no representations to users of the standard as to the existence 
// of such rights, and is not responsible to recognize, disclose, or
// identify any or all such third party patent right, owners or 
// claimants, nor for any incomplete or inaccurate identification or 
// disclosure of such rights, owners or claimants. DMTF shall have no 
// liability to any party, in any manner or circumstance, under any 
// legal theory whatsoever, for failure to recognize, disclose, or 
// identify any such third party patent rights, or for such party's
// reliance on the standard or incorporation thereof in its product, 
// protocols or testing procedures. DMTF shall have no liability to 
// any party implementing such standard, whether such implementation 
// is foreseeable or not, nor to any patent owner or claimant, and shall 
// have no liability or responsibility for costs or losses incurred if 
// a standard is withdrawn or modified after publication, and shall be
// indemnified and held harmless by any party implementing the 
// standard from any and all claims of infringement by a patent owner 
// for such implementations.
//
// For information about patents held by third-parties which have 
// notified the DMTF that, in their opinion, such patent may relate to 
// or impact implementations of DMTF standards, visit 
// http://www.dmtf.org/about/policies/disclosures.php.
// ===================================================================
// Description: The User Model extends the management concepts that
//              are related to users and security.
//              This file defines the concepts and classes related to  
//              Organizations and Persons.
//
//              The object classes below are listed in an order that
//              avoids forward references. Required objects, defined 
//              by other working groups, are omitted.
// ===================================================================
// Change Log for v2.7
// CR835 - Add 2 properties, GivenName and UserID, to CIM_Person
// (ERRATA) CR854 - Change subclassing of OtherPersonInformation
//         from UserEntity to ManagedElement
// (ERRATA) CR855 - Change cardinality of the Antecedent from 0..1
//         to 1 for MoreOrganizationInfo, MoreOrgUnitInfo, and
//         MorePersonInfo
// CR980 - Remove the Experimental qualifier from 2 properties in 
//         Person
// ===================================================================

#pragma Locale ("en_US")


// ==================================================================
// MemberPrincipal    
// ==================================================================
[Association, Aggregation, Version ("2.6.0"), Description (   
   "CIM_MemberPrincipal is an aggregation used to establish "   
   "membership of principals (i.e., users) in a Collection.  That "
   "membership can be established either directly or indirectly as "
   "indicated in the UsersAccessBy property.  For example, a user "
   "may be identified directly by their userid (i.e., Account object "
   "instance) or the user may be identified indirectly by realm from "
   "which a ticket was issued (i.e., CredentialManagementService "
   "object instance).  The latter case is useful, for example, for "
   "specifying that only users identified by an internal credential "
   "service are permitted to access very sensitive information.") ]  
class CIM_MemberPrincipal : CIM_MemberOfCollection {

   [Override ("Collection"), Aggregate ]   
   CIM_Collection REF Collection;

   [Override ("Member") ]
   CIM_ManagedElement REF Member;

   [Description (
      "A MemberPrincipal may be identifed in several ways that may "
      "be either direct or indirect membership in the collection. \n"
      " - A 'UsersAccess' membership directly identifies the user by "
      "the UsersAccess object instance. \n"
      " - An 'Account' membership directly identifies the user by "
      "the Account object class instance. \n"
      " - A 'UsingElement' membership indirectly identifies the user "
      "by the ManagedElement object instance that has "
      "ElementAsUser associations to UsersAccess object "
      "instances.  Hence, all UsersAccess instances are "
      "indirectly included in the collection."),
      ValueMap {"1", "2", "3", "4"},
      Values {"UsersAccess", "Account", "UsingElement", 
          "CredentialManagementService"} ]
   uint16 UserAccessBy;
};                    


// ==================================================================
// CollectionInSystem
// ==================================================================
[Association, Aggregation, Version ("2.6.0"), Description (   
   "CIM_CollectionInSystem is an association used to establish a "
   "parent-child relationship between a collection and an 'owning' "
   "System such as an AdminDomain or ComputerSystem.  A single "
   "collection should not have both a CollectionInOrganization and a "
   "CollectionInSystem association.") ]
class CIM_CollectionInSystem {   

   [Key, Max (1), Aggregate, 
      Description (
      "The parent system responsible for the collection.") ]
   CIM_System REF Parent;   

   [Key, Description ("The collection.") ]
   CIM_Collection REF Child; 
};        


// ==================================================================
// OrganizationalEntity
// ==================================================================
[Abstract, Version ("2.6.0"), Description (  
   "OrganizationalEntity is an abstract class from which classes "
   "that fit into an organizational structure are derived.") ]
class CIM_OrganizationalEntity : CIM_ManagedElement {  
};


// ==================================================================
// OrgStructure    
// ==================================================================
  [Association, Aggregation, Version ("2.6.0"), Description (   
   "CIM_OrgStructure is an association used to establish parent-child "
   "relationships between OrganizationalEntity instances.  This is "
   "used to capture organizational relationships between object " 
   "instances such as those that are imported from an LDAP-accessible "
   "directory.") ]    
class CIM_OrgStructure {   

   [Key, Max (1), Aggregate, 
      Description ("The organizational parent in this association.") ]    
   CIM_OrganizationalEntity REF Parent;   

   [Key, Description (
      "The organizational child in this association, "
      "i.e., the sub-unit or other owned object instance.") ]    
   CIM_OrganizationalEntity REF Child;   
};   

      
// ==================================================================
// CollectionInOrganization
// ==================================================================
[Association, Aggregation, Version ("2.6.0"), Description (   
   "CIM_CollectionInOrganization is an association used to establish "
   "a parent-child relationship between a collection and an 'owning' "
   "OrganizationalEntity.  A single collection should not have both "
   "a CollectionInOrganization and a CollectionInSystem "
   "association.") ]
class CIM_CollectionInOrganization {   

   [Key, Max (1), Aggregate, 
      Description (
      "The parent organization responsible for the collection.") ]
   CIM_OrganizationalEntity REF Parent;   

   [Key, Description ("The collection.") ]
   CIM_Collection REF Child;   
};   


// ==================================================================
// Organization
// ==================================================================
[Version ("2.6.0"), Description (  
   "The Organization class is used to represent an organization such "
   "as a corporation or other autonomous entity.  The class is "
   "defined so as to incorporate commonly-used LDAP attributes to "
   "permit implementations to easily derive this information from "
   "LDAP-accessible directories.  This class's properties are a "
   "subset of a related class, OtherOrganizationInformation, which "
   "defines all the group properties and in array form for "
   "directory compatibility.") ]
class CIM_Organization : CIM_OrganizationalEntity {  
   
   [Key, MaxLen (256), Description (  
      "CreationClassName indicates the name of the class or the "
      "subclass used in the creation of an instance. When used "
      "with the other key properties of this class, this property "
      "allows all instances of this class and its subclasses to "
      "be uniquely identified.") ]
   string CreationClassName;
   
   [Key, MaxLen (1024),Description (  
      "The Name property defines the label by which the object is "
      "known. In the case of an LDAP-derived instance, the Name "
      "property value may be set to the distinguishedName of the "
      "LDAP-accessed object instance.") ]
   string Name;
   
   [MaxLen (128), Description (  
      "This property describes the kind of business performed by an "
      "organization.") ]
   string BusinessCategory;
   
   [Description (  
      "The organization's facsimile telephone number.") ]
   string FacsimileTelephoneNumber;
   
   [Description (  
      "This property contains the name of a locality, such as a "
      "city, county or other geographic region.") ]
   string LocalityName;
   
   [Description (  
      "Based on RFC1274, the mail box addresses for the organization "
      "as defined in RFC822.") ]
   string Mail;
   
   [Required, Description (  
      "The name of the organization.") ]
   string OrganizationName;
   
   [Description (    
      "The Postal Address property values specify the address "
      "information required for the physical delivery of postal "
      "messages by the postal authority to the organization.") ]
   string PostalAddress[];
   
   [MaxLen (40), Description (  
      "The Postal Code property specifies the postal code of the "
      "organization.  If this value is present it will be part of "
      "the object's postal address.") ]
   string PostalCode;
   
   [Description (  
      "The State or Province Name property specifies a state or "
      "province.") ]
   string StateOrProvince;
   
   [MaxLen (32), Description (  
      "The Telephone Number property specifies a telephone number of "
      "the organization, e.g. + 44 582 10101).") ]
   string TelephoneNumber;
};


// ==================================================================
// OtherOrganizationInformation
// ==================================================================
[Version ("2.6.0"), Description (  
   "The OtherOrganizationInformation class is used to provide "
   "additional information about an associated Organization instance. "
   "This class is defined so as to incorporate commonly-used LDAP "
   "attributes to permit implementations to easily derive this "
   "information from LDAP-accessible directories.") ]
class CIM_OtherOrganizationInformation : CIM_ManagedElement {  

   [Key, MaxLen (256), Description (  
      "CreationClassName indicates the name of the class or the "
      "subclass used in the creation of an instance. When used "
      "with the other key properties of this class, this property "
      "allows all instances of this class and its subclasses to "
      "be uniquely identified.") ]
   string CreationClassName;

   [Key, MaxLen (1024),Description (  
      "The Name property defines the label by which the object is "
      "known. In the case of an LDAP-derived instance, the Name "
      "property value may be set to the distinguishedName of the "
      "LDAP-accessed object instance.") ]
   string Name;

   [Description (  
      "In the case of an LDAP-derived instance, the ObjectClass "
      "property value(s) may be set to the objectClass attribute "
      "values.") ]
   string ObjectClass[];

   [MaxLen (128), Description (  
      "This property describes the kind of business performed by an "
      "organization.") ]
   string BusinessCategory[];

   [MaxLen (1024), Description (  
      "The Descriptions property values may contain human-readable "
      "descriptions of the object.  In the case of an LDAP-derived "  
      "instance, the description attribute may have multiple values "
      "that, therefore, cannot be placed in the inherited "
      "Description property.") ]
   string Descriptions[];

   [MaxLen (128), Description (  
      "This property is used for the organization's telegram "
      "service.") ]
   string DestinationIndicator[];

   [Description (  
      "The organization's facsimile telephone number.") ]
   string FacsimileTelephoneNumber[];

   [MaxLen (16), Description (  
      "The organization's International ISDN number.") ]
   string InternationaliSDNNumber[];

   [Description (  
      "Uniform Resource Identifier with optional label as defined in "
      "RFC2079.") ]
   string LabeledURI[]; 

   [Description (  
      "This property contains the name of a locality, such as a "
      "city, county or other geographic region.") ]
   string LocalityName[];

   [Description (  
      "Based on RFC1274, the mail box addresses for the organization "
      "as defined in RFC822.") ]
   string Mail[];

   [Description (  
      "The manager for the organization.  In the case of an "
      "LDAP-derived instance, the Manager property value may contain "
      "the distinguishedName of the Manager.") ]
   string Manager[];

   [Description (  
      "The name of the organization.") ]
   string OrganizationName[];

   [Description (  
      "Based on RFC1274, this property may be used for electronic "
      "mail box addresses other than RFC822 and X.400.") ]
   string OtherMailbox[];

   [MaxLen (128), Description (  
      "The Physical Delivery Office Name property specifies the name "
      "of the city, village, etc. where a physical delivery office "
      "is situated.") ]
   string PhysicalDeliveryOfficeName[];

   [Description (  
      "The Postal Address property values specify the address "
      "information required for the physical delivery of postal "
      "messages by the postal authority to the organization.") ]
   string PostalAddress[];

   [MaxLen (40), Description (  
      "The Postal Code property specifies the postal code of the "
      "organization.  If this value is present it will be part of "
      "the object's postal address.") ]
   string PostalCode[];

   [MaxLen (40), Description (  
      "The Post Office Box property specifies the Post Office Box "
      "by which the organization will receive physical postal "
      "delivery. If present, the property value is part of the "
      "object's postal address.") ]
   string PostOfficeBox[];

   [Description (  
      "The Preferred Delivery Method property specifies the "
      "organization's preferred method to be used for communicating "
      "with it.") ]
   string PreferredDeliveryMethod;

   [Description (  
      "This property specifies a postal address suitable for receipt "
      "of telegrams or expedited documents, where it is necessary to "
      "have the recipient accept delivery.") ]
   string RegisteredAddress[];

   [Description (  
      "This property value is for use by X.500 clients in "
      "constructing search filters.") ]
   string SearchGuide[];

   [Description (  
      "In the case of an LDAP-derived instance, the See Also "
      "property specifies distinguishedName of other Directory "
      "objects which may be other aspects (in some sense) of the "
      "same real world object.") ]
   string SeeAlso[];

   [Description (  
      "The State or Province Name property specifies a state or "
      "province.") ]
   string StateOrProvince[];

   [MaxLen (128), Description (  
      "The Street Address property specifies a site for the local "
      "distribution and physical delivery in a postal address, i.e. "
      "the street name, place, avenue, and the number.") ]
   string Street[];

   [MaxLen (32), Description (  
      "The Telephone Number property specifies a telephone number of "
      "the organization, e.g. + 44 582 10101).") ]
   string TelephoneNumber[];

   [Description (  
      "The Teletex Terminal Identifier property specifies the "
      "Teletex terminal identifier (and, optionally, parameters) for "
      "a teletex terminal associated with the organization.") ]
   string TeletexTerminalIdentifier[];

   [Description (  
      "The Telex Number property specifies the telex number, country "
      "code, and answerback code of a telex terminal for the "
      "organization.") ]
   string TelexNumber[];

   [Octetstring, Description (  
      "An image of the organization logo.") ]
   string ThumbnailLogo[];

   [Description (  
      "A unique identifier that may be assigned in an environment to "
      "differentiate between uses of a given named organization "
      "instance.") ]
   string UniqueIdentifier[];

   [Octetstring, Description (  
      "In the case of an LDAP-derived instance, the UserPassword "
      "property may contain an encrypted password used to access "
      "the organization's resources in a directory.") ]
   string UserPassword[];

   [MaxLen (15), Description (  
      "An X.121 address for the organization.") ]
   string X121Address[];
};


// ==================================================================
// MoreOrganizationInfo
// ==================================================================
[Association, Version ("2.7.0"), Description (   
   "CIM_MoreOrganizationInfo is an association used to extend the "
   "information in a CIM_Organization class instance.") ]
class CIM_MoreOrganizationInfo : CIM_Dependency {   

   [Min (1), Max (1), Override ("Antecedent"), 
      Description ("The Organization which has more information.") ]
   CIM_Organization REF Antecedent;   

   [Max (1), Override ("Dependent"), 
      Description ("Additional data concerning the Organization.") ]
   CIM_OtherOrganizationInformation REF Dependent; 
};        


// ==================================================================
// OrgUnit
// ==================================================================
[Version ("2.6.0"), Description (  
   "The OrgUnit class is used to represent a sub-unit of an "
   "organization such a division or department.  The class is "
   "defined so as to incorporate commonly-used LDAP attributes to "
   "permit implementations to easily derive this information from "
   "LDAP-accessible directories.  This class's properties are a "
   "subset of a related class, OtherOrgUnitInformation, which "
   "defines all the group properties and in array form for "
   "directory compatibility.") ]
class CIM_OrgUnit : CIM_OrganizationalEntity {  

   [Key, MaxLen (256), Description (  
      "CreationClassName indicates the name of the class or the "
      "subclass used in the creation of an instance. When used "
      "with the other key properties of this class, this property "
      "allows all instances of this class and its subclasses to "
      "be uniquely identified.") ]
   string CreationClassName;

   [Key, MaxLen (1024),Description (  
      "The Name property defines the label by which the object is "
      "known. In the case of an LDAP-derived instance, the Name " 
      "property value may be set to the distinguishedName of the "
      "LDAP-accessed object instance.") ]
   string Name;

   [MaxLen (128), Description (  
      "This property describes the kind of business performed by an "
      "organizational unit.") ]
   string BusinessCategory;

   [Description (  
      "The organizational unit's facsimile telephone number.") ]
   string FacsimileTelephoneNumber;

   [Description (  
      "This property contains the name of a locality, such as a "
      "city, county or other geographic region.") ]
   string LocalityName;

   [Required, Description (  
      "The name of the organizational unit.") ]
   string OU;

   [Description (  
      "The Postal Address property values specify the address "
      "information required for the physical delivery of postal "
      "messages by the postal authority to the organizational "
      "unit.") ]
   string PostalAddress[];

   [MaxLen (40), Description (  
      "The Postal Code property specifies the postal code of the "
      "organizational unit.  If this value is present it will be "
      "part of the object's postal address.") ]
   string PostalCode;

   [Description (  
      "The State or Province Name property specifies a state or "
      "province.") ]
   string StateOrProvince;

   [MaxLen (32), Description (  
      "The Telephone Number property specifies a telephone number of "
      "the organizational unit, e.g. + 44 582 10101).") ]
   string TelephoneNumber;
};


// ==================================================================
// OtherOrgUnitInformation
// ==================================================================
[Version ("2.6.0"), Description (  
   "The OtherOrgUnitInformation class is used to provide "
   "additional information about an associated OrgUnit instance. "
   "This class is defined so as to incorporate commonly-used LDAP "
   "attributes to permit implementations to easily derive this "
   "information from LDAP-accessible directories.") ]
class CIM_OtherOrgUnitInformation : CIM_ManagedElement {  

   [Key, MaxLen (256), Description (  
      "CreationClassName indicates the name of the class or the "
      "subclass used in the creation of an instance. When used "
      "with the other key properties of this class, this property "
      "allows all instances of this class and its subclasses to "
      "be uniquely identified.") ]
   string CreationClassName;

   [Key, MaxLen (1024),Description (  
      "The Name property defines the label by which the object is "
      "known. In the case of an LDAP-derived instance, the Name " 
      "property value may be set to the distinguishedName of the "
      "LDAP-accessed object instance.") ]
   string Name;

   [Description (  
      "In the case of an LDAP-derived instance, the ObjectClass "
      "property value(s) may be set to the objectClass attribute "
      "values.") ]
   string ObjectClass[];

   [MaxLen (128), Description (  
      "This property describes the kind of business performed by an "
      "organizational unit.") ]
   string BusinessCategory[];

   [MaxLen (1024), Description (  
      "The Descriptions property values may contain human-readable "
      "descriptions of the object.  In the case of an LDAP-derived "  
      "instance, the description attribute may have multiple values "
      "that, therefore, cannot be placed in the inherited "
      "Description property.") ]
   string Descriptions[];

   [MaxLen (128), Description (  
      "This property is used for the organizational unit's telegram "
      "service.") ]
   string DestinationIndicator[];

   [Description (  
      "The organizational unit's facsimile telephone number.") ]
   string FacsimileTelephoneNumber[];

   [MaxLen (16), Description (  
      "The organizational unit's International ISDN number.") ]
   string InternationaliSDNNumber[];

   [Description (  
      "This property contains the name of a locality, such as a "
      "city, county or other geographic region.") ]
   string LocalityName[];

   [Description (  
      "The name of the organizational unit.") ]
   string OU[];

   [MaxLen (128), Description (  
      "The Physical Delivery Office Name property specifies the name "
      "of the city, village, etc. where a physical delivery office "
      "is situated.") ]
   string PhysicalDeliveryOfficeName[];

   [Description (  
      "The Postal Address property values specify the address "
      "information required for the physical delivery of postal "
      "messages by the postal authority to the organizational "
      "unit.") ]
   string PostalAddress[];

   [MaxLen (40), Description (  
      "The Postal Code property specifies the postal code of the "
      "organizational unit.  If this value is present it will be "
      "part of the object's postal address.") ]
   string PostalCode[];

   [MaxLen (40), Description (  
      "The Post Office Box property specifies the Post Office Box "
      "by which the organizational unit will receive physical "
      "postal delivery. If present, the property value is part of "
      "the object's postal address.") ]
   string PostOfficeBox[];

   [Description (  
      "The Preferred Delivery Method property specifies the "
      "organizational unit's preferred method to be used for "
      "communicating with it.") ]
   string PreferredDeliveryMethod;

   [Description (  
      "This property value is for use by X.500 clients in "
      "constructing search filters.") ]
   string SearchGuide[];

   [Description (  
      "In the case of an LDAP-derived instance, the See Also "
      "property specifies distinguishedName of other Directory "
      "objects which may be other aspects (in some sense) of the "
      "same real world object.") ]
   string SeeAlso[];

   [Description (  
      "The State or Province Name property specifies a state or "
      "province.") ]
   string StateOrProvince[];

   [MaxLen (128), Description (  
      "The Street Address property specifies a site for the local "
      "distribution and physical delivery in a postal address, i.e. "
      "the street name, place, avenue, and the number.") ]
   string Street[];

   [MaxLen (32), Description (  
      "The Telephone Number property specifies a telephone number of "
      "the organizational unit, e.g. + 44 582 10101).") ]
   string TelephoneNumber[];

   [Description (  
      "The Teletex Terminal Identifier property specifies the "
      "Teletex terminal identifier (and, optionally, parameters) for "
      "a teletex terminal associated with the organizational "
      "unit.") ]
   string TeletexTerminalIdentifier[];

   [Description (  
      "The Telex Number property specifies the telex number, country "
      "code, and answerback code of a telex terminal for the "
      "organization.") ]
   string TelexNumber[];

   [Octetstring, Description (  
      "In the case of an LDAP-derived instance, the UserPassword "
      "property may contain an encrypted password used to access "
      "the organizational unit's resources in a directory.") ]
   string UserPassword[];

   [MaxLen (15), Description (  
      "An X.121 address for the organization.") ]
   string X121Address[];
};


// ==================================================================
// MoreOrgUnitInfo
// ==================================================================
[Association, Version ("2.7.0"), Description (   
   "CIM_MoreOrgUnitInfo is an association used to extend the "
   "information in an CIM_OrgUnit class instance.") ]
class CIM_MoreOrgUnitInfo : CIM_Dependency {   

   [Min (1), Max (1), Override ("Antecedent"), 
      Description ("The OrgUnit which has more information.") ]
   CIM_OrgUnit REF Antecedent;   

   [Max (1), Override ("Dependent"), 
      Description ("Additional data concerning the OrgUnit.") ]
   CIM_OtherOrgUnitInformation REF Dependent; 
};        


// ==================================================================
// UserEntity
// ==================================================================
[Abstract, Version ("2.6.0"), Description (  
   "UserEntity is an abstract class that represents users.") ]
class CIM_UserEntity : CIM_OrganizationalEntity {  
};


// ==================================================================
// SystemAdministrator    
// ==================================================================
  [Association, Version ("2.6.0"), Description (   
   "CIM_SystemAdministrator is an association used to identify "
   "the UserEntity as a system administrator of a CIM_System.") ]    
  class CIM_SystemAdministrator : CIM_Dependency {   

   [Override ("Antecedent"), Description (   
      "The administered system.") ]    
   CIM_System REF Antecedent;   

   [Override ("Dependent"), Description (   
      "The UserEntity that provides the admininstrative function "
      "for the associated system.") ]    
   CIM_UserEntity REF Dependent;   
};   


// ==================================================================
// Person
// ==================================================================
[Version ("2.7.0"), Description (  
   "The Person object class is used to represent people.  The class "
   "is defined so as to incorporate commonly-used LDAP attributes to "
   "permit implementations to easily derive this information from "
   "LDAP-accessible directories.  This class's properties are a "
   "subset of a related class, OtherPersonInformation, which "
   "defines all the group properties and in array form for "
   "directory compatibility.") ]
class CIM_Person : CIM_UserEntity {  

   [Key, MaxLen (256), Description (  
      "CreationClassName indicates the name of the class or the "
      "subclass used in the creation of an instance. When used "
      "with the other key properties of this class, this property "
      "allows all instances of this class and its subclasses to "
      "be uniquely identified.") ]
   string CreationClassName;

   [Key, MaxLen (1024),Description (  
      "The Name property defines the label by which the object is "
      "known. In the case of an LDAP-derived instance, the Name "
      "property value may be set to the distinguishedName of the "
      "LDAP-accessed object instance.") ]
   string Name;

   [MaxLen (128), Description (  
      "This property describes the kind of business performed by an "
      "organization.") ]
   string BusinessCategory;

   [Required, Description (
      "A Common Name is a (possibly ambiguous) name by which the "
      "role is commonly known in some limited scope (such as an "
      "organization) and conforms to the naming conventions of the "
      "country or culture with which it is associated.") ]
   string CommonName;

   [Description (
      "Based on inetOrgPerson, the Employee Number property "
      "specifies a numeric or an alphanumeric identifier assigned to "
      "a person.") ]
   string EmployeeNumber;

   [Description (
      "Based on inetOrgPerson, the Employee Type property is used to "
      "identify the employer to employee relationship.  Typical "
      "values used may include 'Contractor', 'Employee', 'Intern', "
      "'Temp', 'External', and 'Unknown' but any value may be "
      "used.") ]
   string EmployeeType;

   [Description (  
      "The person's facsimile telephone number.") ]
   string FacsimileTelephoneNumber;

   [Description (
      "The Given Name property is used for the part of a person's "
      "name that is not their surname nor their middle name (i.e., "
      "their first name).") ]
   string GivenName;

   [MaxLen (32), Description (  
      "Based on RFC1274, the Home Phone property specifies a home "
      "telephone number for the person, e.g. + 44 582 10101).") ]
   string HomePhone;

   [Description (  
      "The Home Postal Address property values specify the home "
      "address information required for the physical delivery of "
      "postal messages by the postal authority.") ]
   string HomePostalAddress[];

   [Description (
      "From inetOrgPerson, the JPEG Phto property values may be used "
      "for one or more images of a person using the JPEG File "
      "Interchange Format.") ]
   string JPEGPhoto;

   [Description (  
      "This property contains the name of a locality, such as a "
      "city, county or other geographic region.") ]
   string LocalityName;

   [Description (  
      "Based on RFC1274, the mail box addresses for the person "
      "as defined in RFC822.") ]
   string Mail;

   [Description (  
      "The person's manager within the organization.  In the case of "
      "an LDAP-derived instance, the Manager property value may "
      "contain the distinguishedName of the Manager.") ]
   string Manager;

   [MaxLen (32), Description (  
      "Based on RFC1274, the Mobile Phone property specifies a "
      "mobile telephone number for the person, e.g. + 44 582 10101).") ]
   string Mobile;

   [Description (  
      "The name of an organizational unit related to the person.") ]
   string OU;

   [MaxLen (32), Description (  
      "Based on RFC1274, the Pager property specifies a pager "
      "telephone number for the person, e.g. + 44 582 10101).") ]
   string Pager;

   [Description (  
      "The Postal Address property values specify the address "
      "information required for the physical delivery of postal "
      "messages by the postal authority to the person.") ]
   string PostalAddress[];

   [MaxLen (40), Description (  
      "The Postal Code property specifies the postal code of the "
      "organization.  If this value is present it will be part of "
      "the object's postal address.") ]
   string PostalCode;

   [Description (
      "Based on inetOrgPerson, the person's preferred written or "
      "spoken language.") ]
   string PreferredLanguage;

   [Description (
      "Based on RFC1274, the Secretary property may be used to "
      "specify a secretary for the person.  In the case of an "
      "LDAP-derived object instance, the value may be a "
      "distinguishedName.") ]
   string Secretary;

   [Description (  
      "The State or Province Name property specifies a state or "
      "province.") ]
   string StateOrProvince;

   [Required, Description (
      "The Surname property specifies the linguistic construct that "
      "normally is inherited by an individual from the individual's "
      "parent or assumed by marriage, and by which the individual is "
      "commonly known.") ]
   string Surname;

   [MaxLen (32), Description (  
      "The Telephone Number property specifies a telephone number of "
      "the organization, e.g. + 44 582 10101).") ]
   string TelephoneNumber;

   [Description (
      "The Title property may be used to specify the person's "
      "designated position or function of the object within an "
      "organization, e.g., Manager, Vice-President, etc.") ]
   string Title;

   [Description (
      "A User ID property. Based on RFC1274, the property may be "
      "used to specify a computer system login name.") ]
   string UserID;
};


// ==================================================================
// OtherPersonInformation
// ==================================================================
[Version ("2.7.0"), Description (  
   "The OtherPersonInformation class is used to provide "
   "additional information about an associated Person instance. "
   "This class is defined so as to incorporate commonly-used LDAP "
   "attributes to permit implementations to easily derive this "
   "information from LDAP-accessible directories.") ]
class CIM_OtherPersonInformation : CIM_ManagedElement {  

   [Key, MaxLen (256), Description (  
      "CreationClassName indicates the name of the class or the "
      "subclass used in the creation of an instance. When used "
      "with the other key properties of this class, this property "
      "allows all instances of this class and its subclasses to "
      "be uniquely identified.") ]
   string CreationClassName;

   [Key, MaxLen (1024), Description (  
      "The Name property defines the label by which the object is "
      "known. In the case of an LDAP-derived instance, the Name "
      "property value may be set to the distinguishedName of the "
      "LDAP-accessed object instance.") ]
   string Name;

   [Description (  
      "In the case of an LDAP-derived instance, the ObjectClass "
      "property value(s) may be set to the objectClass attribute "
      "values.") ]
   string ObjectClass[];

   [Octetstring, Description (  
      "The Audio property may be used to store an audio clip of the "
      "person.") ]
   string Audio[];

   [MaxLen (128), Description (  
      "This property describes the kind of business performed by an "
      "organization.") ]
   string BusinessCategory[];

   [MaxLen (128), Description (
      "The Car License property is used to record the values of the "
      "vehicle license or registration plate associated with an "
      "individual.") ]
   string CarLicense[];

   [Description (
      "A Common Name is a (possibly ambiguous) name by which the "
      "role is commonly known in some limited scope (such as an "
      "organization) and conforms to the naming conventions of the "
      "country or culture with which it is associated.") ]
   string CommonName[];

   [Description (
      "The Country Name property specifies a country as defined in "
      "ISO 3166.") ]
   string CountryName[];

   [Description (
      "Based on inetOrgPerson, the Department Number is a code for "
      "department to which a person belongs.  This can be strictly "
      "numeric (e.g., 1234) or alphanumeric (e.g., ABC/123).") ]
   string DepartmentNumber[];

   [MaxLen (1024), Description (  
      "The Descriptions property values may contain human-readable "
      "descriptions of the object.  In the case of an LDAP-derived "  
      "instance, the description attribute may have multiple values "
      "that, therefore, cannot be placed in the inherited "
      "Description property.") ]
   string Descriptions[];

   [MaxLen (128), Description (  
      "This property is used for the organization's telegram "
      "service.") ]
   string DestinationIndicator[];

   [Description (
      "Based on inetOrgPerson, the Display Name property values are "
      "used when displaying an entry.") ]
   string DisplayName[];

   [Description (
      "Based on inetOrgPerson, the Employee Number property "
      "specifies a numeric or an alphanumeric identifier assigned to "
      "a person.") ]
   string EmployeeNumber;

   [Description (
      "Based on inetOrgPerson, the Employee Type property is used to "
      "identify the employer to employee relationship.  Typical "
      "values used may include 'Contractor', 'Employee', 'Intern', "
      "'Temp', 'External', and 'Unknown' but any value may be "
      "used.") ]
   string EmployeeType[];

   [Description (  
      "The person's facsimile telephone number.") ]
   string FacsimileTelephoneNumber[];

   [Description (
      "Based on liPerson, the GenerationQualifier property specifies "
      "a name qualifier that represents the person's generation "
      "(e.g., JR., III, etc.).") ]
   string GenerationQualifier[];

   [Description (
      "The Given Name property is used for the part of a person's "
      "name that is not their surname nor their middle name.") ]
   string GivenName[];

   [Description (
      "Based on liPerson, the Home Fax property specifies the "
      "person's facsimile telephone number at home.") ]
   string HomeFax[];

   [MaxLen (32), Description (  
      "Based on RFC1274, the Home Phone property specifies a home "
      "telephone number for the person, e.g. + 44 582 10101).") ]
   string HomePhone[];

   [Description (  
      "The Home Postal Address property values specify the home "
      "address information required for the physical delivery of "
      "postal messages by the postal authority.") ]
   string HomePostalAddress[];

   [Description (
      "Based on inetOrgPerson, the Initials property specifies the "
      "first letters of the person's name, typically the property "
      "values will exclude the first letter of the surname.") ]
   string Initials[];

   [MaxLen (16), Description (  
      "The person's International ISDN number.") ]
   string InternationaliSDNNumber[];

   [Description (
      "From inetOrgPerson, the JPEG Phto property values may be used "
      "for one or more images of a person using the JPEG File "
      "Interchange Format.") ]
   string JPEGPhoto[];

   [Description (  
      "Uniform Resource Identifier with optional label as defined in "
      "RFC2079.") ]
   string LabeledURI[]; 

   [Description (  
      "This property contains the name of a locality, such as a "
      "city, county or other geographic region.") ]
   string LocalityName[];

   [Description (  
      "Based on RFC1274, the mail box addresses for the person "
      "as defined in RFC822.") ]
   string Mail[];

   [Description (  
      "The person's manager within the organization.  In the case of "
      "an LDAP-derived instance, the Manager property value may "
      "contain the distinguishedName of the Manager.") ]
   string Manager[];

   [Description (
      "Based on liPerson, the middle name of the person.") ]
   string MiddleName[];

   [MaxLen (32), Description (  
      "Based on RFC1274, the Mobile Phone property specifies a "
      "mobile telephone number for the person, e.g. + 44 582 10101).") ]
   string Mobile[];

   [Required, Description (  
      "The name of the person's organization.") ]
   string OrganizationName[];

   [Description (
      "Based on RFC1274, the OrganizationalStatus property specifies "
      "a category by which a person is often referred to within an "
      "organization.  Examples of usage in academia might include "
      "undergraduate student, researcher, lecturer, etc.") ]
   string OrganizationalStatus[];

  [Description (  
      "Based on RFC1274, this property may be used for electronic "
      "mail box addresses other than RFC822 and X.400.") ]
   string OtherMailbox[];

   [Description (  
      "The name of an organizational unit related to the person.") ]
   string OU[];

   [MaxLen (32), Description (  
      "Based on RFC1274, the Pager property specifies a pager "
      "telephone number for the person, e.g. + 44 582 10101).") ]
   string Pager[];

   [Description (
      "Based on liPerson, the PersonalTitle property may be used to "
      "specify the person's personal title such as Mr., Ms., Dr., "
      "Prof. etc.") ]
   string PersonalTitle[];

   [Octetstring, Description (
      "Based on RFC1274, the Photo property may be used to specify a "
      "photograph for the person encoded in G3 fax as explained in "
      "recommendation T.4, with an ASN.1 wrapper to make it "
      "compatible with an X.400 BodyPart as defined in X.420.") ]
   string Photo[];

   [MaxLen (128), Description (  
      "The Physical Delivery Office Name property specifies the name "
      "of the city, village, etc. where a physical delivery office "
      "is situated.") ]
   string PhysicalDeliveryOfficeName[];

   [Description (  
      "The Postal Address property values specify the address "
      "information required for the physical delivery of postal "
      "messages by the postal authority to the person.") ]
   string PostalAddress[];

   [MaxLen (40), Description (  
      "The Postal Code property specifies the postal code of the "
      "organization.  If this value is present it will be part of "
      "the object's postal address.") ]
   string PostalCode[];

   [MaxLen (40), Description (  
      "The Post Office Box property specifies the Post Office Box "
      "by which the person will receive physical postal delivery. "
      "If present, the property value is part of the object's postal "
      "address.") ]
   string PostOfficeBox[];

   [Description (  
      "The Preferred Delivery Method property specifies the "
      "preferred method to be used for contacting the person.") ]
   string PreferredDeliveryMethod;

   [Description (
      "Based on inetOrgPerson, the person's preferred written or "
      "spoken language.") ]
   string PreferredLanguage;

   [Description (  
      "This property specifies a postal address suitable for receipt "
      "of telegrams or expedited documents, where it is necessary to "
      "have the recipient accept delivery.") ]
   string RegisteredAddress[];

   [Description (
      "Based on RFC1274, the Room Number property specifies the room "
      "number for the person.") ]
   string RoomNumber[];

   [Description (
      "Based on RFC1274, the Secretary property may be used to "
      "specify a secretary for the person.  In the case of an "
      "LDAP-derived object instance, the value may be a "
      "distinguishedName.") ]
   string Secretary[];

   [Description (  
      "In the case of an LDAP-derived instance, the See Also "
      "property specifies distinguishedName of other Directory "
      "objects which may be other aspects (in some sense) of the "
      "same real world object.") ]
   string SeeAlso[];

   [Description (  
      "The State or Province Name property specifies a state or "
      "province.") ]
   string StateOrProvince[];

   [MaxLen (128), Description (  
      "The Street Address property specifies a site for the local "
      "distribution and physical delivery in a postal address, i.e. "
      "the street name, place, avenue, and the number.") ]
   string Street[];

   [Description (
      "The Surname property specifies the linguistic construct that "
      "normally is inherited by an individual from the individual's "
      "parent or assumed by marriage, and by which the individual is "
      "commonly known.") ]
   string Surname[];

   [MaxLen (32), Description (  
      "The Telephone Number property specifies a telephone number of "
      "the organization, e.g. + 44 582 10101).") ]
   string TelephoneNumber[];

   [Description (  
      "The Teletex Terminal Identifier property specifies the "
      "Teletex terminal identifier (and, optionally, parameters) for "
      "a teletex terminal associated with the organization.") ]
   string TeletexTerminalIdentifier[];

   [Description (  
      "The Telex Number property specifies the telex number, country "
      "code, and answerback code of a telex terminal for the "
      "organization.") ]
   string TelexNumber[];

   [Octetstring, Description (  
      "A small image of the person's organization logo.") ]
   string ThumbnailLogo[];

   [Octetstring, Description (
      "A small image of the person.") ]
   string ThumbnailPhoto[];

   [Description (
      "The Title property may be used to specify the person's "
      "designated position or function of the object within an "
      "organization, e.g., Manager, Vice-President, etc.") ]
   string Title[];

   [Description (
      "Based on RFC1274, the UserID property may be used to specify "
      "a computer system login name.") ]
   string UserID[];

   [Description (  
      "A unique identifier that may be assigned in an environment to "
      "differentiate between uses of a given named person instance.") ]
   string UniqueIdentifier[];

   [Octetstring, Description (
      "Based on inetOrgPerson and for directory compatibility, the "
      "User Certificate property may be used to specify a public key "
      "certificate for the person.") ]
   string UserCertificate[];

   [Octetstring, Description (  
      "In the case of an LDAP-derived instance, the UserPassword "
      "property may contain an encrypted password used to access "
      "the person's resources in a directory.") ]
   string UserPassword[];

   [Octetstring, Description (
      "Based on inetOrgPerson and for directory compatibility, the "
      "UserPKCS12 property value may be used to provide a format "
      "for exchange of personal identity information.  The property "
      "values are PFX PDUs stored as Octetstrings.") ]
   string UserPKCS12[];

   [Octetstring, Description (
      "Based on inetOrgPerson, the User S/MIME Certificate property "
      "may be used to specify the person's an S/MIME (RFC1847) "
      "signed message with a zero-length body. It contains the "
      "entire certificate chain and the signed attribute that "
      "describes their algorithm capabilities.  If available, this "
      "property is preferred over the UserCertificate property for "
      "S/MIME applications.") ]  
   string UserSMIMECertificate[];

   [MaxLen (15), Description (  
      "An X.121 address for the organization.") ]
   string X121Address[];

   [Octetstring, Description (  
      "An X.500 specified unique identifier that may be assigned in "
      "an environment to differentiate between uses of a given named "
      "person object instance.") ]
   string X500UniqueIdentifier[];
};


// ==================================================================
// MorePersonInfo
// ==================================================================
[Association, Version ("2.7.0"), Description (   
   "CIM_MorePersonInfo is an association used to extend the "
   "information in a CIM_Person class instance.") ]
class CIM_MorePersonInfo : CIM_Dependency {   

   [Min(1), Max (1), Override ("Antecedent"), 
      Description ("The Person which has more information.") ]
   CIM_Person REF Antecedent;   

   [Max (1), Override ("Dependent"), 
      Description ("Additional data concerning the Person.") ]
   CIM_OtherPersonInformation REF Dependent; 
};        


// ===================================================================
// end of file
// ===================================================================
