Grouper MidPoint provisioner
The midPoint provisioner pushes Grouper groups and memberships into a set of database tables that Evolveum midPoint reads from. It is a trimmed-down form of the Grouper SQL provisioner: you supply a database external system and a table-name prefix, and Grouper maintains the gr_mp_* tables described below.
Available in v2.6.17+ (October 2022).
Privileges: creating and editing a provisioner configuration in the UI requires a Grouper system administrator (a member of the wheel group / running as root). Ordinary users cannot configure provisioners.
External system: database
The midPoint provisioner uses a database external system. Create one as shown below.
DDL
The database between Grouper and midPoint can be any supported type. Example DDL for each is below.
Postgres
MySQL
Oracle
Provisioner configuration
The midPoint provisioner is essentially a trimmed-down SQL provisioner. You only enter the prefix for the tables (midPointTablesPrefix) and Grouper assumes the rest of each name. For example, with the prefix gr shown below, Grouper expects the tables to be named gr_mp_groups, gr_mp_memberships, and so on.
Deleted rows are not removed immediately; they are flagged and then purged after a configurable interval (sqlRemoveDeletedDataAfterHours, default 168 hours = one week).
Data model
How Grouper maps groups, subjects, and memberships into the database tables:
The provisioning target is chosen from a single-assign metadata attribute in Grouper.
The provisioner can map whatever it needs to
group_name,display_name,id_index, anddescription.id_indexis a numeric bigint that can be used for efficient foreign keys.The group table has common columns that may be used or left empty.
When Grouper changes a record it updates the
last_modifiedcolumn, which can be used as a change log.Data is not deleted at first; instead the
deletedflag is set. Flagged rows are purged after the configured interval (default one week).The
deletedvaluesTandFare one-character strings, not boolean database types.Group attributes are generally single-valued but can be multi-valued.
The subject
subject_idmust be something midPoint can use to look up a user — ideally the Grouper subject id.Two operations will not occur in the same millisecond, so
last_modifiedis sequential and unique.
Example data:
gr_mp_groups
| id_index | display_name | description |
|
|
|---|---|---|---|---|---|
| 34 | Some:Group | This group is here because | xx1 | T |
| 45 |
|
| xx2 | F |
| 47 |
|
| xx3 | T |
gr_mp_group_attributes
group_id_index | attribute_name | attribute_value |
|
|
|---|---|---|---|---|
| something | someValue | xx1 | T |
| something1 | anotherValue | xx2 | F |
| something2 | aValue | xx3 | T |
gr_mp_memberships
|
|
|
|
|---|---|---|---|
|
| yy1 | T |
|
| yy2 | F |
gr_mp_subjects
|
|
|
|
|---|---|---|---|
|
| yy1 | T |
|
| yy2 | F |
|
| yy3 | T |
gr_mp_subject_attributes
|
|
| last_modified |
|
|---|---|---|---|---|
|
| yy1 |
| T |
|
| yy2 |
| F |
|
| yy3 |
| T |