In this example, we will publish memberships to a SQL table with two columns: group_name and subject_id

Youtube screen video

Note: in 2.6.5 you need to set a membership group and entity foreign key column, which hopefully in a subsequent version you will not need to do

Note: in 2.6.5 you need to edit the configuration directly after you are done with your wizard config to set each membership column as select/insert/update

DDL

(mysql in this case but could go to any database)

CREATE TABLE some_provisioning_table (
  group_name varchar(1024) NOT NULL,
  subject_id varchar(100) NOT NULL
);

Config

provisioner.some_sql.class = edu.internet2.middleware.grouper.app.sqlProvisioning.SqlProvisioner
provisioner.some_sql.dbExternalSystemConfigId = grouper
provisioner.some_sql.deleteMemberships = true
provisioner.some_sql.deleteMembershipsIfNotExistInGrouper = true
provisioner.some_sql.insertMemberships = true
provisioner.some_sql.logAllObjectsVerbose = true
provisioner.some_sql.membershipEntityForeignKeyColumn = subject_id
provisioner.some_sql.membershipGroupForeignKeyColumn = group_name
provisioner.some_sql.membershipPrimaryKey = group_name, subject_id
provisioner.some_sql.membershipTableName = some_provisioning_table
provisioner.some_sql.numberOfMembershipAttributes = 2
provisioner.some_sql.operateOnGrouperMemberships = true
provisioner.some_sql.provisioningType = membershipObjects
provisioner.some_sql.selectMemberships = true
provisioner.some_sql.showAdvanced = true
provisioner.some_sql.subjectSourcesToProvision = jdbc,source1
provisioner.some_sql.tableStructures = defaultTableStructure
provisioner.some_sql.targetMembershipAttribute.0.insert = true
provisioner.some_sql.targetMembershipAttribute.0.isFieldElseAttribute = false
provisioner.some_sql.targetMembershipAttribute.0.name = group_name
provisioner.some_sql.targetMembershipAttribute.0.select = true
provisioner.some_sql.targetMembershipAttribute.0.translateExpression = ${grouperProvisioningGroup.name}
provisioner.some_sql.targetMembershipAttribute.0.translateExpressionType = translationScript
provisioner.some_sql.targetMembershipAttribute.0.update = true
provisioner.some_sql.targetMembershipAttribute.1.insert = true
provisioner.some_sql.targetMembershipAttribute.1.isFieldElseAttribute = false
provisioner.some_sql.targetMembershipAttribute.1.name = subject_id
provisioner.some_sql.targetMembershipAttribute.1.select = true
provisioner.some_sql.targetMembershipAttribute.1.translateExpression = ${grouperProvisioningEntity.subjectId}
provisioner.some_sql.targetMembershipAttribute.1.translateExpressionType = translationScript
provisioner.some_sql.targetMembershipAttribute.1.update = true

otherJob.some_sql_full.class = edu.internet2.middleware.grouper.app.provisioning.GrouperProvisioningFullSyncJob
otherJob.some_sql_full.provisionerConfigId = some_sql
otherJob.some_sql_full.quartzCron = 0 0 4 * * ?

Note: you need to set groups/folders as provisionable

Wizard


 




  • No labels