Directory Services

When to Extend the Schema

Extend the schema only if no existing object class fulfills the requirements of your application. Extending the schema is a complex operation; schema changes are replicated to every domain controller in the enterprise forest. Consider this step carefully.

The schema can be extended in on of three ways:

  1. Derive a new subclass from an existing class - the subclass has all of the attributes of the superclass and any additional attributes you specify. Derive from an existing class when:
  2. Add additional attributes to an existing class and/or add additional possible parents for the class. When adding multiple attributes, you can do it in a structured way by defining an auxiliary class and adding that auxiliary class to the existing class.

    Modification of an existing class is required when your application requires the ability to extend existing objects of the class. For example, to add application-specific data to the User object, you would normally extend the class User, because you must handle existing Users and not just special Users created by your application.

  3. Create an entirely new class with the attributes you want. Create a completely new class (that is, a class derived from "Top") when no existing class meets your needs.

When you subclass an existing class, any user interface items associated to the original class will not be inherited by the subclass. For example, if you subclass a user object, the property pages and menu items associated to user are not inherited. For this reason, it is preferable to extend an existing object or create an auxiliary class rather than create a subclass.

Whether you subclass an existing class or modify an existing class, you will want to extend tools like the Active Directory Users and Computers snap-in to manage the extended attributes of the objects. For more information, see Extending the User Interface for Directory Objects.