The only accepted schema for now is the inetOrgPerson and only that is visible in stock LDAP clients like e.g. the mozilla addressbook. inetOrgPerson is basicly the data of a Person including one address, phone, fax, mobile, private phone, email, url and a companyname.
I propose to use in LDAP:
a schema based on the inetOrgPerson (that means all that fields plus some own)
two inetOrgPerson record/node for each person in an organisation:
with its private data linked to the other one by its cn (common name), uid (user-id) or an other id outside the inetOrgPerson schema.
with its org-data linked to it's organisation by the organisations name. That record dublicates/mirrors the company address, and the persons names (readonly from stock LDAP clients). It's only genuine data is phone, fax, mobile, email, url.
the cn of the privat address should include a '(privat)', so u see the difference between the two in a stock LDAP client
we use an other inetOrgPerson (or other schema) record/node for the organisation itself, includeing its address, central phone, fax.
the linking of this 3 is done by unique org- and person-id's. These id's are either readonly or outside the inetOrgPerson schema (in an own schema, which includes / is based on the inetOrgPerson schema). I would prefer the last, as this would allow read/write access for other clients.
Why would we need up to 2 inetOrgPerson for one person?
Else your are not able to select private AND buisness mail, phone, fax, address in a stock client.
The eGW GUI / addressbook (and the (new) api-contacts-class) will mix these speparate nodes and display them in a way addbook does it today:
org's containing several persons
persons contained in zero or one org
the contacts-id (which is needed from the api contacts class, is either the org-id or the person-id, which both together have to be unique.
What can we do to have a better match with inetOrpPerson