Child pages
  • Grouper changes v1.4
Skip to end of metadata
Go to start of metadata

This document lists instructions for people with existing groups installations on how to upgrade to newer versions of grouper (or grouper related products).  If you notice something missing please let us know.  The instructions are in descending order based on date/release.  You will find instructions below for Grouper, Grouper-ws, Grouper-ui, GSH, USDU, etc.  It is assumed if you are running grouper-ui that you will perform both the grouper upgrade notes, and the grouper-ui upgrade notes.  It is understood that you will get the new source/javadoc/etc files, this document addresses configurations, jars, etc.

Grouper

  • 2010/03/26: v1.4.3 GROUPER_1_4_BRANCH: compare the grouper.properties with the grouper.example.properties and get the readonly property
  • 2009/6/4: v1.4.2 GROUPER_1_4_BRANCH:
    • compare sources.xml with sources.example.xml.  Get new section on improved jdbc source.  If you are interested in improving the free-form subject search (e.g. from UI), switch to new subject adapter based on example: GrouperJdbcSourceAdapter2
    • compare grouper.properties with grouper.example.properties: get new loader hook and org management section (can be commented out).
    • compare ldappc.xml with ldappc.example.xml, get list-empty-value documentation
  • 2009/4/25: v1.4.2 GROUPER_1_4_BRANCH:set this to true in grouper.hibernate.properties:
    hibernate.cache.use_query_cache       = true
    Compare and merge the new ehcache.example.xml with ehcache.xml.  There are stem/group/member caches defined
  • 2009/1/25: v1.4.1 GROUPER_1_4_BRANCH: the stem name index was changed to unique from non-unique.  Note, if you have problems adding this index, you need to remove stems with duplicate names from the registry.  Obviously this needs to be done with care, and you might want to backup before attempting, or contact grouper-dev for help
    • Run: grouper_home/bin/gsh -registry -check
      • Then look at the result script, and execute that script, perhaps with:
        grouper_home/bin/gsh -registry -runsqlfile C:/mchyzer/isc/dev/grouper_v1_4/grouper/ddlScripts/grouperDdl_20090125_08_39_44_148.sql
    • -or- you can do this manually, change the stem name index to unique, and update grouper_ddl table Grouper entry DB_VERSION to 13
    • -or- (not recommended) you could export the registry to backup, rebuild the registry with run:
      • gsh -xmlexport GrouperSystem /whatever/20090125_1_4.xml
      • grouper_home/bin/gsh -registry -drop -runscript
      • gsh -xmlimport GrouperSystem /whatever/20090125_1_4.xml
  • 2009/1/25: v1.4.1 GROUPER_1_4_BRANCH: merge grouper.properties with grouper.example.properties, adding properties: junit.test.loader, junit.test.ldappc, junit.test.ddl
  • 2008/11/14: v1.4 HEAD: compare and merge all config files with examples, things were rearranged, organized, etc
  • 2008/10/29: v1.4 HEAD: update morphString.jar, algorithm changed
  • 2008/10/14: v1.4 HEAD: update jars for config checking:
    • delete lib/grouper/commons-discovery-0.4.jar
    • delete lib/grouper/jamon-2.7.jar
    • update invoker.jar
    • add commons-discovery.jar
    • add jamon.jar
    • update morphString.jar
    • update p6spy.jar
    • update subject.jar : note, if you have a custom source, you need to implement some new methods and recompile
  • 2008/09/30: v1.4 HEAD: all jars have their version number removed, might want to delete old, and get new.  e.g. from quartz-1.6.0.jar to quartz.jar
  • 2008/09/23: v1.4 HEAD: numParameters is now optional in sources.xml.  You can remove any numParameters params in sources.xml:       <param><param-name>numParameters</param-name><param-value>1</param-value></param>
  • 2008/09/15: v1.4 HEAD: Subject API converted to use C3P0 pooling instead of DBCP.
    • delete: lib/commons-dbcp.jar
    • delete: lib/commons-pool.jar
    • update: lib/commons-logging.jar
    • delete: lib/subject-0.3.0-rc1-cvs.jar
    • add: lib/subject.jar
    • compare the sources.xml with the sources.example.xml, and add the elements and comments about jdbcConnectionProvider.  You can leave the value blank for C3P0, or fill it in.  If you are using the same credentials for grouper and a subject source, remove the credentials from sources.xml and put edu.internet2.middleware.grouper.subj.GrouperJdbcConnectionProvider  as the jdbcConnectionProvider
  • 2008/09/14: v1.4 HEAD: Passwords encrypted in external files.  Add the jar: morphString.jar.  Add morphString.example.properties, and morphString.properties.  In sources.xml, replace the sourceadapter classes
        - FROM: edu.internet2.middleware.subject.provider.JDBCSourceAdapter    TO: edu.internet2.middleware.grouper.subj.GrouperJdbcSourceAdapter
        - FROM: edu.internet2.middleware.subject.provider.JNDISourceAdapter     TO: edu.internet2.middleware.grouper.subj.GrouperJndiSourceAdapter
    If you want to take advantage of external encrypted passwords (optional):
        - In morphString.properties, set the encrypt.key entry to a random alphanumeric string, or a pathname of a file containing the alphanumeric string
        - In sources.xml, and grouper.hibernate.properties, encrypt the passwords with: java -jar morphString.jar, and put results in a file, and put the file path where the passwords were in sources.xml or grouper.hibernate.properties
  • 2008/08/14: v1.4 HEAD: UUID/ID cols reduced, and Field foreign key is now field_id.  Delete any check constraints you have in your database.  E.g. on the grouper_fields table.  Start grouper to see in the logs a message that says to run a script, or do an: ant schemaexport.  You should review the script before running it, as sometimes ddlutils does weird things.  Also, in prod you should export your data before running.  Once you are comfortable with the result after running the script and checking your grouper data, set grouper.properties ddlutils.dropBackupUuidCols to true, and ddlutils.dropBackupFieldNameTypeCols to true, then: ant schemaexport, to get the script to drop the backup uuid/id cols.  I would run all db scripts in prod with a DB ide (e.g. toad) or manually so that you can address any issues (see link for example issues)
  • 2008/07/27: v1.4 HEAD: DDL management changed.
       - Copy the DDL section from the grouper.example.properties into your grouper.properties, configure them
       - Add the jar: ant-1.7.1.jar
       - run: ant schemaexport to sync everything up (or generate the script to sync everything up, depending on grouper.properties)
       - Remove any schema-export.sql files
  • 2008/07/22: v1.4 HEAD: If you were already using grouper loader, rename the table grouploader_log to grouper_loader_log.  If you already had the grouper_ddl table, delete the java_version column
  • 2008/07/21: v1.4 HEAD: Add these jars: quartz-1.6.0.jar, commons-cli-1.1.jar, bsh-2.0b4.jar.  GSH, loader, and usdu are in grouper now, with start scripts in grouper_home/bin.  See this jira report
  • 2008/07/21: v1.4 HEAD: The java package structure was refactored.  If you have code that doesnt compile, organize your imports.  See this jira report
  • 2008/07/20: v1.4 HEAD: Compare the grouper.properties with the grouper.example.properties, and add the section regarding group attribute validation via regex
  • 2008/07/09: v1.4 HEAD: Everyone needs to tweak your log4j.properties:

Change FROM (remove .ErrorLog and .DebugLog):

log4j.logger.edu.internet2.middleware.grouper.ErrorLog              = ERROR, grouper_error
#log4j.logger.edu.internet2.middleware.grouper.DebugLog              = INFO, grouper_debug

TO:

log4j.logger.edu.internet2.middleware.grouper              = ERROR, grouper_error
#log4j.logger.edu.internet2.middleware.grouper              = INFO, grouper_debug

and REMOVE these lines entirely:

## Grouper Test Logging
log4j.logger.edu.internet2.middleware.grouper.TestLog               = INFO, grouper_stdout

(probably doesnt affect you, but) If you have code that used the classes ErrorLog, DebugLog, or TestLog, these are removed, see GRP-105.

  • 2008/07/07: v1.4 HEAD: Merge your grouper.properties with the grouper.example.properties.  Pick up the new property: grouper.setters.dont.cause.queries
    • If you set this to true, refactor your the following methods:
      • group.setAttribute(), group.setExtension(), group.setDescription(), group.setDisplayExtension() to call group.store() afterwards (could be after multiple calls)
      • stem.setDescription(), stem.setExtension(),  stem.setDisplayExtension(),  to call stem.store() afterwards (could be after multiple calls)
      • member.setSubjectSourceId(), member.setSubjectId(), to call member.store() afterwards (could be after multiple calls)

e.g. if the code is:

someGroup.setAttribute("whatever", "something");

change to:

someGroup.setAttribute("whatever", "something");
someGroup.store();

  • 2008/06/30: v1.4 HEAD: Merge your grouper.properties with the grouper.example.properties.  Pick up the new hooks configs, but leave the grouper.setters.dont.cause.queries setting out for now (or set to false).
  • 2008/06/05: v1.4 HEAD: Remove the jar: i2mi-common-0.1.0.jar
  • 2008/06/05: v1.4 HEAD: Add the jars (note these dont have version numbers since they were extracted from i2mi-common and Im not 100% sure of the version number...  replacements will though):
    • commons-beanutils.jar
    • commons-collections.jar
    • commons-dbcp.jar
    • commons-digester.jar
    • commons-logging.jar
    • commons-pool.jar
    • dom4j.jar
    • odmg.jar

Grouper-ui

  • 2009/6/4: v1.4.2 GROUPER_1_4_BRANCH: compare your media.properties with the new media.properties, get new settings
  • 2009/04/11: v1.4.2 (GROUPER_UI_V1_4_BRANCH): there is now a grouper-ui.jar, so do a clean build (or delete the deployed WEB-INF/classes/edu dir), and use the new grouper-ui.jar, and the new struts.jar)
  • 2008/09/23: v1.4 HEAD: You can add tooltips to your group types and attributes if you like.  Add something like this to the custom nav.properties, though substitute the type name and attribute name for "grouperLoader" and "grouperLoaderdbName"

tooltipTargetted.groupTypes.grouperLoader=Group membership automatically managed via an external source, e.g. SQL query
tooltipTargetted.groupFields.grouperLoaderDbName=For sql based loader, this is the name of the db connection.

Grouper-ws

  • 2009/06/26: v1.4.2: note that 1.4.2 web.xml in grouper-ws was accidentally committed with the authentication stuff commented out.  The web services wont work since the user isnt there.  You need to use the web.xml of the previous version (or latest 1.4 branch).  e.g. here.  If you have built from CVS in the 1.4+ branch you shouldnt have this problem.
  • 2008/12/4: v1.4.0rc1 HEAD: added WsSubject.identifierLookup.  Note, for REST less than 1.4, this field will not be sent.  Also, in wsAssignGrouperPrivilegesLiteResult, there was a privilegeResults field, which shouldne be there, it was removed.  In wsAssignGrouperPrivilegesLiteResult the privilege type was all caps, it was changed to be all lower
  • 2008/12/4: v1.4.0rc1 HEAD: Changed result codes for groupSave and stemSave.  Instead of SUCCESS, it will be either: SUCCESS_INSERTED, SUCCESS_UPDATED, SUCCESS_NO_CHANGES_NEEDED.  Note, this is only for client version of 1.4+
  • 2008/12/2: v1.4.0rc1 HEAD: Added two properties to grouper-ws.properties, compare with the example file
  • 2008/11/6: v1.4 HEAD: Added two more fields to the wsGroupDetail object, adjust your clients appropriately:
    • compositeType (should be UNION, COMPLEMENT, INTERSECTION, or blank for non-composite)
    • params
  • 2008/10/28: v1.4 HEAD: some changes in conjunction with adding the privilege services
    • merge grouper-ws build.properties with example, and note the group.lib.dir has changed
    • there was a weird situation where the result code was transmitted as an object...

<WsDeleteMemberLiteResult>
  <resultMetadata>
    <wsResultCode class="edu.internet2.middleware.grouper.ws.soap.WsDeleteMemberLiteResult$WsDeleteMemberLiteResultCode">SUCCESS</wsResultCode>
    <resultCode>SUCCESS</resultCode>
    <resultMessage></resultMessage>
    <success>T</success>

     I fixed this so it is not transmitted... clients should not have been using that element, but if so, check them.  I believe this was only REST formats...

  • 2008/10/21: v1.4 HEAD:Axis2 1.3 was upgraded to Axis2 1.4,
    • you need to get all the lib/axis jars, and delete old dupes
    • replace or merge the axis.xml
    • replace or merge the /services and /modules dirs
  • 2008/10/12: v1.4 HEAD: The grouper lib dir changed, so did this property in the grouper-ws.properties (note its not lib/grouper anymore):
    #e.g. from grouper-ws: lib

Grouper-loader

  • 2008/12/12: v1.4.0: Merge grouper-loader.properties with grouper-loader.example.properties, there is a new setting for daily report directory
  • 2008/12/9: v1.4.0 RC2 HEAD: if you are using grouper loader, and you are not auto creating types and attributes in grouper config, then add this new attribute with GSH:
    • subj=SubjectFinder.findById("GrouperSystem")
      sess=GrouperSession.start(subj)
      type=GroupType.createType(sess, "grouperLoader")
      read=Privilege.getInstance("read")
      admin=Privilege.getInstance("admin")
      type.addAttribute(sess, "grouperLoaderGroupQuery", read, admin, false)
  • fd

Grouper client

  • 2009/6/4: v1.4.2 GROUPER_1_4_BRANCH: compare grouper.client.usage.txt with grouper.client.usage.example.txt, fix typos

LDAPPC

  • 2009/7/7: v1.4.2 : An error was made in the configuration schema whereby the "grouper-attribute" is required regardless of structure (either "flat" or "bushy") and is no longer restricted to "id" or "name". The "grouper-attribute" should only be required when the structure is flat. The affected schema element in conf/edu/internet2/middleware/ldappc/schema/ldappcConfig.xsd should look like :
    <!-- ========================== GROUPS ELEMENT ======================== -->
    <xs:element name="groups">
     ...
     <xs:attribute name="grouper-attribute">
      <xs:simpleType>
       <xs:restriction base="xs:string">
        <xs:enumeration value="id" />
        <xs:enumeration value="name" />
       </xs:restriction>
      </xs:simpleType>
     </xs:attribute>
    
  • No labels