You can extend the metamodel in the following ways:
Add or sub-classify new kinds of objects:
Metaclasses (Profile) – to sub-classify objects.
Stereotypes (Profile) [for metaclasses and stereotypes only] – to sub-classify objects.
Criteria (Profile) – to evaluate conditions to sub-classify objects.
Extended Objects, Sub-Objects, and Links (Profile) – to create new kinds of objects.
Provide new ways of viewing connections between objects:
Add new properties to objects:
Extended Attributes (Profile) – to provide extra metadata.
Extended Collections and Compositions (Profile) – to enable manual linking between objects.
Calculated Collections (Profile) – to automate linking between objects.
Forms (Profile) – to display custom property tabs or dialog boxes.
Custom Symbols (Profile) – to help you visually distinguish objects.
Add constraints and validation rules to objects:
Custom Checks (Profile) – to provide data testing.
Event Handlers (Profile) – to invoke methods when triggered by an event.
Execute commands on objects:
Methods (Profile) – to be invoked by other profile extensions such as menus and form buttons (written in VBScript).
Menus (Profile) [for metaclasses and stereotypes only] – to customize PowerDesigner menus.
Generate objects in new ways:
Templates and Generated Files (Profile) – to customize generation.
Transformations and Transformation Profiles (Profile) – to automate changes to objects at generation or on demand.
Since you can attach several resource files to a model (for example, a target language and one or more extended model definitions) you can create conflicts, where multiple extensions with identical names (for example, two different stereotype definitions) are defined on the same metaclass in separate resource files. In case of such conflicts, the extended model definition extension usually prevails. When two XEMs are in conflict, priority is given to the one highest in the list.