Archetypes

Last modified 21 Nov 2025 09:13 +01:00
Archetype feature
This page is an introduction to Archetype midPoint feature. Please see the feature page for more details.

This page describes archetypes, a midPoint feature that lets you define meaningful subtypes of existing object types, such as different kinds of users, roles, or organizational units. Archetypes enable you to add business-specific structure, behavior, and presentation without custom coding.

Introduction

Archetypes in midPoint are a way to define types within types. They serve as a kind of subclassification of objects like users, roles, or organizational units. You can think of archetypes as semantic labels that describe what a specific object represents in your organizational context.

There are several basic concepts in identity management that are used extensively: user, role, organizational unit, service, assignment. While midPoint has excellent out-of-box support and customization options for these concepts, they break further down into more specific subtypes that have distinct meanings and behaviors. For example, there are many subtypes of users (employees, contractors, partners, customers) and orgs (company, section, division, project, workgroup).

This is where archetypes come in. They are are designed to sort objects to such subtypes. Each archetype can have a distinct look and feel, but it can also define specific behavior and policies. Archetypes do not replace midPoint object types like users or roles, instead, they extend them to express their business meaning. In other words, archetypes give structure and semantics to midPoint objects.

Archetypes make midPoint much more flexible without the need for complex customization or coding.

Archetypes

Archetypes are well-defined object subtypes. They build on top of existing midPoint object types, such as User, Org, or Role to provide more specific classifications.

For example, employee, contractor, project, workgroup, and application are all examples of archetypes. A project is only a special case of an organizational unit, much like division, section, company, workgroup, or any other concept that groups identities. An application is a special case of a service, same as mobile device, printer, cloud service, web API endpoint, and so on. All those concepts are just specializations of the object types that midPoint already has.

There is an enormous advantage to reusing the existing midPoint concepts. If projects from our example were modeled as organizational units, they would "inherit" all the functionality from an organizational unit out-of-the-box. This means that projects can have managers, they may be used for delegated administration, they can grant privileges to members and managers, and so on. Whatever is already implemented for organizational units, can instantly be reused for projects.

In a similar fashion, an application can inherit an existing functionality from a service (e.g., the ability to grant privileges). This kind of reuse is very convenient and extremely powerful.

The following table lists commonly used archetypes and their mapping to primary midPoint object types:

Primary Object Type Archetype

UserType

Employee, Contractor, Partner, Supplier, Student, Teacher

OrgType

Company, Division, Department, Section, Project, Team, Workgroup, Task force, Committee, Class, Research team

RoleType

Business role, Application role, Metarole, Teaching engagement, Protection scope, Consent target

ServiceType

Application, Device, Printer, Provider, Network, Web API endpoint, Robot

For example, UserType can be further classified using archetypes as follows:

graph TD %% Object type at the top A[UserType] --> B['Employee'] A --> C['Contractor'] A --> D['Service Account'] %% Group archetypes visually subgraph Archetypes B C D end %% Users under each archetype B --> E[User: Alice] B --> F[User: Charlie] C --> G[User: Bob] C --> H[User: Dana] D --> I[User: SystemBot] %% Styles style B fill:#e5f5ff,stroke:#007acc style C fill:#e5f5ff,stroke:#007acc style D fill:#e5f5ff,stroke:#007acc style E fill:#e8ffe8,stroke:#228b22 style F fill:#e8ffe8,stroke:#228b22 style G fill:#e8ffe8,stroke:#228b22 style H fill:#e8ffe8,stroke:#228b22 style I fill:#e8ffe8,stroke:#228b22

Archetypes may work as metaroles.

To apply an archetype to an object, assign the archetype to that object as you would normally assign a role. Once assigned, the archetype applies to that object.

This mechanism can also be reversed, and archetypes may be assigned from ordinary roles or orgs.

An archetype definition is a first-class midPoint object. Therefore, it has all the usual advantages: it can be organized, delegated administration can be applied, it can be owned, it can have a managed lifecycle, it can be localized within a tenant, and so on.

Archetypes and subtype

MidPoint 3.x used the subtype mechanism to implement parts of the functionality provided by archetypes. Archetypes should provide a replacement for the subtype functionality (with some limitations). Subtype still works in midPoint 4.x, but it is no longer a recommended mechanism - except for the assignment subtype, which is still useful. Subtypes will be most likely deprecated sometime during the lifetime of midPoint 4.x, and the plan is to remove them completely in midPoint 5.0.

Historical note: the original idea was to implement archetypes as an extension of the subtype functionality. But during a detailed design phase of the archetype functionality, it was discovered that we can implement the functionality better. The current form of the archetype functionality fits perfectly with the existing midPoint features, and it is much more powerful than originally planned. Therefore, the idea of subtype-based archetypes was dismissed.

Synergy

Archetype functionality is a synergistic feature. It is designed to fit together with existing midPoint features, such as RBAC and organizational structure.

Birthrights

Archetypes are the primary tool to define birthright provisioning.
Archetypes behave as roles. Therefore, any privileges specified in archetype inducements are automatically applied to all the objects that have the archetype. This approach can be used to apply birthrights to objects. For example, archetypes can specify baseline privileges for all employees or students.

Moreover, archetypes may work as metaroles, specifying common behavior for object types. For example, Project archetypes may specify common behavior for all projects, including baseline authorization for project members and managers. Overall, archetypes provide a very flexible and powerful mechanism to specify birthrights.

User interface support

Support for custom archetype presentation is an inherent part of archetype functionality. Each archetype can specify details of an object presentation, such as custom object icon and color. MidPoint user interface will display archetyped objects with that icon and color. This makes it easy to distinguish, for example, employees from contractors, and business roles from metaroles.

Archetypes are integrated with views, and they can be used as implicit collections. Therefore, it is easy to set up a view that will display all employees, business roles, and so on. The list of all archetyped objects can be available directly from the midPoint menu.

Archetypes can also be used with collections. MidPoint supports a form of inheritance for collections which enables you to set up collections such as "active employees" that combine archetypes with additional search filters.

Synergy: archetypes and object lists/views

Archetype functionality is a synergistic feature and it is designed as a natural extension of another midPoint feature: Object Collections and Views.
It is expected that the capabilities of object views will improve in time, specifically with respect to user experience, customization support, and so on. Each time collections and views are improved, the same improvements will also be reflected in archetypes.

Archetypes allow specifying assignment relations. This means that archetypes can limit the scope of objects and relations that are used in assignments to the archetyped object. For example, a business role may specify that it can be assigned to any user, but only employees may be owners and approvers of the role. Except for that, no other assignments are allowed. This is also supported in the user interface. The user interface will render appropriate buttons for the archetype and limit assignment selection dialogs.

Configuration

See Archetype Configuration for configuration details.

Future of archetypes

Was this page helpful?
YES NO
Thanks for your feedback