I have a linux based openldap server on which I have implemented the mhs schema defined in rfc 2294 (included at end of post).
dn gn=mary,sn=smith,ou=abc,o=aaa,p=xxx,a=yyy,c=ca with attributes gn=mary,sn=smith
dn gn=john,sn=smith,ou=abc,o=aaa,p=xxx,a=yyy,c=ca with attributes gn=john,sn=smith
dn gn=mary,sn=smith,ou=abc,o=aaa,p=xxx,a=yyy,c=ca with attributes gn=mary,sn=smith
I can do this using the linux slapadd, but when I try to do this via .net, it reports an object does not exist error, presumably because it expects a parent branch for sn=smith,ou=abc,o=aaa,p=xxx,a=yyy,c=ca to exist. From my understanding of LDAP and the directory server architecture, this requirement should not exist. Is there a problem with the schema I have defined?
#------------------------------------------------------------------------------
# amhs_rfc2294.schema - Ubitech Aeronautical Message Handling System LDAP
# Schema. Based on RFC 2294.
#
# Notes:
#
# Abbreviations:
# oc object class
# at attribute type
# mhs message handling system
#
#------------------------------------------------------------------------------
# Module MTSUpperBounds (X.411:06/1999)
#
# joint-iso-itu-t identifier:
# 6 mhs
# 3 mts
# 0 modules
# 3 upper-bounds
# 1 version-1999
#
#------------------------------------------------------------------------------
# RFC 2294
#
# mhs-ds identifer:
# 1 iso
# 3 org
# 6 dod
# 1 internet
# 4 private
# 1 enterprises
# 453 isode-consortium
# 7 mhs-ds
#
#------------------------------------------------------------------------------
# Field lengths used from MTSUpperBounds (X.411:06/1999)
#
# ub-domain-name-length INTEGER ::= 16
# ub-organization-name-length INTEGER ::= 64
# ub-organizational-unit-name-length INTEGER ::= 32
# ub-common-name-length INTEGER ::= 64
# ub-x121-address-length INTEGER ::= 16
# ub-domain-defined-attribute-type-length INTEGER ::= 8
# ub-domain-defined-attribute-value-length INTEGER ::= 128
# ub-terminal-id-length INTEGER ::= 24
# ub-numeric-user-id-length INTEGER ::= 32
# ub-country-name-numeric-length INTEGER ::= 3
# ub-surname-length INTEGER ::= 40
# ub-given-name-length INTEGER ::= 16
# ub-initials-length INTEGER ::= 5
# ub-generation-qualifier-length INTEGER ::= 3
#
#------------------------------------------------------------------------------
# Syntaxes used from RFC 2252
#
# 1.3.6.1.4.1.1466.115.121.1.15 Directory String
# 1.3.6.1.4.1.1466.115.121.1.26 IA5 String
# 1.3.6.1.4.1.1466.115.121.1.36 Numeric String
#
#------------------------------------------------------------------------------
objectIdentifier mhs-ds 1.3.6.1.4.1.453.7
objectIdentifier tree mhs-ds:2
objectIdentifier oc tree:1
objectIdentifier at tree:2
objectIdentifier oc-admd oc:1
objectIdentifier oc-mhs-country oc:2
objectIdentifier oc-mhs-domain-defined-attribute oc:3
objectIdentifier oc-mhs-named-object oc:4
objectIdentifier oc-mhs-organization oc:5
objectIdentifier oc-mhs-organizational-unit oc:6
objectIdentifier oc-mhs-person oc:7
objectIdentifier oc-mhs-x121 oc:8
objectIdentifier oc-prmd oc:9
objectIdentifier oc-mhs-terminal-id oc:10
objectIdentifier oc-mhs-numeric-user-id oc:11
objectIdentifier at-admd-name at:1
objectIdentifier at-mhs-common-name at:2
objectIdentifier at-mhs-domain-defined-attribute-type at:3
objectIdentifier at-mhs-domain-defined-attribute-value at:4
objectIdentifier at-mhs-numeric-country-name at:5
objectIdentifier at-mhs-organization-name at:6
objectIdentifier at-mhs-organizational-unit-name at:7
objectIdentifier at-unused-xx01 at:8
objectIdentifier at-unused-xx02 at:9
objectIdentifier at-prmd-name at:10
objectIdentifier at-unused-xx03 at:11
objectIdentifier at-x121-address at:12
objectIdentifier at-mhs-terminal-id-name at:13
objectIdentifier at-mhs-numeric-user-id-name at:14
objectIdentifier at-mhs-surname at:15
objectIdentifier at-mhs-given-name at:16
objectIdentifier at-mhs-initials at:17
objectIdentifier at-mhs-generation-qualifier at:18
#------------------------------------------------------------------------------
# MHS Country Object
attributetype ( at-mhs-numeric-country-name
NAME 'mHSNumericCountryName'
EQUALITY numericStringMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.36{3}
SINGLE-VALUE )
objectclass ( oc-mhs-country
NAME 'mHSCountry'
SUP country
MAY ( mHSNumericCountryName )
X-ORIGIN 'RFC2294' )
#------------------------------------------------------------------------------
# MHS ADMD Object
attributetype ( at-admd-name
NAME 'aDMDName'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} )
objectclass ( oc-admd
NAME 'aDMD'
SUP top
MUST ( aDMDName )
X-ORIGIN 'RFC2294' )
#------------------------------------------------------------------------------
# MHS PRMD Object
attributetype ( at-prmd-name
NAME 'pRMDName'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} )
objectclass ( oc-prmd
NAME 'pRMD'
SUP top
MUST ( pRMDName )
X-ORIGIN 'RFC2294' )
#------------------------------------------------------------------------------
# MHS Organisation Object
attributetype ( at-mhs-organization-name
NAME 'mHSOrganizationName'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )
objectclass ( oc-mhs-organization
NAME 'mHSOrganization'
SUP top
MUST ( mHSOrganizationName )
X-ORIGIN 'RFC2294' )
#------------------------------------------------------------------------------
# MHS Organisational Unit Object
attributetype ( at-mhs-organizational-unit-name
NAME 'mHSOrganizationalUnitName'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32} )
objectclass ( oc-mhs-organizational-unit
NAME 'mHSOrganizationalUnit'
SUP top
MUST ( mHSOrganizationalUnitName )
X-ORIGIN 'RFC2294' )
#------------------------------------------------------------------------------
# MHS Person Object
attributetype ( at-mhs-surname
NAME 'mHSSurname'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{40}
SUP surname )
attributetype ( at-mhs-given-name
NAME 'mHSGivenName'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16}
SUP givenName )
attributetype ( at-mhs-initials
NAME 'mHSInitials'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{5}
SUP initials )
attributetype ( at-mhs-generation-qualifier
NAME 'mHSGenerationQualifier'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{3}
SUP generationQualifier )
objectclass ( oc-mhs-person
NAME 'mHSPerson'
SUP top
MUST ( mHSSurname )
MAY ( mHSGivenName $ mHSInitials $ mHSGenerationQualifier )
X-ORIGIN 'RFC2294' )
#------------------------------------------------------------------------------
attributetype ( at-mhs-common-name
NAME 'mHSCommonName'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{64} )
objectclass ( oc-mhs-named-object
NAME 'mHSNamedObject'
SUP top
MUST ( mHSCommonName )
X-ORIGIN 'RFC2294' )
#------------------------------------------------------------------------------
attributetype ( at-x121-address
NAME 'mHSX121Address'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{16} )
objectclass ( oc-mhs-x121
NAME 'mHSX121'
SUP top
MUST ( mHSX121Address )
X-ORIGIN 'RFC2294' )
#------------------------------------------------------------------------------
attributetype ( at-mhs-domain-defined-attribute-type
NAME 'mHSDomainDefinedAttributeType'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{8}
SINGLE-VALUE )
attributetype ( at-mhs-domain-defined-attribute-value
NAME 'mHSDomainDefinedAttributeValue'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128}
SINGLE-VALUE )
objectclass ( oc-mhs-domain-defined-attribute
NAME 'mHSDomainDefinedAttribute'
SUP top
MUST ( mHSDomainDefinedAttributeType $ mHSDomainDefinedAttributeValue )
X-ORIGIN 'RFC2294' )
#------------------------------------------------------------------------------
attributetype ( at-mhs-terminal-id-name
NAME 'mHSTerminalIDName'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{24} )
objectclass ( oc-mhs-terminal-id
NAME 'mHSTerminalID'
SUP top
MUST ( mHSTerminalIDName )
X-ORIGIN 'RFC2294' )
#------------------------------------------------------------------------------