Platform SDK: Active Directory, ADSI, and Directory Services

When to Extend the Schema

Extend the schema only if no existing object class meets your needs. Extending the schema is a "heavy weight" operation; schema changes are replicated to every domain controller in the enterprise. Consider your needs carefully and assess whether an extension is really necessary.

The schema can be extended in 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 instance, to add application-specific information to the User object, you'd normally extend the class User, because you need to deal with existing Users 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.

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.