h2. The SchemaManager Apache DS has to keep the schema elements available from all the parts of the server. This is done through what we call the *SchemaManager*. It hides all the internal structure from the users. h3. Description The *SchemaManager* stores all the Schema elements (*[AttributeTypes (e)]*, *[ObjectClasses (e)]*, ... Internally, we store those elements into the *Registries*, which are hives where each Schema Objects are stored. From the user point of view, the *SchemaManager* is seen as a representation of the available schemas. It can of course be extended, or modified, by adding or removing some schema elements. The server has one instance of a *SchemaManager*, which is used internally, and a user won't control it, in any case. On the client side, we can load a *SchemaManager* either from the server (and then we have a duplicated instance), or from existing schema files. We can even create a brand new *SchemaManager* and fill it with all what we need. h3. Content The *SchemaManager* stores all the 11 kind of schema elements : || Name || | *[ObjectClass (e)]* | | *[AttributeType (...)]* | | *[LdapSyntax (e)]* | | *[MatchingRule (e)]* | | *[DITContentRule (e)]* | | *[DITStructureRule (e)]* | | *[NameForm (e)]* | | *[MatchingRuleUse (e)]* | | _*[SyntaxChecker (e)]{*}_ | | _*[Normalizer (e)]{*}_ | | _*[LdapComparator (e)]{*}_ | The last three elements are ApacheDS specific. All those elements have some tight relationships. The following schema expose all the relations between all those elements : !SchemaObjects.png|border=1! h3. Using a SchemaManager