In this example, we will publish memberships to a SQL table with two columns: group_name and subject_id
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