Penn is not a big LDAP shop, we have a person database, so we decided to have a feed from there to the Grouper DB into a subject table.  The JDBC2 subject source provides more powerful querying (and we contributed it!) so we are using that.  We have about 600k subjects.  Generally we try not to take subjects out of resolvability once they are resolvable subjects.

Here is a row from our table




Attributes

Sync process

Configuration

Here is out config in the sources.xml

 <source adapterClass="edu.internet2.middleware.subject.provider.JDBCSourceAdapter2">
    <id>pennperson</id>
    <name>Penn person</name>
     <type>person</type>
     <!-- init-param>
       <param-name>maxResults</param-name>
       <param-value>1000</param-value>
     </init-param -->
    <!-- on a findPage() this is the most results returned --> 
    <init-param>
      <param-name>maxPageSize</param-name>
      <param-value>100</param-value>
    </init-param>
     <init-param>
       <param-name>jdbcConnectionProvider</param-name>
       <param-value>edu.internet2.middleware.grouper.subj.GrouperJdbcConnectionProvider</param-value>
     </init-param>
      <init-param>
       <param-name>dbTableOrView</param-name>
       <param-value>person_source_v</param-value>
     </init-param>
      <init-param>
       <param-name>subjectIdCol</param-name>
       <param-value>penn_id</param-value>
     </init-param>
     <init-param>
       <param-name>nameCol</param-name>
       <param-value>name</param-value>
     </init-param>
     <init-param>
       <param-name>descriptionCol</param-name>
       <param-value>description</param-value>
     </init-param>
     <init-param>
       <!-- search col where general searches take place, lower case -->
       <param-name>lowerSearchCol</param-name>
       <param-value>description_lower</param-value>
     </init-param>
     <init-param>
       <!-- optional col if you want the search results sorted in the API (note, UI might override) -->
       <param-name>defaultSortCol</param-name>
       <param-value>description</param-value>
     </init-param>
     <init-param>
       <!-- col which identifies the row, perhaps not subjectId -->
       <param-name>subjectIdentifierCol0</param-name>
       <param-value>pennname</param-value>
     </init-param>
     <init-param>
       <param-name>subjectIdentifierCol1</param-name>
       <param-value>penn_id</param-value>
     </init-param>
     <init-param>
       <param-name>subjectIdentifierCol2</param-name>
       <param-value>eppn</param-value>
     </init-param>
     <!-- now you can count up from 0 to N of attributes for various cols -->
     <init-param>
       <param-name>subjectAttributeCol0</param-name>
       <param-value>pennname</param-value>
     </init-param>
     <init-param>
       <param-name>subjectAttributeName0</param-name>
       <param-value>PENNNAME</param-value>
     </init-param>
     <init-param>
       <param-name>subjectAttributeCol1</param-name>
       <param-value>email</param-value>
     </init-param>
     <init-param>
       <param-name>subjectAttributeName1</param-name>
       <param-value>EMAIL</param-value>
     </init-param>
     <init-param>
       <param-name>subjectAttributeCol2</param-name>
       <param-value>eppn</param-value>
     </init-param>
     <init-param>
       <param-name>subjectAttributeName2</param-name>
       <param-value>EPPN</param-value>
     </init-param>

     <init-param>
       <param-name>subjectAttributeCol3</param-name>
       <param-value>first_name</param-value>
     </init-param>
     <init-param>
       <param-name>subjectAttributeName3</param-name>
       <param-value>FIRST_NAME</param-value>
     </init-param>

     <init-param>
       <param-name>subjectAttributeCol4</param-name>
       <param-value>last_name</param-value>
     </init-param>
     <init-param>
       <param-name>subjectAttributeName4</param-name>
       <param-value>LAST_NAME</param-value>
     </init-param>

     <init-param>
       <param-name>subjectAttributeCol5</param-name>
       <param-value>email_public</param-value>
     </init-param>
     <init-param>
       <param-name>subjectAttributeName5</param-name>
       <param-value>EMAIL_PUBLIC</param-value>
     </init-param>

     <init-param>
       <param-name>subjectAttributeCol6</param-name>
       <param-value>name_first_public</param-value>
     </init-param>
     <init-param>
       <param-name>subjectAttributeName6</param-name>
       <param-value>NAME_FIRST_PUBLIC</param-value>
     </init-param>

     <init-param>
       <param-name>subjectAttributeCol7</param-name>
       <param-value>name_last_public</param-value>
     </init-param>
     <init-param>
       <param-name>subjectAttributeName7</param-name>
       <param-value>NAME_LAST_PUBLIC</param-value>
     </init-param>

     <init-param>
       <param-name>subjectAttributeCol8</param-name>
       <param-value>name_public</param-value>
     </init-param>
     <init-param>
       <param-name>subjectAttributeName8</param-name>
       <param-value>NAME_PUBLIC</param-value>
     </init-param>

     <init-param>
       <param-name>subjectAttributeCol9</param-name>
       <param-value>preferred_first_name</param-value>
     </init-param>
     <init-param>
       <param-name>subjectAttributeName9</param-name>
       <param-value>PREFERRED_FIRST_NAME</param-value>
     </init-param>

     <init-param>
       <param-name>subjectAttributeCol10</param-name>
       <param-value>description_lower</param-value>
     </init-param>
     <init-param>
       <param-name>subjectAttributeName10</param-name>
       <param-value>DESCRIPTION_LOWER</param-value>
     </init-param>

     <init-param>
       <param-name>sortAttribute0</param-name>
       <param-value>DESCRIPTION_LOWER</param-value>
     </init-param>
     <init-param>
       <param-name>sortAttribute1</param-name>
       <param-value>LAST_NAME</param-value>
     </init-param>

     <init-param>
       <param-name>searchAttribute0</param-name>
       <param-value>DESCRIPTION_LOWER</param-value>
     </init-param>

   </source>

sfd