When upgrading from Grouper v5 to another v5 container, this wiki will consolidate all the steps needed to perform that upgrade.

See information on Grouper Versioning here

Note, these are in reverse order, so go from bottom to top

DateUpgrading from versionUpgrading to VersionNote for versionImportanceJiraStep needed if...Description
2024/03/19ALLALL5.9.0Not important

GRP-5379

You run Grouper

Tomcat was upgraded, make sure any tomcat things work in UI/WS, including logs, SSL, authentication, etc

2024/03/10ALLALL5.8.1Medium important

GRP-5312

If you use the provisioning framework and have too much memory allocated to your daemon

Try bumping down your daemon memory to 16g (16g in container and 13g heap) and see if you still have memory problems. 
Or if you had more than 32g, try 32g container and 28g heap.

2024/03/05ALLALL5.8.3Medium important

GRP-5346

If you use Grouper

Group sync jobs (full sync push/pull involving another Grouper instance) are now run using otherJobs. 

This applies if you have grouper.properties configs that start with "syncAnotherGrouper" and if you have daemon jobs that start with "MAINTENANCE__groupSync__".

If so, then go to the Daemon Jobs screen in the UI and add a daemon job for each group sync.  The daemon type is "Group sync another Grouper full sync".  The Jira has a screenshot of this.

2024/03/03ALLALL5.8.2Medium important

GRP-5314

If you use Grouper

Config property  changeLog.enabledDisabled.queryIntervalInSeconds  renamed to  otherJob.enabledDisabled.queryIntervalInSeconds.  See Jira and adjust the value of the new property if you're not using the default.

2024/03/03ALLALL5.8.2Not important

GRP-5268

You run Grouper and use the daemon screen

Note that the change log temp daemon and composite change log consumer run continuously. 
If you want to see progress show subjobs (checkbox is default checked in v5).  Note you might
see some refactored daemons in error state for a few minutes until things switch over...

2024/03/03ALLALL5.8.2Not important

GRP-5340

You run Grouper and have any rules

2024/02/275.7.1ALL5.8.1Medium important

GRP-5310

You use self signed certs for tomcat

See Jira and adjust env vars

2024/02/27ALLALL5.8.1Medium important

GRP-5302

Your grouper credential cannot do DDL

See the Jira and run the DDL
2024/01/01ALLALL5.7.0Important

GRP-5228

If you have existing data fields or rows

You need to edit them and add a description

2024/01/01ALLALL5.7.0Medium important

GRP-5228

If you expect tomcat access logs to be in /tmp (previous default), they are not in /opt/grouper/logs

Set this variable:  GROUPER_TOMCAT_LOG_ACCESS_DIRECTORY=/tmp

2023/12/27ALLALL5.7.0Medium important

GRP-5231
GRP-5223
GRP-5231

If you customize the server.xml for tomcat SSL, remote IP valve, or rewrite valve

Remove your custom server.xml and use the env variables

2023/12/27ALLALL5.7.0Medium important

GRP-5218

If you set this in grouper.properties

grouper.json.serialize.deserialize.useLegacy =  true

Remove it

2023/11/26ALLALL5.6.0Medium important


If you have a MidPoint provisioner and do not have foreign keys with cascade delete

Either drop the MidPoint tables and use the new DDL, or add cascade delete to the foreign keys on the attribute and membership tables

2023/11/26

ALL

ALL5.6.0Medium important

GRP-5048

You use LDAP

Test your LDAP subject source, loaders, and provisioners, as Ldaptive has been upgraded

2023/11/20ALLALL4.9.0, 5.6.0Medium important

GRP-5130

If you use the zoom provisioner / loader

A 3rd party library was updated for security, test your integration.  Note set this
explicitly in grouper-loader.properties, the default will change from true to false.

#  if   reactivating users,  this   will assign a license (user type  2 )
zoom.myConfigId.licenseReactivatedUsers

2023/11/20ALLALL4.9.0, 5.6.0Medium important

GRP-5139

If you use the OIDC for UI/WS authentication

A 3rd party library was updated for security, test your authentication

2023/11/20ALLALL4.9.0, 5.6.0Medium important

GRP-5140

If you use the legacy (non provisioning framework) box provisioner

A 3rd party library was updated for security, test your provisioner or upgrade to the
provisioning framework

2023/11/20ALLALL4.9.0, 5.6.0Medium important

GRP-5141

If you use the legacy (non provisioning framework) google apps provisioner

A 3rd party library was updated for security, test your provisioner or upgrade to the
provisioning framework

2023/11/20ALLALL4.9.0, 5.6.0Medium important

GRP-5142

If you use Grouper

JSON marshalling changed to be higher performance and less likely to 
leak memory.  You can use this in grouper.properties to revert to old if you have an issue:

grouper.json.serialize.deserialize.useLegacy =  true

Report any issues you have if you have to revert

2023/11/20ALLALL4.9.0, 5.6.0Medium important

GRP-5082

If you LDAP loaders of type: list of groups or groups from attributes, and grouper-loader.properties:

loader.ldap.requireTopStemAsStemFromConfigGroup =  true   or  default

You can now specify any stems to be the top stem, or you can
use a stem near the loader configured group.  After upgrading, run the diagnostics
or full sync on your loader and make sure the destination stays the same and 
does not change.  Might want to temporarily remove the SQL like string
if applicable so the existing groups do not get deleted.

2023/11/04

v2.5.0-v2.5.68,
v4.0.0-v4.7.2,
v5.0.0-v5.4.0

ALL4.5.0Not important

GRP-5107

If you were affected by the authentication bypass vulnerability and installed the remediation

2023/10/21ALLALL5.2.0Important
If you use GrouperFollow all v4 upgrade instructions
2023/10/04ALLALL5.4.0Important

GRP-4968

If you use deprovisioning

This defaults to true to veto deprovisioned users from being added to groups.  If you dont want want, set to false in grouper.properties

grouperHook.MembershipVetoIfDeprovisionedHook.autoRegister = true
2023/07/04ALLALL5.2.0Important
If you use GrouperLook at DDL changes and apply the updates manually
2023/07/04ALLALL5.2.0Important
If you use GrouperFollow all v4 upgrade instructions
2023/03/30ALLALL5.0.3Important


If you use GrouperDDL updates (Note: these are significant.  You need to stop all updates when starting the daemon and running the upgrade task daemon)
2023/03/28ALLALL5.0.3Important


If you use Grouper SOAP WSSOAP is no longer in the Grouper container, you can install it in your image derived from Grouper (not recommended), or refactor your WS clients
2023/03/28ALLALL5.0.3Important


If you run a process in the container other than the built in processes (e.g. sshd)The supervisor is no longer in the Grouper container.  If you start a process in your image derived from Grouper, you can install supervisor in your image derived from grouper, or make other arrangements
2023/03/28ALLALL5.0.3Important


If you use SAML in the UI

The Shib SP is no longer in the Grouper container.  You can either switch to OIDC, use the Unicon authn SAML, install the shib SP in your image derived from Grouper, or use a sidecar SP container

Remove any SP environment variables passed to the container

2023/03/28ALLALL5.0.3Important


If you use Apache in the grouper container

Apache is no longer in the Grouper container.  You can either use tomcat, install apache in your image derived from Grouper, or use a sidecar apache container.

Remove any Apache environment variables passed to the container


If you want to run v5 locally, you can do something like this (change port, version, database url if not on mac):

$ docker run --name postgres -e POSTGRES_PASSWORD=pass -d -p 5432:5432 postgres:14
$ docker exec -it -u postgres postgres psql
# CREATE USER grouper PASSWORD 'pass';
# CREATE DATABASE grouper;
# GRANT ALL PRIVILEGES ON DATABASE grouper TO grouper;
# \q
    docker run -d -p 8081:8080 --name my-grouper \
           -e GROUPER_UI_GROUPER_AUTH=true \
           -e GROUPER_SELF_SIGNED_CERT=true \
           -e GROUPER_AUTO_DDL_UPTOVERSION='v5.*.*' \
           -e GROUPER_UI_CONFIGURATION_EDITOR_SOURCEIPADDRESSES='0.0.0.0/0' \
           -e GROUPERSYSTEM_QUICKSTART_PASS=pass \
           -e GROUPER_UI=true \
           -e GROUPER_DATABASE_URL="jdbc:postgresql://docker.for.mac.localhost:5433/grouper?currentSchema=public" \
           -e GROUPER_DATABASE_USERNAME=grouper \
           -e GROUPER_DATABASE_PASSWORD=pass \
           i2incommon/grouper:5.0.3 ui