Skip to Content.
Sympa Menu

grouper-users - [grouper-users] PSP to LDAP- member provisioning

Subject: Grouper Users - Open Discussion List

List archive

[grouper-users] PSP to LDAP- member provisioning


Chronological Thread 
  • From: Mark Cairney <>
  • To: "" <>
  • Subject: [grouper-users] PSP to LDAP- member provisioning
  • Date: Fri, 12 Sep 2014 15:41:20 +0100

Hi,

We've made a bit of progress re: provisioning our LDAP from Grouper.
It's now creating the stem and group objects but we can't get it to
create user accounts.
If we use ldap as the source for members it doesn't do anything at all-
as far as I can tell it's not even attempting to look up user DNs.

It we use grouper as the source we were having the same issue however
adding an additional field of the form: "uid=<uid>" in the Grouper does
populate members but without the people baseDN so the user objects
aren't actually members as far as LDAP is concerned and the memberOf
attribute isn't updated. As our current LDAP target has a flat users OU
we could construct the full user DN in the database and use that as the
source field but this would limit us going forward e.g. if we were to
provision to AD as well as our AD doesn't have a flat namespace for user
DNs.

Having compared the relevant sections of psp-resolver.xml, psp.xml and
sources.xml I can't see any obvious differences between what we have and
what's in the examples.

I've got a feeling we're close but I'm a bit puzzled by this as I would
have thought this should be standard behaviour.

I've attached the psp-resolver.xml and sources.xml files both with and
without LDAP set up, our psp.xml (which wasn't actually changed) and the
error log for a bulksync run using only a small stem. The posixGroup
errors can be ignored as these are just groups which don't have a gid
field in Grouper.

--
/****************************

Mark Cairney
ITI UNIX Section
Information Services
University of Edinburgh

Tel: 0131 650 6565
Email:

PGP: 0x435A9621

*******************************/

The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.
<?xml version="1.0" encoding="UTF-8"?>
<AttributeResolver
  xmlns="urn:mace:shibboleth:2.0:resolver"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xmlns:resolver="urn:mace:shibboleth:2.0:resolver"
  xmlns:ad="urn:mace:shibboleth:2.0:resolver:ad"
  xmlns:dc="urn:mace:shibboleth:2.0:resolver:dc"
  xmlns:grouper="http://grouper.internet2.edu/shibboleth/2.0";
  xmlns:psp="http://grouper.internet2.edu/psp";
  xmlns:psp-grouper-ldap="http://grouper.internet2.edu/psp-grouper-ldap";
  xmlns:psp-grouper-changelog="http://grouper.internet2.edu/psp-grouper-changelog";
  xmlns:psp-grouper-source="http://grouper.internet2.edu/psp-grouper-source";
  xsi:schemaLocation="
   urn:mace:shibboleth:2.0:resolver classpath:/schema/shibboleth-2.0-attribute-resolver.xsd
   urn:mace:shibboleth:2.0:resolver:dc classpath:/schema/shibboleth-2.0-attribute-resolver-dc.xsd
   urn:mace:shibboleth:2.0:resolver:ad classpath:/schema/shibboleth-2.0-attribute-resolver-ad.xsd
   http://grouper.internet2.edu/shibboleth/2.0 classpath:/schema/shibboleth-2.0-grouper.xsd
   http://grouper.internet2.edu/psp classpath:/schema/psp.xsd
   http://grouper.internet2.edu/psp-grouper-ldap classpath:/schema/psp-grouper-ldap.xsd
   http://grouper.internet2.edu/psp-grouper-changelog classpath:/schema/psp-grouper-changelog.xsd
   http://grouper.internet2.edu/psp-grouper-source classpath:/schema/psp-grouper-source.xsd">

  <!-- Grouper data connectors. -->

  <!-- The GroupDataConnector returns attributes representing the group whose name is the principal name. The returned group 
    must be a child of the stem whose name is the edu.internet2.middleware.psp.baseStem property. Groups under the "etc" stem 
    are omitted. -->
  <resolver:DataConnector
    id="GroupDataConnector"
    xsi:type="grouper:GroupDataConnector">
    <!-- The MINUS filter matches stems which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The GroupInStem filter matches groups which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:GroupInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <grouper:Filter
        xsi:type="grouper:GroupInStem"
        name="etc"
        scope="SUB" />
    </grouper:Filter>
    <!-- The "members" attribute values are equivalent to group.getMembers(). -->
    <grouper:Attribute id="members" />
    <!-- The "groups" attribute values are equivalent to group.getGroups(). -->
    <grouper:Attribute id="groups" />
  </resolver:DataConnector>

  <!-- The GroupWithoutMermbershipsDataConnector returns attributes representing the group whose name is the principal name. 
    The returned group must be a child of the stem whose name is the edu.internet2.middleware.psp.baseStem property. Groups under 
    the "etc" stem are omitted. No memberships (groups or members) should be returned by this data connector to improve performance 
    of identifier resolution. -->
  <resolver:DataConnector
    id="GroupWithoutMermbershipsDataConnector"
    xsi:type="grouper:GroupDataConnector">
    <!-- The MINUS filter matches stems which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The GroupInStem filter matches groups which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:GroupInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <grouper:Filter
        xsi:type="grouper:GroupInStem"
        name="etc"
        scope="SUB" />
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- The StemDataConnector returns attributes representing the stem whose name is the principal name. The returned stem 
    must be a child of the stem whose name is the edu.internet2.middleware.psp.baseStem property. The "etc" stem and all children 
    are omitted. -->
  <resolver:DataConnector
    id="StemDataConnector"
    xsi:type="grouper:StemDataConnector">
    <!-- The MINUS filter matches stems which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The StemInStem filter matches stems which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:StemInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <!-- The OR filter matches stems which match either the first or second child filter. -->
      <grouper:Filter xsi:type="grouper:OR">
        <!-- The StemInStem filter matches stems which are children of the given stem. -->
        <grouper:Filter
          xsi:type="grouper:StemInStem"
          name="etc"
          scope="SUB" />
        <!-- The StemNameExact filter matches stems with the given name. -->
        <grouper:Filter
          xsi:type="grouper:StemNameExact"
          name="etc" />
      </grouper:Filter>
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- The MemberDataConnector returns attributes representing the member whose subject id or identifier is the principal 
    name. -->
  <resolver:DataConnector
    id="MemberDataConnector"
    xsi:type="grouper:MemberDataConnector">
    <!-- Return members from the "ldap" source only. -->
    <grouper:Filter
      xsi:type="grouper:MemberSource"
      sourceId="sourceId" />
    <!-- Return the "dn" attribute of members whose subject source id is "ldap". -->
    <grouper:Attribute
      id="name"
      source="sourceId" />
  </resolver:DataConnector>


  <!-- Returns a single "groupNames" attribute whose values are the names of all groups matching the filter. The groups returned 
    are children of the stem whose name is the edu.internet2.middleware.psp.baseStem property. Groups under the "etc" stem are 
    omitted. -->
  <resolver:DataConnector
    id="AllGroupNamesConnector"
    xsi:type="psp-grouper-source:AllGroupNamesDataConnector">
    <!-- The MINUS filter matches stems which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The GroupInStem filter matches groups which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:GroupInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <grouper:Filter
        xsi:type="grouper:GroupInStem"
        name="etc"
        scope="SUB" />
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- The names of all groups matching the data connector filter. -->
  <resolver:AttributeDefinition
    id="groupNames"
    xsi:type="ad:Simple">
    <resolver:Dependency ref="AllGroupNamesConnector" />
  </resolver:AttributeDefinition>

  <!-- Returns a single "stemNames" attribute whose values are the names of all stems matching the filter. The stems returned 
    are children of the stem whose name is the edu.internet2.middleware.psp.baseStem property. The "etc" stem and all children 
    are omitted. -->
  <resolver:DataConnector
    id="AllStemNamesConnector"
    xsi:type="psp-grouper-source:AllStemNamesDataConnector">
    <!-- The MINUS filter matches stems which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The StemInStem filter matches stems which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:StemInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <!-- The OR filter matches stems which match either the first or second child filter. -->
      <grouper:Filter xsi:type="grouper:OR">
        <!-- The StemInStem filter matches stems which are children of the given stem. -->
        <grouper:Filter
          xsi:type="grouper:StemInStem"
          name="etc"
          scope="SUB" />
        <!-- The StemNameExact filter matches stems with the given name. -->
        <grouper:Filter
          xsi:type="grouper:StemNameExact"
          name="etc" />
      </grouper:Filter>
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- The names of all stems matching the data connector filter. -->
  <resolver:AttributeDefinition
    id="stemNames"
    xsi:type="ad:Simple">
    <resolver:Dependency ref="AllStemNamesConnector" />
  </resolver:AttributeDefinition>


  <!-- ChangeLogDataConnectors return attributes representing the change log entry whose sequence number is the principal 
    name. -->

  <!-- Returns change log attributes representing the deletion of a stem. -->
  <resolver:DataConnector
    id="DeleteStemChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
    <grouper:Filter
      xsi:type="psp-grouper-changelog:ChangeLogEntry"
      category="stem"
      action="deleteStem" />
  </resolver:DataConnector>

  <!-- Returns change log attributes representing the changing of a stem's name. -->
  <resolver:DataConnector
    id="UpdateStemNameChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The AND filter matches both child filters. -->
    <grouper:Filter xsi:type="grouper:AND">
      <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogEntry"
        category="stem"
        action="updateStem" />
      <!-- The ChangeLogExactAttribute filter matches change log entries with the given attribute and value. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogExactAttribute"
        name="propertyChanged"
        value="name" />
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- Returns change log attributes representing the changing of a stem's description. -->
  <resolver:DataConnector
    id="UpdateStemDescriptionChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The AND filter matches both child filters. -->
    <grouper:Filter xsi:type="grouper:AND">
      <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogEntry"
        category="stem"
        action="updateStem" />
      <!-- The ChangeLogExactAttribute filter matches change log entries with the given attribute and value. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogExactAttribute"
        name="propertyChanged"
        value="description" />
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- Returns change log attributes representing the deletion of a group. -->
  <resolver:DataConnector
    id="DeleteGroupChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
    <grouper:Filter
      xsi:type="psp-grouper-changelog:ChangeLogEntry"
      category="group"
      action="deleteGroup" />
  </resolver:DataConnector>

  <!-- Returns change log attributes representing the changing of a group's name. -->
  <resolver:DataConnector
    id="UpdateGroupNameChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The AND filter matches both child filters. -->
    <grouper:Filter xsi:type="grouper:AND">
      <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogEntry"
        category="group"
        action="updateGroup" />
      <!-- The ChangeLogExactAttribute filter matches change log entries with the given attribute and value. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogExactAttribute"
        name="propertyChanged"
        value="name" />
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- Returns change log attributes representing the changing of a group's description. -->
  <resolver:DataConnector
    id="UpdateGroupDescriptionChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The AND filter matches both child filters. -->
    <grouper:Filter xsi:type="grouper:AND">
      <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogEntry"
        category="group"
        action="updateGroup" />
      <!-- The ChangeLogExactAttribute filter matches change log entries with the given attribute and value. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogExactAttribute"
        name="propertyChanged"
        value="description" />
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- Returns change log attributes representing a membership addition. -->
  <resolver:DataConnector
    id="AddMembershipChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
    <grouper:Filter
      xsi:type="psp-grouper-changelog:ChangeLogEntry"
      category="membership"
      action="addMembership" />
  </resolver:DataConnector>

  <!-- Returns change log attributes representing a membership deletion. -->
  <resolver:DataConnector
    id="DeleteMembershipChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
    <grouper:Filter
      xsi:type="psp-grouper-changelog:ChangeLogEntry"
      category="membership"
      action="deleteMembership" />
  </resolver:DataConnector>

  <!-- Static data connector. -->
  <resolver:DataConnector
    id="StaticDataConnector"
    xsi:type="dc:Static">
    <!-- Group LDAP objectclass. -->
    <dc:Attribute id="staticGroupObjectclass">
      <dc:Value>top</dc:Value>
      <dc:Value>${edu.internet2.middleware.psp.groupObjectClass}</dc:Value>
      <dc:Value>posixGroup</dc:Value>
      <!-- <dc:Value>eduMember</dc:Value> -->
    </dc:Attribute>
    <!-- Stem LDAP objectclass. -->
    <dc:Attribute id="staticStemObjectclass">
      <dc:Value>top</dc:Value>
      <dc:Value>organizationalUnit</dc:Value>
    </dc:Attribute>
    <!-- The member LDAP eduMember objectclass. -->
    <dc:Attribute id="memberObjectclass">
      <dc:Value>eduMember</dc:Value>
    </dc:Attribute>
  </resolver:DataConnector>


  <!-- Stem identifier and attributes. -->

  <!-- The LDAP DN of a stem. For example, "ou=stemExtension,ou=groups,dc=example,dc=edu". -->
  <resolver:AttributeDefinition
    id="stemDn"
    xsi:type="psp-grouper-ldap:LdapDnFromGrouperNamePSOIdentifier"
    structure="bushy"
    sourceAttributeID="stemNameInStem"
    rdnAttributeName="ou"
    stemRdnAttributeName="ou"
    baseDn="${edu.internet2.middleware.psp.groupsBaseDn}"
    baseStem="${edu.internet2.middleware.psp.baseStem}">
    <!-- Dependencies which return a "stemNameInStem" attribute whose value is the stem name. -->
    <resolver:Dependency ref="stemNameInStem" />
  </resolver:AttributeDefinition>

  <!-- The value of the "stemNameInStem" attribute is the name of a stem. The name of the stem is returned only if the stem 
    is a child of the stem whose name is the edu.internet2.middleware.psp.baseStem property. If the edu.internet2.middleware.psp.baseStem 
    property is the root stem, stems under the "etc" stem are omitted. -->
  <resolver:AttributeDefinition
    id="stemNameInStem"
    xsi:type="grouper:FilteredName"
    sourceAttributeID="name">
    <!-- Dependencies which return a "name" attribute whose value is the stem name. -->
    <resolver:Dependency ref="StemDataConnector" />
    <resolver:Dependency ref="DeleteStemChangeLogDataConnector" />
    <resolver:Dependency ref="UpdateStemNameChangeLogDataConnector" />
    <resolver:Dependency ref="UpdateStemDescriptionChangeLogDataConnector" />
    <!-- The MINUS filter matches names which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The NameInStem filter matches names which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:NameInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <!-- The OR filter matches names which match either the first or second child filter. -->
      <grouper:Filter xsi:type="grouper:OR">
        <!-- The NameInStem filter matches names which are children of the given stem. -->
        <grouper:Filter
          xsi:type="grouper:NameInStem"
          name="etc"
          scope="SUB" />
        <!-- The NameExact filter matches names with the given name. -->
        <grouper:Filter
          xsi:type="grouper:NameExact"
          name="etc" />
      </grouper:Filter>
    </grouper:Filter>
  </resolver:AttributeDefinition>

  <!-- The alternate LDAP DN of a stem via the change log. For example, the DN of a stem before it is renamed. -->
  <resolver:AttributeDefinition
    id="stemDnAlternateChangeLog"
    xsi:type="psp-grouper-ldap:LdapDnFromGrouperNamePSOIdentifier"
    structure="bushy"
    sourceAttributeID="propertyOldValue"
    rdnAttributeName="ou"
    stemRdnAttributeName="ou"
    baseDn="${edu.internet2.middleware.psp.groupsBaseDn}"
    baseStem="${edu.internet2.middleware.psp.baseStem}">
    <!-- Dependency which returns a "propertyOldValue" attribute whose value is the old stem name. -->
    <resolver:Dependency ref="UpdateStemNameChangeLogDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The stem objectclass attribute. If a change log entry is resolved, do not return dependencies from the static data 
    connector. -->
  <resolver:AttributeDefinition
    id="stemObjectclass"
    xsi:type="ad:Script"
    language="rhino-nonjdk">
    <resolver:Dependency ref="StaticDataConnector" />
    <resolver:Dependency ref="UpdateStemNameChangeLogDataConnector" />
    <resolver:Dependency ref="UpdateStemDescriptionChangeLogDataConnector" />
    <!-- <resolver:Dependency ref="AttributeAssignValueChangeLogDataConnector" /> -->
    <ad:Script><![CDATA[
        // Import Shibboleth attribute provider.
        // load("nashorn:mozilla_compat.js");
	importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
        // BasicAttribute = Java.type("edu.internet2.middleware.shibboleth.common.attribute.provider");
	
        // Create the attribute to be returned.
        stemObjectclass = new BasicAttribute("stemObjectclass");
        
        // Include values from 'staticStemObjectclass' if a change log entry is not being processed.
        if (typeof changeLogCategory != "undefined" && changeLogCategory != null) {
            // return nothing        
        } else {
            stemObjectclass.getValues().addAll(staticStemObjectclass.getValues());
        }                       
    ]]></ad:Script>
  </resolver:AttributeDefinition>

  <!-- The value of stem "stemOu" attribute is the stem extension. -->
  <resolver:AttributeDefinition
    id="stemOu"
    xsi:type="ad:Simple"
    sourceAttributeID="extension">
    <resolver:Dependency ref="StemDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The value of the stem "description" attribute is the stem description. -->
  <resolver:AttributeDefinition
    id="stemDescription"
    xsi:type="ad:Simple"
    sourceAttributeID="description">
    <resolver:Dependency ref="StemDataConnector" />
    <resolver:Dependency ref="UpdateStemDescriptionChangeLogDataConnector" />
  </resolver:AttributeDefinition>


  <!-- Group identifier and attributes. -->

  <!-- The LDAP DN of a group. For example, "cn=groupExtension,ou=stem,ou=groups,dc=example,dc=edu". -->
  <resolver:AttributeDefinition
    id="groupDn"
    xsi:type="psp-grouper-ldap:LdapDnFromGrouperNamePSOIdentifier"
    structure="${edu.internet2.middleware.psp.structure}"
    sourceAttributeID="groupNameInStem"
    rdnAttributeName="cn"
    stemRdnAttributeName="ou"
    baseDn="${edu.internet2.middleware.psp.groupsBaseDn}"
    baseStem="${edu.internet2.middleware.psp.baseStem}">
    <!-- Dependencies which return a "groupNameInStem" attribute whose value is the group name. -->
    <resolver:Dependency ref="groupNameInStem" />
  </resolver:AttributeDefinition>

  <!-- The value of the "groupNameInStem" attribute is the name of a group. The name of the group is returned only if the 
    group is a child of the stem whose name is the edu.internet2.middleware.psp.baseStem property. If the edu.internet2.middleware.psp.baseStem 
    property is the root stem, groups under the "etc" stem are omitted. -->
  <resolver:AttributeDefinition
    id="groupNameInStem"
    xsi:type="grouper:FilteredName"
    sourceAttributeID="name">
    <!-- Dependencies which return a "name" attribute whose value is the group name. -->
    <resolver:Dependency ref="GroupWithoutMermbershipsDataConnector" />
    <resolver:Dependency ref="DeleteGroupChangeLogDataConnector" />
    <resolver:Dependency ref="UpdateGroupNameChangeLogDataConnector" />
    <resolver:Dependency ref="UpdateGroupDescriptionChangeLogDataConnector" />
    <!-- The MINUS filter matches stems which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The NameInStem filter matches names which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:NameInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <grouper:Filter
        xsi:type="grouper:NameInStem"
        name="etc"
        scope="SUB" />
    </grouper:Filter>
  </resolver:AttributeDefinition>

  <!-- The alternate LDAP DN of a group. For example, the DN of a group before it is renamed. -->
  <resolver:AttributeDefinition
    id="groupDnAlternate"
    xsi:type="psp-grouper-ldap:LdapDnFromGrouperNamePSOIdentifier"
    structure="${edu.internet2.middleware.psp.structure}"
    sourceAttributeID="alternateName"
    rdnAttributeName="cn"
    stemRdnAttributeName="ou"
    baseDn="${edu.internet2.middleware.psp.groupsBaseDn}"
    baseStem="${edu.internet2.middleware.psp.baseStem}">
    <!-- Dependency which returns an "alternateName" attribute whose value is the old group name. -->
    <resolver:Dependency ref="GroupWithoutMermbershipsDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The alternate LDAP DN of a group via the change log. For example, the DN of a group before it is renamed. -->
  <resolver:AttributeDefinition
    id="groupDnAlternateChangeLog"
    xsi:type="psp-grouper-ldap:LdapDnFromGrouperNamePSOIdentifier"
    structure="${edu.internet2.middleware.psp.structure}"
    sourceAttributeID="propertyOldValue"
    rdnAttributeName="cn"
    stemRdnAttributeName="ou"
    baseDn="${edu.internet2.middleware.psp.groupsBaseDn}"
    baseStem="${edu.internet2.middleware.psp.baseStem}">
    <!-- Dependency which returns a "propertyOldValue" attribute whose value is the old group name. -->
    <resolver:Dependency ref="UpdateGroupNameChangeLogDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The group objectclass attribute. If a change log entry is resolved, do not return dependencies from the static data 
    connector unless the change log entry is a membership change. -->
  <resolver:AttributeDefinition
    id="groupObjectclass"
    xsi:type="ad:Script"
    language="rhino-nonjdk">
    <resolver:Dependency ref="StaticDataConnector" />
    <resolver:Dependency ref="AddMembershipChangeLogDataConnector" />
    <resolver:Dependency ref="DeleteMembershipChangeLogDataConnector" />
    <resolver:Dependency ref="UpdateGroupNameChangeLogDataConnector" />
    <resolver:Dependency ref="UpdateGroupDescriptionChangeLogDataConnector" />
    <!-- <resolver:Dependency ref="AttributeAssignValueChangeLogDataConnector" /> -->
    <ad:Script><![CDATA[
        // Import Shibboleth attribute provider.
        //load("nashorn:mozilla_compat.js");
	importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
	//BasicAttribute = Java.type("edu.internet2.middleware.shibboleth.common.attribute.provider");        

        // Create the attribute to be returned.
        groupObjectclass = new BasicAttribute("groupObjectclass");
        
        // Include values from 'staticGroupObjectClass' if the change log category is 'membership'.
        if (typeof changeLogCategory != "undefined" && changeLogCategory != null) {
            if (changeLogCategory.getValues().contains("membership")) {          
                groupObjectclass.getValues().addAll(staticGroupObjectclass.getValues());
            }
        // Include values from 'staticGroupObjectClass' if a change log entry is not being processed.
        } else {
            groupObjectclass.getValues().addAll(staticGroupObjectclass.getValues());
        }                       
    ]]></ad:Script>
  </resolver:AttributeDefinition>

  <!-- The group objectclass attribute with eduMember. -->
  <resolver:AttributeDefinition
    id="groupObjectclassEduMember"
    xsi:type="ad:Simple">
    <resolver:Dependency ref="StaticDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The value of the group "cn" attribute is the group extension. -->
  <!-- If the group DN structure is "bushy" the sourceAttributeID should be "extension". -->
  <!-- If the group DN structure is "flat" the sourceAttributeID should be "name". -->
  <resolver:AttributeDefinition
    id="cn"
    xsi:type="ad:Simple"
    sourceAttributeID="${edu.internet2.middleware.psp.cnSourceAttributeID}">
    <resolver:Dependency ref="GroupWithoutMermbershipsDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The value of the group "description" attribute is the group description. -->
  <resolver:AttributeDefinition
    id="groupDescription"
    xsi:type="ad:Simple"
    sourceAttributeID="description">
    <resolver:Dependency ref="GroupWithoutMermbershipsDataConnector" />
    <resolver:Dependency ref="UpdateGroupDescriptionChangeLogDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The value of the group "gidNumber" attribute is the group gid (UNIX gid). -->
  <resolver:AttributeDefinition
        id="groupgidNumber"
        xsi:type="ad:Simple"
        sourceAttributeID="gid">
        <resolver:Dependency ref="GroupWithoutMermbershipsDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The values of the "membersLdap" attribute are the subject ids of group members from the "ldap" source. -->
  <resolver:AttributeDefinition
    id="membersLdap"
    xsi:type="grouper:Member"
    sourceAttributeID="members">
    <resolver:Dependency ref="GroupDataConnector" />
    <!-- The values of the "id" attribute are the identifiers of subjects whose source id is "ldap". -->
    <grouper:Attribute
      id="id"
      source="sourceId" />
  </resolver:AttributeDefinition>

  <!-- The values of the "membersGsa" attribute are the names of group members which are grouper groups. -->
  <resolver:AttributeDefinition
    id="membersGsa"
    xsi:type="grouper:Member"
    sourceAttributeID="members">
    <resolver:Dependency ref="GroupDataConnector" />
    <!-- The values of the "name" attribute are the names of groups whose source is "g:gsa". -->
    <grouper:Attribute
      id="name"
      source="g:gsa" />
  </resolver:AttributeDefinition>


  <!-- Member identifier. -->

  <!-- The LDAP DN of a member. The value of this attribute is the "dn" of subjects whose source id is "ldap". -->
  <resolver:AttributeDefinition
    id="memberDn"
    xsi:type="psp:PSOIdentifier"
    sourceAttributeID="name">
    <resolver:Dependency ref="MemberDataConnector" />
  </resolver:AttributeDefinition>


  <!-- Change log group membership. -->

  <!-- The value of the "changeLogMembershipGroupDn" attribute is a pso identifier whose ID is the ldap DN of the group of 
    a membership change log entry. -->
  <resolver:AttributeDefinition
    id="changeLogMembershipGroupDn"
    xsi:type="psp-grouper-ldap:LdapDnFromGrouperNamePSOIdentifier"
    structure="${edu.internet2.middleware.psp.structure}"
    sourceAttributeID="changeLogMembershipGroupName"
    rdnAttributeName="cn"
    stemRdnAttributeName="ou"
    baseDn="${edu.internet2.middleware.psp.groupsBaseDn}"
    baseStem="${edu.internet2.middleware.psp.baseStem}">
    <resolver:Dependency ref="changeLogMembershipGroupName" />
  </resolver:AttributeDefinition>

  <!-- The value of the "changeLogMembershipGroupName" attribute is the name of the group of a membership change log entry. 
    The name of the group is returned only if the group is a child of the stem whose name is the edu.internet2.middleware.psp.baseStem 
    property. If the edu.internet2.middleware.psp.baseStem property is the root stem, groups under the "etc" stem are omitted. -->
  <resolver:AttributeDefinition
    id="changeLogMembershipGroupName"
    xsi:type="grouper:FilteredName"
    sourceAttributeID="groupName">
    <resolver:Dependency ref="AddMembershipChangeLogDataConnector" />
    <resolver:Dependency ref="DeleteMembershipChangeLogDataConnector" />
    <!-- The MINUS filter matches stems which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The GroupInStem filter matches groups which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:NameInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <grouper:Filter
        xsi:type="grouper:NameInStem"
        name="etc"
        scope="SUB" />
    </grouper:Filter>
  </resolver:AttributeDefinition>

  <!-- The value of the "changeLogMembershipGroupSubjectName" attribute is the name of the group member of a membership change 
    log entry. -->
  <resolver:AttributeDefinition
    id="changeLogMembershipGroupSubjectName"
    xsi:type="ad:Script"
    language="rhino-nonjdk">
    <resolver:Dependency ref="AddMembershipChangeLogDataConnector" />
    <resolver:Dependency ref="DeleteMembershipChangeLogDataConnector" />
    <ad:Script><![CDATA[
        // Import Shibboleth attribute provider.
        //load("nashorn:mozilla_compat.js");
	importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
	// BasicAttribute = Java.type("edu.internet2.middleware.shibboleth.common.attribute.provider");        

        // Create the attribute to be returned.
        changeLogMembershipGroupSubjectName = new BasicAttribute("changeLogMembershipGroupSubjectName");
        
        // Return 'subjectName' attribute values if the 'sourceId' attribute is 'g:gsa'.
        if (typeof sourceId != "undefined" && sourceId != null ){            
            if (sourceId.getValues().contains("g:gsa")) {
                if (typeof subjectName != "undefined" && subjectName != null ){
                    changeLogMembershipGroupSubjectName.getValues().add(subjectName.getValues().get(0));
                }
            }          
        }
    ]]></ad:Script>
  </resolver:AttributeDefinition>

  <!-- The value of the "changeLogMembershipLdapSubjectId" attribute is the subject identifier of the "ldap" source member 
    of a membership change log entry. -->
  <resolver:AttributeDefinition
    id="changeLogMembershipLdapSubjectId"
    xsi:type="ad:Script"
    language="rhino-nonjdk">
    <resolver:Dependency ref="AddMembershipChangeLogDataConnector" />
    <resolver:Dependency ref="DeleteMembershipChangeLogDataConnector" />
    <ad:Script><![CDATA[
        // Import Shibboleth attribute provider.
        // load("nashorn:mozilla_compat.js");
	importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
	// BasicAttribute = Java.type("edu.internet2.middleware.shibboleth.common.attribute.provider");        

        // Create the attribute to be returned.
        changeLogMembershipLdapSubjectId = new BasicAttribute("changeLogMembershipLdapSubjectId");
        
        // Return 'subjectId' attribute values if the 'sourceId' attribute is 'ldap'.
        if (typeof sourceId != "undefined" && sourceId != null ){            
            if (sourceId.getValues().contains("ldap")) {
                if (typeof subjectId != "undefined" && subjectId != null ){
                    changeLogMembershipLdapSubjectId.getValues().add(subjectId.getValues().get(0));
                }
            }
        }
    ]]></ad:Script>
  </resolver:AttributeDefinition>

</AttributeResolver>
<?xml version="1.0" encoding="UTF-8"?>
<AttributeResolver
  xmlns="urn:mace:shibboleth:2.0:resolver"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xmlns:resolver="urn:mace:shibboleth:2.0:resolver"
  xmlns:ad="urn:mace:shibboleth:2.0:resolver:ad"
  xmlns:dc="urn:mace:shibboleth:2.0:resolver:dc"
  xmlns:grouper="http://grouper.internet2.edu/shibboleth/2.0";
  xmlns:psp="http://grouper.internet2.edu/psp";
  xmlns:psp-grouper-ldap="http://grouper.internet2.edu/psp-grouper-ldap";
  xmlns:psp-grouper-changelog="http://grouper.internet2.edu/psp-grouper-changelog";
  xmlns:psp-grouper-source="http://grouper.internet2.edu/psp-grouper-source";
  xsi:schemaLocation="
   urn:mace:shibboleth:2.0:resolver classpath:/schema/shibboleth-2.0-attribute-resolver.xsd
   urn:mace:shibboleth:2.0:resolver:dc classpath:/schema/shibboleth-2.0-attribute-resolver-dc.xsd
   urn:mace:shibboleth:2.0:resolver:ad classpath:/schema/shibboleth-2.0-attribute-resolver-ad.xsd
   http://grouper.internet2.edu/shibboleth/2.0 classpath:/schema/shibboleth-2.0-grouper.xsd
   http://grouper.internet2.edu/psp classpath:/schema/psp.xsd
   http://grouper.internet2.edu/psp-grouper-ldap classpath:/schema/psp-grouper-ldap.xsd
   http://grouper.internet2.edu/psp-grouper-changelog classpath:/schema/psp-grouper-changelog.xsd
   http://grouper.internet2.edu/psp-grouper-source classpath:/schema/psp-grouper-source.xsd">

  <!-- Grouper data connectors. -->

  <!-- The GroupDataConnector returns attributes representing the group whose name is the principal name. The returned group 
    must be a child of the stem whose name is the edu.internet2.middleware.psp.baseStem property. Groups under the "etc" stem 
    are omitted. -->
  <resolver:DataConnector
    id="GroupDataConnector"
    xsi:type="grouper:GroupDataConnector">
    <!-- The MINUS filter matches stems which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The GroupInStem filter matches groups which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:GroupInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <grouper:Filter
        xsi:type="grouper:GroupInStem"
        name="etc"
        scope="SUB" />
    </grouper:Filter>
    <!-- The "members" attribute values are equivalent to group.getMembers(). -->
    <grouper:Attribute id="members" />
    <!-- The "groups" attribute values are equivalent to group.getGroups(). -->
    <grouper:Attribute id="groups" />
  </resolver:DataConnector>

  <!-- The GroupWithoutMermbershipsDataConnector returns attributes representing the group whose name is the principal name. 
    The returned group must be a child of the stem whose name is the edu.internet2.middleware.psp.baseStem property. Groups under 
    the "etc" stem are omitted. No memberships (groups or members) should be returned by this data connector to improve performance 
    of identifier resolution. -->
  <resolver:DataConnector
    id="GroupWithoutMermbershipsDataConnector"
    xsi:type="grouper:GroupDataConnector">
    <!-- The MINUS filter matches stems which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The GroupInStem filter matches groups which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:GroupInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <grouper:Filter
        xsi:type="grouper:GroupInStem"
        name="etc"
        scope="SUB" />
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- The StemDataConnector returns attributes representing the stem whose name is the principal name. The returned stem 
    must be a child of the stem whose name is the edu.internet2.middleware.psp.baseStem property. The "etc" stem and all children 
    are omitted. -->
  <resolver:DataConnector
    id="StemDataConnector"
    xsi:type="grouper:StemDataConnector">
    <!-- The MINUS filter matches stems which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The StemInStem filter matches stems which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:StemInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <!-- The OR filter matches stems which match either the first or second child filter. -->
      <grouper:Filter xsi:type="grouper:OR">
        <!-- The StemInStem filter matches stems which are children of the given stem. -->
        <grouper:Filter
          xsi:type="grouper:StemInStem"
          name="etc"
          scope="SUB" />
        <!-- The StemNameExact filter matches stems with the given name. -->
        <grouper:Filter
          xsi:type="grouper:StemNameExact"
          name="etc" />
      </grouper:Filter>
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- The MemberDataConnector returns attributes representing the member whose subject id or identifier is the principal 
    name. -->
  <resolver:DataConnector
    id="MemberDataConnector"
    xsi:type="grouper:MemberDataConnector">
    <!-- Return members from the "ldap" source only. -->
    <grouper:Filter
      xsi:type="grouper:MemberSource"
      sourceId="ldap" />
    <!-- Return the "dn" attribute of members whose subject source id is "ldap". -->
    <grouper:Attribute
      id="dn"
      source="ldap" />
  </resolver:DataConnector>


  <!-- Returns a single "groupNames" attribute whose values are the names of all groups matching the filter. The groups returned 
    are children of the stem whose name is the edu.internet2.middleware.psp.baseStem property. Groups under the "etc" stem are 
    omitted. -->
  <resolver:DataConnector
    id="AllGroupNamesConnector"
    xsi:type="psp-grouper-source:AllGroupNamesDataConnector">
    <!-- The MINUS filter matches stems which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The GroupInStem filter matches groups which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:GroupInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <grouper:Filter
        xsi:type="grouper:GroupInStem"
        name="etc"
        scope="SUB" />
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- The names of all groups matching the data connector filter. -->
  <resolver:AttributeDefinition
    id="groupNames"
    xsi:type="ad:Simple">
    <resolver:Dependency ref="AllGroupNamesConnector" />
  </resolver:AttributeDefinition>

  <!-- Returns a single "stemNames" attribute whose values are the names of all stems matching the filter. The stems returned 
    are children of the stem whose name is the edu.internet2.middleware.psp.baseStem property. The "etc" stem and all children 
    are omitted. -->
  <resolver:DataConnector
    id="AllStemNamesConnector"
    xsi:type="psp-grouper-source:AllStemNamesDataConnector">
    <!-- The MINUS filter matches stems which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The StemInStem filter matches stems which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:StemInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <!-- The OR filter matches stems which match either the first or second child filter. -->
      <grouper:Filter xsi:type="grouper:OR">
        <!-- The StemInStem filter matches stems which are children of the given stem. -->
        <grouper:Filter
          xsi:type="grouper:StemInStem"
          name="etc"
          scope="SUB" />
        <!-- The StemNameExact filter matches stems with the given name. -->
        <grouper:Filter
          xsi:type="grouper:StemNameExact"
          name="etc" />
      </grouper:Filter>
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- The names of all stems matching the data connector filter. -->
  <resolver:AttributeDefinition
    id="stemNames"
    xsi:type="ad:Simple">
    <resolver:Dependency ref="AllStemNamesConnector" />
  </resolver:AttributeDefinition>


  <!-- ChangeLogDataConnectors return attributes representing the change log entry whose sequence number is the principal 
    name. -->

  <!-- Returns change log attributes representing the deletion of a stem. -->
  <resolver:DataConnector
    id="DeleteStemChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
    <grouper:Filter
      xsi:type="psp-grouper-changelog:ChangeLogEntry"
      category="stem"
      action="deleteStem" />
  </resolver:DataConnector>

  <!-- Returns change log attributes representing the changing of a stem's name. -->
  <resolver:DataConnector
    id="UpdateStemNameChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The AND filter matches both child filters. -->
    <grouper:Filter xsi:type="grouper:AND">
      <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogEntry"
        category="stem"
        action="updateStem" />
      <!-- The ChangeLogExactAttribute filter matches change log entries with the given attribute and value. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogExactAttribute"
        name="propertyChanged"
        value="name" />
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- Returns change log attributes representing the changing of a stem's description. -->
  <resolver:DataConnector
    id="UpdateStemDescriptionChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The AND filter matches both child filters. -->
    <grouper:Filter xsi:type="grouper:AND">
      <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogEntry"
        category="stem"
        action="updateStem" />
      <!-- The ChangeLogExactAttribute filter matches change log entries with the given attribute and value. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogExactAttribute"
        name="propertyChanged"
        value="description" />
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- Returns change log attributes representing the deletion of a group. -->
  <resolver:DataConnector
    id="DeleteGroupChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
    <grouper:Filter
      xsi:type="psp-grouper-changelog:ChangeLogEntry"
      category="group"
      action="deleteGroup" />
  </resolver:DataConnector>

  <!-- Returns change log attributes representing the changing of a group's name. -->
  <resolver:DataConnector
    id="UpdateGroupNameChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The AND filter matches both child filters. -->
    <grouper:Filter xsi:type="grouper:AND">
      <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogEntry"
        category="group"
        action="updateGroup" />
      <!-- The ChangeLogExactAttribute filter matches change log entries with the given attribute and value. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogExactAttribute"
        name="propertyChanged"
        value="name" />
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- Returns change log attributes representing the changing of a group's description. -->
  <resolver:DataConnector
    id="UpdateGroupDescriptionChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The AND filter matches both child filters. -->
    <grouper:Filter xsi:type="grouper:AND">
      <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogEntry"
        category="group"
        action="updateGroup" />
      <!-- The ChangeLogExactAttribute filter matches change log entries with the given attribute and value. -->
      <grouper:Filter
        xsi:type="psp-grouper-changelog:ChangeLogExactAttribute"
        name="propertyChanged"
        value="description" />
    </grouper:Filter>
  </resolver:DataConnector>

  <!-- Returns change log attributes representing a membership addition. -->
  <resolver:DataConnector
    id="AddMembershipChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
    <grouper:Filter
      xsi:type="psp-grouper-changelog:ChangeLogEntry"
      category="membership"
      action="addMembership" />
  </resolver:DataConnector>

  <!-- Returns change log attributes representing a membership deletion. -->
  <resolver:DataConnector
    id="DeleteMembershipChangeLogDataConnector"
    xsi:type="psp-grouper-changelog:ChangeLogDataConnector">
    <!-- The ChangeLogEntry filter matches change log entries with the given category and action. -->
    <grouper:Filter
      xsi:type="psp-grouper-changelog:ChangeLogEntry"
      category="membership"
      action="deleteMembership" />
  </resolver:DataConnector>

  <!-- Static data connector. -->
  <resolver:DataConnector
    id="StaticDataConnector"
    xsi:type="dc:Static">
    <!-- Group LDAP objectclass. -->
    <dc:Attribute id="staticGroupObjectclass">
      <dc:Value>top</dc:Value>
      <dc:Value>${edu.internet2.middleware.psp.groupObjectClass}</dc:Value>
      <dc:Value>posixGroup</dc:Value>
      <!-- <dc:Value>eduMember</dc:Value> -->
    </dc:Attribute>
    <!-- Stem LDAP objectclass. -->
    <dc:Attribute id="staticStemObjectclass">
      <dc:Value>top</dc:Value>
      <dc:Value>organizationalUnit</dc:Value>
    </dc:Attribute>
    <!-- The member LDAP eduMember objectclass. -->
    <dc:Attribute id="memberObjectclass">
      <dc:Value>eduMember</dc:Value>
    </dc:Attribute>
  </resolver:DataConnector>


  <!-- Stem identifier and attributes. -->

  <!-- The LDAP DN of a stem. For example, "ou=stemExtension,ou=groups,dc=example,dc=edu". -->
  <resolver:AttributeDefinition
    id="stemDn"
    xsi:type="psp-grouper-ldap:LdapDnFromGrouperNamePSOIdentifier"
    structure="bushy"
    sourceAttributeID="stemNameInStem"
    rdnAttributeName="ou"
    stemRdnAttributeName="ou"
    baseDn="${edu.internet2.middleware.psp.groupsBaseDn}"
    baseStem="${edu.internet2.middleware.psp.baseStem}">
    <!-- Dependencies which return a "stemNameInStem" attribute whose value is the stem name. -->
    <resolver:Dependency ref="stemNameInStem" />
  </resolver:AttributeDefinition>

  <!-- The value of the "stemNameInStem" attribute is the name of a stem. The name of the stem is returned only if the stem 
    is a child of the stem whose name is the edu.internet2.middleware.psp.baseStem property. If the edu.internet2.middleware.psp.baseStem 
    property is the root stem, stems under the "etc" stem are omitted. -->
  <resolver:AttributeDefinition
    id="stemNameInStem"
    xsi:type="grouper:FilteredName"
    sourceAttributeID="name">
    <!-- Dependencies which return a "name" attribute whose value is the stem name. -->
    <resolver:Dependency ref="StemDataConnector" />
    <resolver:Dependency ref="DeleteStemChangeLogDataConnector" />
    <resolver:Dependency ref="UpdateStemNameChangeLogDataConnector" />
    <resolver:Dependency ref="UpdateStemDescriptionChangeLogDataConnector" />
    <!-- The MINUS filter matches names which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The NameInStem filter matches names which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:NameInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <!-- The OR filter matches names which match either the first or second child filter. -->
      <grouper:Filter xsi:type="grouper:OR">
        <!-- The NameInStem filter matches names which are children of the given stem. -->
        <grouper:Filter
          xsi:type="grouper:NameInStem"
          name="etc"
          scope="SUB" />
        <!-- The NameExact filter matches names with the given name. -->
        <grouper:Filter
          xsi:type="grouper:NameExact"
          name="etc" />
      </grouper:Filter>
    </grouper:Filter>
  </resolver:AttributeDefinition>

  <!-- The alternate LDAP DN of a stem via the change log. For example, the DN of a stem before it is renamed. -->
  <resolver:AttributeDefinition
    id="stemDnAlternateChangeLog"
    xsi:type="psp-grouper-ldap:LdapDnFromGrouperNamePSOIdentifier"
    structure="bushy"
    sourceAttributeID="propertyOldValue"
    rdnAttributeName="ou"
    stemRdnAttributeName="ou"
    baseDn="${edu.internet2.middleware.psp.groupsBaseDn}"
    baseStem="${edu.internet2.middleware.psp.baseStem}">
    <!-- Dependency which returns a "propertyOldValue" attribute whose value is the old stem name. -->
    <resolver:Dependency ref="UpdateStemNameChangeLogDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The stem objectclass attribute. If a change log entry is resolved, do not return dependencies from the static data 
    connector. -->
  <resolver:AttributeDefinition
    id="stemObjectclass"
    xsi:type="ad:Script"
    language="rhino-nonjdk">
    <resolver:Dependency ref="StaticDataConnector" />
    <resolver:Dependency ref="UpdateStemNameChangeLogDataConnector" />
    <resolver:Dependency ref="UpdateStemDescriptionChangeLogDataConnector" />
    <!-- <resolver:Dependency ref="AttributeAssignValueChangeLogDataConnector" /> -->
    <ad:Script><![CDATA[
        // Import Shibboleth attribute provider.
        // load("nashorn:mozilla_compat.js");
	importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
        // BasicAttribute = Java.type("edu.internet2.middleware.shibboleth.common.attribute.provider");
	
        // Create the attribute to be returned.
        stemObjectclass = new BasicAttribute("stemObjectclass");
        
        // Include values from 'staticStemObjectclass' if a change log entry is not being processed.
        if (typeof changeLogCategory != "undefined" && changeLogCategory != null) {
            // return nothing        
        } else {
            stemObjectclass.getValues().addAll(staticStemObjectclass.getValues());
        }                       
    ]]></ad:Script>
  </resolver:AttributeDefinition>

  <!-- The value of stem "stemOu" attribute is the stem extension. -->
  <resolver:AttributeDefinition
    id="stemOu"
    xsi:type="ad:Simple"
    sourceAttributeID="extension">
    <resolver:Dependency ref="StemDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The value of the stem "description" attribute is the stem description. -->
  <resolver:AttributeDefinition
    id="stemDescription"
    xsi:type="ad:Simple"
    sourceAttributeID="description">
    <resolver:Dependency ref="StemDataConnector" />
    <resolver:Dependency ref="UpdateStemDescriptionChangeLogDataConnector" />
  </resolver:AttributeDefinition>


  <!-- Group identifier and attributes. -->

  <!-- The LDAP DN of a group. For example, "cn=groupExtension,ou=stem,ou=groups,dc=example,dc=edu". -->
  <resolver:AttributeDefinition
    id="groupDn"
    xsi:type="psp-grouper-ldap:LdapDnFromGrouperNamePSOIdentifier"
    structure="${edu.internet2.middleware.psp.structure}"
    sourceAttributeID="groupNameInStem"
    rdnAttributeName="cn"
    stemRdnAttributeName="ou"
    baseDn="${edu.internet2.middleware.psp.groupsBaseDn}"
    baseStem="${edu.internet2.middleware.psp.baseStem}">
    <!-- Dependencies which return a "groupNameInStem" attribute whose value is the group name. -->
    <resolver:Dependency ref="groupNameInStem" />
  </resolver:AttributeDefinition>

  <!-- The value of the "groupNameInStem" attribute is the name of a group. The name of the group is returned only if the 
    group is a child of the stem whose name is the edu.internet2.middleware.psp.baseStem property. If the edu.internet2.middleware.psp.baseStem 
    property is the root stem, groups under the "etc" stem are omitted. -->
  <resolver:AttributeDefinition
    id="groupNameInStem"
    xsi:type="grouper:FilteredName"
    sourceAttributeID="name">
    <!-- Dependencies which return a "name" attribute whose value is the group name. -->
    <resolver:Dependency ref="GroupWithoutMermbershipsDataConnector" />
    <resolver:Dependency ref="DeleteGroupChangeLogDataConnector" />
    <resolver:Dependency ref="UpdateGroupNameChangeLogDataConnector" />
    <resolver:Dependency ref="UpdateGroupDescriptionChangeLogDataConnector" />
    <!-- The MINUS filter matches stems which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The NameInStem filter matches names which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:NameInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <grouper:Filter
        xsi:type="grouper:NameInStem"
        name="etc"
        scope="SUB" />
    </grouper:Filter>
  </resolver:AttributeDefinition>

  <!-- The alternate LDAP DN of a group. For example, the DN of a group before it is renamed. -->
  <resolver:AttributeDefinition
    id="groupDnAlternate"
    xsi:type="psp-grouper-ldap:LdapDnFromGrouperNamePSOIdentifier"
    structure="${edu.internet2.middleware.psp.structure}"
    sourceAttributeID="alternateName"
    rdnAttributeName="cn"
    stemRdnAttributeName="ou"
    baseDn="${edu.internet2.middleware.psp.groupsBaseDn}"
    baseStem="${edu.internet2.middleware.psp.baseStem}">
    <!-- Dependency which returns an "alternateName" attribute whose value is the old group name. -->
    <resolver:Dependency ref="GroupWithoutMermbershipsDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The alternate LDAP DN of a group via the change log. For example, the DN of a group before it is renamed. -->
  <resolver:AttributeDefinition
    id="groupDnAlternateChangeLog"
    xsi:type="psp-grouper-ldap:LdapDnFromGrouperNamePSOIdentifier"
    structure="${edu.internet2.middleware.psp.structure}"
    sourceAttributeID="propertyOldValue"
    rdnAttributeName="cn"
    stemRdnAttributeName="ou"
    baseDn="${edu.internet2.middleware.psp.groupsBaseDn}"
    baseStem="${edu.internet2.middleware.psp.baseStem}">
    <!-- Dependency which returns a "propertyOldValue" attribute whose value is the old group name. -->
    <resolver:Dependency ref="UpdateGroupNameChangeLogDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The group objectclass attribute. If a change log entry is resolved, do not return dependencies from the static data 
    connector unless the change log entry is a membership change. -->
  <resolver:AttributeDefinition
    id="groupObjectclass"
    xsi:type="ad:Script"
    language="rhino-nonjdk">
    <resolver:Dependency ref="StaticDataConnector" />
    <resolver:Dependency ref="AddMembershipChangeLogDataConnector" />
    <resolver:Dependency ref="DeleteMembershipChangeLogDataConnector" />
    <resolver:Dependency ref="UpdateGroupNameChangeLogDataConnector" />
    <resolver:Dependency ref="UpdateGroupDescriptionChangeLogDataConnector" />
    <!-- <resolver:Dependency ref="AttributeAssignValueChangeLogDataConnector" /> -->
    <ad:Script><![CDATA[
        // Import Shibboleth attribute provider.
        //load("nashorn:mozilla_compat.js");
	importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
	//BasicAttribute = Java.type("edu.internet2.middleware.shibboleth.common.attribute.provider");        

        // Create the attribute to be returned.
        groupObjectclass = new BasicAttribute("groupObjectclass");
        
        // Include values from 'staticGroupObjectClass' if the change log category is 'membership'.
        if (typeof changeLogCategory != "undefined" && changeLogCategory != null) {
            if (changeLogCategory.getValues().contains("membership")) {          
                groupObjectclass.getValues().addAll(staticGroupObjectclass.getValues());
            }
        // Include values from 'staticGroupObjectClass' if a change log entry is not being processed.
        } else {
            groupObjectclass.getValues().addAll(staticGroupObjectclass.getValues());
        }                       
    ]]></ad:Script>
  </resolver:AttributeDefinition>

  <!-- The group objectclass attribute with eduMember. -->
  <resolver:AttributeDefinition
    id="groupObjectclassEduMember"
    xsi:type="ad:Simple">
    <resolver:Dependency ref="StaticDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The value of the group "cn" attribute is the group extension. -->
  <!-- If the group DN structure is "bushy" the sourceAttributeID should be "extension". -->
  <!-- If the group DN structure is "flat" the sourceAttributeID should be "name". -->
  <resolver:AttributeDefinition
    id="cn"
    xsi:type="ad:Simple"
    sourceAttributeID="${edu.internet2.middleware.psp.cnSourceAttributeID}">
    <resolver:Dependency ref="GroupWithoutMermbershipsDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The value of the group "description" attribute is the group description. -->
  <resolver:AttributeDefinition
    id="groupDescription"
    xsi:type="ad:Simple"
    sourceAttributeID="description">
    <resolver:Dependency ref="GroupWithoutMermbershipsDataConnector" />
    <resolver:Dependency ref="UpdateGroupDescriptionChangeLogDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The value of the group "gidNumber" attribute is the group gid (UNIX gid). -->
  <resolver:AttributeDefinition
        id="groupgidNumber"
        xsi:type="ad:Simple"
        sourceAttributeID="gid">
        <resolver:Dependency ref="GroupWithoutMermbershipsDataConnector" />
  </resolver:AttributeDefinition>

  <!-- The values of the "membersLdap" attribute are the subject ids of group members from the "ldap" source. -->
  <resolver:AttributeDefinition
    id="membersLdap"
    xsi:type="grouper:Member"
    sourceAttributeID="members">
    <resolver:Dependency ref="GroupDataConnector" />
    <!-- The values of the "id" attribute are the identifiers of subjects whose source id is "ldap". -->
    <grouper:Attribute
      id="id"
      source="ldap" />
  </resolver:AttributeDefinition>

  <!-- The values of the "membersGsa" attribute are the names of group members which are grouper groups. -->
  <resolver:AttributeDefinition
    id="membersGsa"
    xsi:type="grouper:Member"
    sourceAttributeID="members">
    <resolver:Dependency ref="GroupDataConnector" />
    <!-- The values of the "name" attribute are the names of groups whose source is "g:gsa". -->
    <grouper:Attribute
      id="name"
      source="g:gsa" />
  </resolver:AttributeDefinition>


  <!-- Member identifier. -->

  <!-- The LDAP DN of a member. The value of this attribute is the "dn" of subjects whose source id is "ldap". -->
  <resolver:AttributeDefinition
    id="memberDn"
    xsi:type="psp:PSOIdentifier"
    sourceAttributeID="dn">
    <resolver:Dependency ref="MemberDataConnector" />
  </resolver:AttributeDefinition>


  <!-- Change log group membership. -->

  <!-- The value of the "changeLogMembershipGroupDn" attribute is a pso identifier whose ID is the ldap DN of the group of 
    a membership change log entry. -->
  <resolver:AttributeDefinition
    id="changeLogMembershipGroupDn"
    xsi:type="psp-grouper-ldap:LdapDnFromGrouperNamePSOIdentifier"
    structure="${edu.internet2.middleware.psp.structure}"
    sourceAttributeID="changeLogMembershipGroupName"
    rdnAttributeName="cn"
    stemRdnAttributeName="ou"
    baseDn="${edu.internet2.middleware.psp.groupsBaseDn}"
    baseStem="${edu.internet2.middleware.psp.baseStem}">
    <resolver:Dependency ref="changeLogMembershipGroupName" />
  </resolver:AttributeDefinition>

  <!-- The value of the "changeLogMembershipGroupName" attribute is the name of the group of a membership change log entry. 
    The name of the group is returned only if the group is a child of the stem whose name is the edu.internet2.middleware.psp.baseStem 
    property. If the edu.internet2.middleware.psp.baseStem property is the root stem, groups under the "etc" stem are omitted. -->
  <resolver:AttributeDefinition
    id="changeLogMembershipGroupName"
    xsi:type="grouper:FilteredName"
    sourceAttributeID="groupName">
    <resolver:Dependency ref="AddMembershipChangeLogDataConnector" />
    <resolver:Dependency ref="DeleteMembershipChangeLogDataConnector" />
    <!-- The MINUS filter matches stems which match the first child filter and not the second. -->
    <grouper:Filter xsi:type="grouper:MINUS">
      <!-- The GroupInStem filter matches groups which are children of the given stem. -->
      <grouper:Filter
        xsi:type="grouper:NameInStem"
        name="${edu.internet2.middleware.psp.baseStem}"
        scope="SUB" />
      <grouper:Filter
        xsi:type="grouper:NameInStem"
        name="etc"
        scope="SUB" />
    </grouper:Filter>
  </resolver:AttributeDefinition>

  <!-- The value of the "changeLogMembershipGroupSubjectName" attribute is the name of the group member of a membership change 
    log entry. -->
  <resolver:AttributeDefinition
    id="changeLogMembershipGroupSubjectName"
    xsi:type="ad:Script"
    language="rhino-nonjdk">
    <resolver:Dependency ref="AddMembershipChangeLogDataConnector" />
    <resolver:Dependency ref="DeleteMembershipChangeLogDataConnector" />
    <ad:Script><![CDATA[
        // Import Shibboleth attribute provider.
        //load("nashorn:mozilla_compat.js");
	importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
	// BasicAttribute = Java.type("edu.internet2.middleware.shibboleth.common.attribute.provider");        

        // Create the attribute to be returned.
        changeLogMembershipGroupSubjectName = new BasicAttribute("changeLogMembershipGroupSubjectName");
        
        // Return 'subjectName' attribute values if the 'sourceId' attribute is 'g:gsa'.
        if (typeof sourceId != "undefined" && sourceId != null ){            
            if (sourceId.getValues().contains("g:gsa")) {
                if (typeof subjectName != "undefined" && subjectName != null ){
                    changeLogMembershipGroupSubjectName.getValues().add(subjectName.getValues().get(0));
                }
            }          
        }
    ]]></ad:Script>
  </resolver:AttributeDefinition>

  <!-- The value of the "changeLogMembershipLdapSubjectId" attribute is the subject identifier of the "ldap" source member 
    of a membership change log entry. -->
  <resolver:AttributeDefinition
    id="changeLogMembershipLdapSubjectId"
    xsi:type="ad:Script"
    language="rhino-nonjdk">
    <resolver:Dependency ref="AddMembershipChangeLogDataConnector" />
    <resolver:Dependency ref="DeleteMembershipChangeLogDataConnector" />
    <ad:Script><![CDATA[
        // Import Shibboleth attribute provider.
        // load("nashorn:mozilla_compat.js");
	importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
	// BasicAttribute = Java.type("edu.internet2.middleware.shibboleth.common.attribute.provider");        

        // Create the attribute to be returned.
        changeLogMembershipLdapSubjectId = new BasicAttribute("changeLogMembershipLdapSubjectId");
        
        // Return 'subjectId' attribute values if the 'sourceId' attribute is 'ldap'.
        if (typeof sourceId != "undefined" && sourceId != null ){            
            if (sourceId.getValues().contains("ldap")) {
                if (typeof subjectId != "undefined" && subjectId != null ){
                    changeLogMembershipLdapSubjectId.getValues().add(subjectId.getValues().get(0));
                }
            }
        }
    ]]></ad:Script>
  </resolver:AttributeDefinition>

</AttributeResolver>
<?xml version="1.0" encoding="utf-8"?>

<!--
Grouper subject resolver configuration
-->

<sources>

  <!-- Group Subject Resolver -->
  
  <!-- 
     You can flag a source as not throwing exception on a findAll (general search) i.e. if it is
     ok if it is down.  Generally you probably won't want to do this.  It defaults to true if omitted.
  
     <init-param>
       <param-name>throwErrorOnFindAllFailure</param-name>
       <param-value>false</param-value>
     </init-param>
   -->
  
  <!-- 
      You can make virtual attributes (attributes with formatting or based on other attributes) like this:
      init-param name is subjectVirtualAttribute_<index>_<name> where index is the order to be processed
      if some depend on others (0 to 99).  The value is the jexl expression language.  You can use subjectUtils
      methods (aliased with "subjectUtils", or you can register your own class (must have default constructor).
      Here are examples:
  
     <init-param>
       <param-name>subjectVirtualAttribute_0_loginIdLfName</param-name>
       <param-value>Hey ${subject.getAttributeValue('LOGINID')} and ${subject.getAttributeValue('LFNAME')}</param-value>
     </init-param>
     <init-param>
       <param-name>subjectVirtualAttribute_1_loginIdLfNameLoginId</param-name>
       <param-value>${subject.getAttributeValue('loginIdLfName')} Hey ${subject.getAttributeValue('LOGINID')} and ${subject.getAttributeValue('LFNAME')}</param-value>
     </init-param>
     <init-param>
       <param-name>subjectVirtualAttributeVariable_JDBCSourceAdapterTest</param-name>
       <param-value>edu.internet2.middleware.subject.provider.JDBCSourceAdapterTest</param-value>
     </init-param>
     <init-param>
       <param-name>subjectVirtualAttribute_2_loginIdSquared</param-name>
       <param-value>${JDBCSourceAdapterTest.appendToSelf(subject.getAttributeValue('LOGINID'))}</param-value>
     </init-param>
  
    The first virtual attribute is accessible via: subject.getAttributeValue("loginIdLfNameLoginId");
  
   -->
  
  <!-- 
    NOTE: It is recommended that you **not** change the default
          values for this source adapter.
  -->
  <source adapterClass="edu.internet2.middleware.grouper.GrouperSourceAdapter">
    <id>g:gsa</id>
    <name>Grouper: Group Source Adapter</name>
    <type>group</type>

    <init-param>
      <param-name>subjectVirtualAttribute_0_searchAttribute0</param-name>
      <param-value>${subject.getAttributeValue('name')},${subject.getAttributeValue('displayName')},${subject.getAttributeValue('alternateName')}</param-value>
    </init-param>
    <init-param>
      <param-name>sortAttribute0</param-name>
      <param-value>displayExtension</param-value>
    </init-param>
    <init-param>
      <param-name>searchAttribute0</param-name>
      <param-value>searchAttribute0</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>
    <internal-attribute>searchAttribute0</internal-attribute>
  </source>
  <!-- Group Subject Resolver -->

  <!-- 
    NOTE: It is recommended that you **not** change the default
          values for this source adapter.
  -->
  <source adapterClass="edu.internet2.middleware.grouper.entity.EntitySourceAdapter">
    <id>grouperEntities</id>
    <name>Grouper: Entity Source Adapter</name>
    <type>application</type>

    <init-param>
      <param-name>subjectVirtualAttribute_0_searchAttribute0</param-name>
      <!-- TODO add attribute for subject identifier -->
      <param-value>${subject.getAttributeValue('name')},${subject.getAttributeValue('displayName')},${subject.getAttributeValue('alternateName')}</param-value>
    </init-param>
    <init-param>
      <param-name>sortAttribute0</param-name>
      <param-value>name</param-value>
    </init-param>
    <init-param>
      <param-name>searchAttribute0</param-name>
      <param-value>searchAttribute0</param-value>
    </init-param>
    <internal-attribute>searchAttribute0</internal-attribute>
  </source>
  <!-- Entity Subject Resolver -->

    <!-- This is an alternate jdbc source which allows for more complex searches, assumes
               all data is in one table or view, and that all attributes are single valued.  There are
                     not queries to configure in sources.xml -->
    <source adapterClass="edu.internet2.middleware.grouper.subj.GrouperJdbcSourceAdapter2">
        <id>sourceId</id>
        <name>Source name</name>
        <type>person</type>
        <init-param>
         <param-name>jdbcConnectionProvider</param-name>
         <param-value>edu.internet2.middleware.grouper.subj.GrouperJdbcConnectionProvider</param-value>
        </init-param>

        <init-param>
          <param-name>maxResults</param-name>
          <param-value>1000</param-value>
        </init-param>


        <init-param>
         <param-name>dbTableOrView</param-name>
         <param-value>v_grouper_identity</param-value>
        </init-param>
        <init-param>
         <param-name>subjectIdCol</param-name>
         <param-value>eduniidmsid</param-value>
        </init-param>
        <init-param>
          <param-name>nameCol</param-name>
          <param-value>dn</param-value>
        </init-param>
        <init-param>
          <param-name>descriptionCol</param-name>
          <param-value>description</param-value>
        </init-param>
        <init-param>
          <param-name>dn</param-name>
          <param-value>dn</param-value>
        </init-param>
        <init-param>
        <!-- search col where general searches take place, lower case -->
          <param-name>lowerSearchCol</param-name>
          <param-value>lower(description)</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, add multiple by incrementing the 0 index -->
         <param-name>subjectIdentifierCol0</param-name>
         <param-value>uun</param-value>
        </init-param>
        <!-- now you can count up from 0 to N of attributes for various cols.
             The name is how to reference in subject.getAttribute() -->
        <init-param>
         <param-name>subjectAttributeCol0</param-name>
         <param-value>full_name</param-value>
        </init-param>
        <init-param>
         <param-name>subjectAttributeName0</param-name>
         <param-value>Full Name</param-value>
        </init-param>
        <init-param>
         <param-name>subjectAttributeCol1</param-name>
         <param-value>uun</param-value>
        </init-param>
        <init-param>
         <param-name>subjectAttributeName1</param-name>
         <param-value>UUN</param-value>
        </init-param>
        <init-param>
         <param-name>sortAttribute0</param-name>
         <param-value>description</param-value>
        </init-param>
		<!--
        <init-param>
         <param-name>searchAttribute0</param-name>
         <param-value>uun</param-value>
        </init-param>
-->
	 <init-param>
       <param-name>subjectVirtualAttribute_0_searchAttribute0</param-name>
       <param-value>${subjectUtils.defaultIfBlank(subject.getAttributeValue('UUN'), "")},${subjectUtils.defaultIfBlank(subject.getAttributeValue('Full Name'), "")}</param-value>
     </init-param>
     <init-param>
       <param-name>searchAttribute0</param-name>
       <param-value>searchAttribute0</param-value>
     </init-param>
     <internal-attribute>searchAttribute0</internal-attribute>
   </source>


  <!-- LDAP Subject Resolver  
  <source adapterClass="edu.internet2.middleware.subject.provider.LdapSourceAdapter">
    <id>ldap</id>
    <name>LdapSourceAdapter</name>
    <type>application</type>

    <init-param>
      <param-name>ldapProperties_file</param-name>
      <param-value>ldap.properties</param-value>
    </init-param>
    
    <init-param>
      <param-name>Multiple_Results</param-name>
      <param-value>false</param-value>
    </init-param>
    
    <init-param>
      <param-name>sortAttribute0</param-name>
      <param-value>cn</param-value>
    </init-param>
    <init-param>
      <param-name>searchAttribute0</param-name>
      <param-value>cn</param-value>
    </init-param>     
    
     <init-param>
      <param-name>SubjectID_AttributeType</param-name>
      <param-value>uid</param-value>
    </init-param>
    <init-param>
      <param-name>Name_AttributeType</param-name>
      <param-value>cn</param-value>
    </init-param>
    <init-param>
      <param-name>Description_AttributeType</param-name>
      <param-value>cn</param-value>
    </init-param>

    <search>
        <searchType>searchSubject</searchType>
        <param>
            <param-name>filter</param-name>
            <param-value>
                (&amp;(uid=%TERM%)(objectclass=person))
            </param-value>
        </param>
        <param>
            <param-name>scope</param-name>
            <param-value>SUBTREE_SCOPE</param-value>
        </param>
        <param>
            <param-name>base</param-name>
            <param-value>ou=people,ou=central,dc=authorise-dev,dc=ed,dc=ac,dc=uk</param-value>            
        </param>
         
    </search>
    <search>
        <searchType>searchSubjectByIdentifier</searchType>
        <param>
            <param-name>filter</param-name>
            <param-value>
                (&amp;(uid=%TERM%)(objectclass=person))
            </param-value>
        </param>
        <param>
            <param-name>scope</param-name>
            <param-value>SUBTREE_SCOPE</param-value>
        </param>
        <param>
            <param-name>base</param-name>
            <param-value>ou=people,ou=central,dc=authorise-dev,dc=ed,dc=ac,dc=uk</param-value>
        </param>
    </search>
    
    <search>
       <searchType>search</searchType>
         <param>
            <param-name>filter</param-name>
            <param-value>
                 (&amp;(cn=%TERM%)(objectclass=person))
            </param-value>
        </param>
         <param>
            <param-name>firstlastfilter</param-name>
            <param-value>
                (&amp;(sn=%TERM%)(objectclass=person)))
            </param-value>
        </param>
        <param>
            <param-name>scope</param-name>
            <param-value>SUBTREE_SCOPE</param-value>
        </param>
         <param>
            <param-name>base</param-name>
            <param-value>ou=people,ou=central,dc=authorise-dev,dc=ed,dc=ac,dc=uk</param-value>
        </param>
    </search>
    <init-param>
      <param-name>subjectVirtualAttribute_0_searchAttribute0</param-name>
      <param-value>${subjectUtils.defaultIfBlank(subject.getAttributeValueOrCommaSeparated('uid'), "")},${subjectUtils.defaultIfBlank(subject.getAttributeValueOrCommaSeparated('cn'), "")},${subjectUtils.defaultIfBlank(subject.getAttributeValueOrCommaSeparated('exampleEduRegId'), "")}</param-value>
    </init-param>
    <init-param>
      <param-name>sortAttribute0</param-name>
      <param-value>cn</param-value>
    </init-param>
    <init-param>
      <param-name>searchAttribute0</param-name>
      <param-value>searchAttribute0</param-value>
    </init-param>
    <internal-attribute>searchAttribute0</internal-attribute>
    ///Attributes you would like to display when doing a search 
    <attribute>cn</attribute>
    <attribute>uid</attribute>
   
  </source>-->

</sources>

<?xml version="1.0" encoding="utf-8"?>

<!--
Grouper subject resolver configuration
-->

<sources>

  <!-- Group Subject Resolver -->
  
  <!-- 
     You can flag a source as not throwing exception on a findAll (general search) i.e. if it is
     ok if it is down.  Generally you probably won't want to do this.  It defaults to true if omitted.
  
     <init-param>
       <param-name>throwErrorOnFindAllFailure</param-name>
       <param-value>false</param-value>
     </init-param>
   -->
  
  <!-- 
      You can make virtual attributes (attributes with formatting or based on other attributes) like this:
      init-param name is subjectVirtualAttribute_<index>_<name> where index is the order to be processed
      if some depend on others (0 to 99).  The value is the jexl expression language.  You can use subjectUtils
      methods (aliased with "subjectUtils", or you can register your own class (must have default constructor).
      Here are examples:
  
     <init-param>
       <param-name>subjectVirtualAttribute_0_loginIdLfName</param-name>
       <param-value>Hey ${subject.getAttributeValue('LOGINID')} and ${subject.getAttributeValue('LFNAME')}</param-value>
     </init-param>
     <init-param>
       <param-name>subjectVirtualAttribute_1_loginIdLfNameLoginId</param-name>
       <param-value>${subject.getAttributeValue('loginIdLfName')} Hey ${subject.getAttributeValue('LOGINID')} and ${subject.getAttributeValue('LFNAME')}</param-value>
     </init-param>
     <init-param>
       <param-name>subjectVirtualAttributeVariable_JDBCSourceAdapterTest</param-name>
       <param-value>edu.internet2.middleware.subject.provider.JDBCSourceAdapterTest</param-value>
     </init-param>
     <init-param>
       <param-name>subjectVirtualAttribute_2_loginIdSquared</param-name>
       <param-value>${JDBCSourceAdapterTest.appendToSelf(subject.getAttributeValue('LOGINID'))}</param-value>
     </init-param>
  
    The first virtual attribute is accessible via: subject.getAttributeValue("loginIdLfNameLoginId");
  
   -->
  
  <!-- 
    NOTE: It is recommended that you **not** change the default
          values for this source adapter.
  -->
  <source adapterClass="edu.internet2.middleware.grouper.GrouperSourceAdapter">
    <id>g:gsa</id>
    <name>Grouper: Group Source Adapter</name>
    <type>group</type>

    <init-param>
      <param-name>subjectVirtualAttribute_0_searchAttribute0</param-name>
      <param-value>${subject.getAttributeValue('name')},${subject.getAttributeValue('displayName')},${subject.getAttributeValue('alternateName')}</param-value>
    </init-param>
    <init-param>
      <param-name>sortAttribute0</param-name>
      <param-value>displayExtension</param-value>
    </init-param>
    <init-param>
      <param-name>searchAttribute0</param-name>
      <param-value>searchAttribute0</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>
    <internal-attribute>searchAttribute0</internal-attribute>
  </source>
  <!-- Group Subject Resolver -->

  <!-- 
    NOTE: It is recommended that you **not** change the default
          values for this source adapter.
  -->
  <source adapterClass="edu.internet2.middleware.grouper.entity.EntitySourceAdapter">
    <id>grouperEntities</id>
    <name>Grouper: Entity Source Adapter</name>
    <type>application</type>

    <init-param>
      <param-name>subjectVirtualAttribute_0_searchAttribute0</param-name>
      <!-- TODO add attribute for subject identifier -->
      <param-value>${subject.getAttributeValue('name')},${subject.getAttributeValue('displayName')},${subject.getAttributeValue('alternateName')}</param-value>
    </init-param>
    <init-param>
      <param-name>sortAttribute0</param-name>
      <param-value>name</param-value>
    </init-param>
    <init-param>
      <param-name>searchAttribute0</param-name>
      <param-value>searchAttribute0</param-value>
    </init-param>
    <internal-attribute>searchAttribute0</internal-attribute>
  </source>
  <!-- Entity Subject Resolver -->

    <!-- This is an alternate jdbc source which allows for more complex searches, assumes
               all data is in one table or view, and that all attributes are single valued.  There are
                     not queries to configure in sources.xml -->
    <source adapterClass="edu.internet2.middleware.grouper.subj.GrouperJdbcSourceAdapter2">
        <id>sourceId</id>
        <name>Source name</name>
        <type>person</type>
        <init-param>
         <param-name>jdbcConnectionProvider</param-name>
         <param-value>edu.internet2.middleware.grouper.subj.GrouperJdbcConnectionProvider</param-value>
        </init-param>

        <init-param>
          <param-name>maxResults</param-name>
          <param-value>1000</param-value>
        </init-param>


        <init-param>
         <param-name>dbTableOrView</param-name>
         <param-value>v_grouper_identity</param-value>
        </init-param>
        <init-param>
         <param-name>subjectIdCol</param-name>
         <param-value>eduniidmsid</param-value>
        </init-param>
        <init-param>
          <param-name>nameCol</param-name>
          <param-value>dn</param-value>
        </init-param>
        <init-param>
          <param-name>descriptionCol</param-name>
          <param-value>description</param-value>
        </init-param>
        <init-param>
          <param-name>dn</param-name>
          <param-value>dn</param-value>
        </init-param>
        <init-param>
        <!-- search col where general searches take place, lower case -->
          <param-name>lowerSearchCol</param-name>
          <param-value>lower(description)</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, add multiple by incrementing the 0 index -->
         <param-name>subjectIdentifierCol0</param-name>
         <param-value>uun</param-value>
        </init-param>
        <!-- now you can count up from 0 to N of attributes for various cols.
             The name is how to reference in subject.getAttribute() -->
        <init-param>
         <param-name>subjectAttributeCol0</param-name>
         <param-value>full_name</param-value>
        </init-param>
        <init-param>
         <param-name>subjectAttributeName0</param-name>
         <param-value>Full Name</param-value>
        </init-param>
        <init-param>
         <param-name>subjectAttributeCol1</param-name>
         <param-value>uun</param-value>
        </init-param>
        <init-param>
         <param-name>subjectAttributeName1</param-name>
         <param-value>UUN</param-value>
        </init-param>
        <init-param>
         <param-name>sortAttribute0</param-name>
         <param-value>description</param-value>
        </init-param>
		<!--
        <init-param>
         <param-name>searchAttribute0</param-name>
         <param-value>uun</param-value>
        </init-param>
-->
	 <init-param>
       <param-name>subjectVirtualAttribute_0_searchAttribute0</param-name>
       <param-value>${subjectUtils.defaultIfBlank(subject.getAttributeValue('UUN'), "")},${subjectUtils.defaultIfBlank(subject.getAttributeValue('Full Name'), "")}</param-value>
     </init-param>
     <init-param>
       <param-name>searchAttribute0</param-name>
       <param-value>searchAttribute0</param-value>
     </init-param>
     <internal-attribute>searchAttribute0</internal-attribute>
   </source>


  <!-- LDAP Subject Resolver --> 
  <source adapterClass="edu.internet2.middleware.subject.provider.LdapSourceAdapter">
    <id>ldap</id>
    <name>LdapSourceAdapter</name>
    <type>application</type>

    <init-param>
      <param-name>ldapProperties_file</param-name>
      <param-value>ldap.properties</param-value>
    </init-param>
    
    <init-param>
      <param-name>Multiple_Results</param-name>
      <param-value>false</param-value>
    </init-param>
    
    <init-param>
      <param-name>sortAttribute0</param-name>
      <param-value>cn</param-value>
    </init-param>
    <init-param>
      <param-name>searchAttribute0</param-name>
      <param-value>cn</param-value>
    </init-param>     
    
     <init-param>
      <param-name>SubjectID_AttributeType</param-name>
      <param-value>uid</param-value>
    </init-param>
    <init-param>
      <param-name>SubjectID_AttributeType</param-name>
      <param-value>uid</param-value>
    </init-param>
    <init-param>
    <param-name>SubjectID_formatToLowerCase</param-name>
    <param-value>true</param-value>
    </init-param>
    <init-param>
      <param-name>Name_AttributeType</param-name>
      <param-value>cn</param-value>
    </init-param>
    <init-param>
      <param-name>Description_AttributeType</param-name>
      <param-value>cn</param-value>
    </init-param>

    <search>
        <searchType>searchSubject</searchType>
        <param>
            <param-name>filter</param-name>
            <param-value>
                (&amp;(uid=%TERM%)(objectclass=person))
            </param-value>
        </param>
        <param>
            <param-name>scope</param-name>
            <param-value>SUBTREE_SCOPE</param-value>
        </param>
        <param>
            <param-name>base</param-name>
            <param-value>ou=people,ou=central,dc=authorise-dev,dc=ed,dc=ac,dc=uk</param-value>            
        </param>
         
    </search>
    <search>
        <searchType>searchSubjectByIdentifier</searchType>
        <param>
            <param-name>filter</param-name>
            <param-value>
                (&amp;(uid=%TERM%)(objectclass=person))
            </param-value>
        </param>
        <param>
            <param-name>scope</param-name>
            <param-value>SUBTREE_SCOPE</param-value>
        </param>
        <param>
            <param-name>base</param-name>
            <param-value>ou=people,ou=central,dc=authorise-dev,dc=ed,dc=ac,dc=uk</param-value>
        </param>
    </search>
    
    <search>
       <searchType>search</searchType>
         <param>
            <param-name>filter</param-name>
            <param-value>
                 (&amp;(cn=%TERM%)(objectclass=person))
            </param-value>
        </param>
         <param>
            <param-name>firstlastfilter</param-name>
            <param-value>
                (&amp;(sn=%TERM%)(objectclass=person)))
            </param-value>
        </param>
        <param>
            <param-name>scope</param-name>
            <param-value>SUBTREE_SCOPE</param-value>
        </param>
         <param>
            <param-name>base</param-name>
            <param-value>ou=people,ou=central,dc=authorise-dev,dc=ed,dc=ac,dc=uk</param-value>
        </param>
    </search>
    <init-param>
      <param-name>subjectVirtualAttribute_0_searchAttribute0</param-name>
      <param-value>${subjectUtils.defaultIfBlank(subject.getAttributeValueOrCommaSeparated('uid'), "")},${subjectUtils.defaultIfBlank(subject.getAttributeValueOrCommaSeparated('cn'), "")},${subjectUtils.defaultIfBlank(subject.getAttributeValueOrCommaSeparated('exampleEduRegId'), "")}</param-value>
    </init-param>
    <init-param>
      <param-name>sortAttribute0</param-name>
      <param-value>cn</param-value>
    </init-param>
    <init-param>
      <param-name>searchAttribute0</param-name>
      <param-value>searchAttribute0</param-value>
    </init-param>
    <internal-attribute>searchAttribute0</internal-attribute>
    ///Attributes you would like to display when doing a search 
    <attribute>cn</attribute>
    <attribute>uid</attribute>
   
  </source>

</sources>

<?xml version="1.0" encoding="utf-8"?>

<!-- Provisioning Service Provider (PSP) configuration. -->

<!-- A <pso /> is a Provisioning Service Object. The authoritative and allSourceIdentifiersRef attributes control the provisioning 
  of all source and target objects. If authoritative is "true", orphan objects will be deleted. Orphan objects exist on a target 
  without a corresponding source object. The allSourceIdentifiersRef attribute refers to an attribute resolver definition whose 
  values are all source identifiers applicable to this provisioned object. -->
<!-- <pso id="entityName" authoritative="[true|false]" allSourceIdentifiersRef="attributeDefinitionID" /> -->

<!-- The pso identifier refers to an attribute resolver definition. The targetId must match the id of a provisioning service 
  target in psp-services.xml. The containerId is the string id of the pso identifier containing these objects. -->
<!-- <identifier ref="attributeDefinitionID" targetId="targetId" containerId="containerId"/> -->

<!-- The identifying attribute has two purposes : (1) to determine the schema entity of target objects returned from a lookup 
  or search request and (2) to be converted to a query to search a target for all identifiers. If the identifying attribute 
  is not present, the pso will be ignored during bulk requests. -->
<!-- <identifyingAttribute name="attributeName" value="attributeValue" /> -->

<!-- The alternate identifier refers to an attribute resolver definition, and is the previous (old) identifier of an object 
  after it has been renamed. -->
<!-- <alternateIdentifier ref="attributeDefinitionID" /> -->

<!-- A provisioned attribute refers to an attribute resolver definition. -->
<!-- <attribute name="attributeName" ref="attributeDefinitionID" /> -->

<!-- References to the identifiers of other objects. -->
<!-- <references name="attributeName"> <reference ... /> </references> -->

<!-- A reference to the identifier of an object refers to an attribute resolver definition. -->
<!-- <reference ref="attributeDefinitionID" toObject="psoId" /> -->

<psp
  xmlns="http://grouper.internet2.edu/psp";
  xmlns:psp="http://grouper.internet2.edu/psp";
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
  xsi:schemaLocation="http://grouper.internet2.edu/psp classpath:/schema/psp.xsd">

  <!-- Provision a grouper stem as an ldap organizational unit. -->
  <pso
    id="stem"
    authoritative="true"
    allSourceIdentifiersRef="stemNames">

    <!-- The ldap organizational unit DN. -->
    <identifier
      ref="stemDn"
      targetId="ldap"
      containerId="${edu.internet2.middleware.psp.groupsBaseDn}" />

    <!-- Identifies stem objects which exist on the target by objectclass attribute value. -->
    <identifyingAttribute
      name="objectclass"
      value="organizationalUnit" />

    <!-- The "old" ldap organizational unit DN calculated from stem update change log events. -->
    <alternateIdentifier ref="stemDnAlternateChangeLog" />


    <!-- The ldap organizational unit "objectClass" attribute. -->
    <attribute
      name="objectClass"
      ref="stemObjectclass" />

    <!-- The ldap organizational unit "ou" attribute. -->
    <attribute
      name="ou"
      ref="stemOu" />

    <!-- The ldap organizational unit "description" attribute. -->
    <attribute
      name="description"
      ref="stemDescription" />

  </pso>

  <!-- Provision a grouper group as an ldap group. -->
  <pso
    id="group"
    authoritative="true"
    allSourceIdentifiersRef="groupNames">

    <!-- The ldap group DN. -->
    <identifier
      ref="groupDn"
      targetId="ldap"
      containerId="${edu.internet2.middleware.psp.groupsBaseDn}" />

    <!-- Identifies ldap group objects which exist on the target by objectClass attribute value. -->
    <identifyingAttribute
      name="objectClass"
      value="${edu.internet2.middleware.psp.groupObjectClass}" />

    <!-- The "old" ldap group DN if a group has been renamed. -->
    <alternateIdentifier ref="groupDnAlternate" />

    <!-- The "old" ldap group DN calculated from group update change log events. -->
    <alternateIdentifier ref="groupDnAlternateChangeLog" />

    <!-- The ldap group "objectClass" attribute. -->
    <attribute
      name="objectClass"
      ref="groupObjectclass" />

    <!-- The ldap group "cn" attribute. -->
    <attribute name="cn" />

    <!-- The ldap group "description" attribute. -->
    <attribute
      name="description"
      ref="groupDescription" />
    
    <!-- The ldap group "gidNumber" attribute. -->
    <attribute
      name="gidNumber"
      ref="groupgidNumber" />

    <!-- The ldap group "member" attribute. -->
    <references name="member" emptyValue="">

      <reference
        ref="membersLdap"
        toObject="member" />

<!--  Comment out -->
      <reference
        ref="membersGsa"
        toObject="group" />
    </references>

  </pso>

  <!-- Do not provision grouper members, but enable lookup. -->
  <pso id="member">

    <!-- The ldap member DN. -->
    <identifier
      ref="memberDn"
      targetId="ldap"
      containerId="${edu.internet2.middleware.psp.peopleBaseDn}" /> 

    <!-- Identifies member objects which exist on the target by objectclass attribute value. -->
    <identifyingAttribute
      name="objectclass"
      value="person" />

  </pso>

  <!-- Provision a group membership triggered by the grouper change log. -->
  <pso id="groupMembership">

    <!-- The ldap group DN calculated from membership change log events. -->
    <identifier
      ref="changeLogMembershipGroupDn"
      targetId="ldap"
      containerId="${edu.internet2.middleware.psp.groupsBaseDn}" />

    <!-- The ldap group "member" attribute. -->
    <references name="member">

      <reference
        ref="changeLogMembershipLdapSubjectId"
        toObject="member" />

      <reference
        ref="changeLogMembershipGroupSubjectName"
        toObject="group" />

    </references>

  </pso>

</psp>
 


2014-09-12 15:28:38,494: [main] INFO  Psp.getPSP(173) -  - Loading psp from configuration directory 'null'
2014-09-12 15:28:43,653: [main] WARN  GrouperStartup.printConfigOnce(164) -  - Grouper starting up: version: 2.2.0, build date: 2014/07/05 12:00:03, env: dev
grouper.properties read from: /u01/app/grouper/grouper.apiBinary-2.2.0/conf/grouper.properties
Grouper current directory is: /u01/app/grouper/grouper.apiBinary-2.2.0/bin
log4j.properties read from:   /u01/app/grouper/grouper.apiBinary-2.2.0/conf/log4j.properties
Grouper logs are not using log4j: class org.apache.commons.logging.impl.SLF4JLocationAwareLog
grouper.hibernate.properties: /u01/app/grouper/grouper.apiBinary-2.2.0/conf/grouper.hibernate.properties
grouper.hibernate.properties: grouper@jdbc:oracle:thin:@dirleton.mis.ed.ac.uk:1769:idmdev
sources.xml read from:        /u01/app/grouper/grouper.apiBinary-2.2.0/conf/sources.xml
sources.xml jdbc source id:   sourceId: GrouperJdbcConnectionProvider
sources.xml groupersource id: g:gsa
sources.xml ldap source id:   ldap: ldap.properties
sources.xml groupersource id: grouperEntities
2014-09-12 15:28:52,054: [main] INFO  EventLog.info(156) -  - [5e058be4ebb145aca74acd37504b4832,'GrouperSystem','application'] session: start (492ms)
2014-09-12 15:28:52,420: [main] INFO  EventLog.info(156) -  - [73f0c607fb1c430bb370f6df6f00e7b0,'GrouperSystem','application'] session: start (6ms)
2014-09-12 15:28:52,500: [main] INFO  EventLog.info(156) -  - [3a9e046d104548d694aec8b224e2d467,'GrouperSystem','application'] session: start (5ms)
2014-09-12 15:28:52,675: [main] INFO  EventLog.info(156) -  - [ffbd56a8ee184b07acc073bc69b9f2fc,'GrouperSystem','application'] session: start (7ms)
2014-09-12 15:28:54,136: [main] INFO  EventLog.info(156) -  - [4a8741970d6444acb07ce49f6e0f446e,'GrouperSystem','application'] session: start (1ms)
2014-09-12 15:28:54,907: [main] INFO  EventLog.info(156) -  - [aff8cb664c4c4296a1e319a0a997edca,'GrouperSystem','application'] session: start (1ms)
2014-09-12 15:28:56,453: [main] INFO  EventLog.info(156) -  - [2c47a637824f425bafa47d4627b56f66,'GrouperSystem','application'] session: start (8ms)
2014-09-12 15:28:57,371: [main] INFO  EventLog.info(156) -  - [1073778d3a8b4a0b9608d36666dd7721,'GrouperSystem','application'] session: start (4ms)
2014-09-12 15:28:57,469: [main] INFO  EventLog.info(156) -  - [512c35d9f59a41c9b2934bec0ec324e6,'GrouperSystem','application'] session: start (1ms)
2014-09-12 15:29:00,512: [main] INFO  PspCLI.run(126) -  - Starting psp
2014-09-12 15:29:00,526: [main] INFO  Psp.execute(776) -  - Psp 'psp' - BulkSync BulkSyncRequest[id=edu.internet2.middleware.psp.spml.request.BulkProvisioningRequest,requestID=<null>,returnData=everything,onError=resume,returnDiffResponses=true,returnSyncResponses=true]
2014-09-12 15:29:00,537: [main] INFO  Psp.execute(780) -  - Psp 'psp' - BulkSync SPML:
<psp:bulkSyncRequest xmlns:psp='http://grouper.internet2.edu/psp' returnData='everything' returnDiffResponses='true' returnSyncResponses='true' onError='resume'>
  <psp:id ID='edu.internet2.middleware.psp.spml.request.BulkProvisioningRequest'/>
</psp:bulkSyncRequest>

2014-09-12 15:29:00,652: [main] INFO  EventLog.info(156) -  - [0aec05be79c74d4cbe5e8316a8ff43f9,'GrouperSystem','application'] session: start (9ms)
2014-09-12 15:29:00,853: [main] INFO  BaseSpmlProvider.execute(417) -  - Target 'ldap' - Search SearchRequest[query=Query[filter=<dsml:filter xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core'>  <dsml:equalityMatch name='objectclass'>    <dsml:value>organizationalUnit</dsml:value>  </dsml:equalityMatch></dsml:filter>,basePsoID=PSOIdentifier[id='ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=<null>,containerID=<null>],scope=subTree,targetID=ldap],returnData=identifier,maxSelect=0,requestID=2014/09/12-15:29:00.852]
2014-09-12 15:29:00,856: [main] INFO  BaseSpmlProvider.execute(421) -  - Target 'ldap' - Search XML:
<spmlsearch:searchRequest xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlsearch='urn:oasis:names:tc:SPML:2:0:search' requestID='2014/09/12-15:29:00.852' returnData='identifier'>
  <spmlsearch:query targetID='ldap' scope='subTree'>
    <dsml:filter xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core'>
      <dsml:equalityMatch name='objectclass'>
        <dsml:value>organizationalUnit</dsml:value>
      </dsml:equalityMatch>
    </dsml:filter>
    <spmlsearch:basePsoID ID='ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk'/>
  </spmlsearch:query>
</spmlsearch:searchRequest>

2014-09-12 15:29:01,332: [main] INFO  BaseSpmlProvider.execute(446) -  - Target 'ldap' - Search SearchResponse[psos=5,status=success,requestID=2014/09/12-15:29:00.852]
2014-09-12 15:29:01,336: [main] INFO  BaseSpmlProvider.execute(448) -  - Target 'ldap' - Search XML:
<spmlsearch:searchResponse xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlsearch='urn:oasis:names:tc:SPML:2:0:search' status='success' requestID='2014/09/12-15:29:00.852'>
  <spmlsearch:pso entityName='stem'>
    <psoID ID='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </spmlsearch:pso>
  <spmlsearch:pso entityName='stem'>
    <psoID ID='ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </spmlsearch:pso>
  <spmlsearch:pso entityName='stem'>
    <psoID ID='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </spmlsearch:pso>
  <spmlsearch:pso entityName='stem'>
    <psoID ID='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </spmlsearch:pso>
  <spmlsearch:pso entityName='stem'>
    <psoID ID='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </spmlsearch:pso>
</spmlsearch:searchResponse>

2014-09-12 15:29:01,338: [main] INFO  BaseSpmlProvider.execute(417) -  - Target 'ldap' - Search SearchRequest[query=Query[filter=<dsml:filter xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core'>  <dsml:equalityMatch name='objectClass'>    <dsml:value>groupOfNames</dsml:value>  </dsml:equalityMatch></dsml:filter>,basePsoID=PSOIdentifier[id='ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=<null>,containerID=<null>],scope=subTree,targetID=ldap],returnData=identifier,maxSelect=0,requestID=2014/09/12-15:29:01.338]
2014-09-12 15:29:01,340: [main] INFO  BaseSpmlProvider.execute(421) -  - Target 'ldap' - Search XML:
<spmlsearch:searchRequest xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlsearch='urn:oasis:names:tc:SPML:2:0:search' requestID='2014/09/12-15:29:01.338' returnData='identifier'>
  <spmlsearch:query targetID='ldap' scope='subTree'>
    <dsml:filter xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core'>
      <dsml:equalityMatch name='objectClass'>
        <dsml:value>groupOfNames</dsml:value>
      </dsml:equalityMatch>
    </dsml:filter>
    <spmlsearch:basePsoID ID='ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk'/>
  </spmlsearch:query>
</spmlsearch:searchRequest>

2014-09-12 15:29:01,595: [main] INFO  BaseSpmlProvider.execute(446) -  - Target 'ldap' - Search SearchResponse[psos=4,status=success,requestID=2014/09/12-15:29:01.338]
2014-09-12 15:29:01,598: [main] INFO  BaseSpmlProvider.execute(448) -  - Target 'ldap' - Search XML:
<spmlsearch:searchResponse xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlsearch='urn:oasis:names:tc:SPML:2:0:search' status='success' requestID='2014/09/12-15:29:01.338'>
  <spmlsearch:pso entityName='group'>
    <psoID ID='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </spmlsearch:pso>
  <spmlsearch:pso entityName='group'>
    <psoID ID='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </spmlsearch:pso>
  <spmlsearch:pso entityName='group'>
    <psoID ID='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </spmlsearch:pso>
  <spmlsearch:pso entityName='group'>
    <psoID ID='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </spmlsearch:pso>
</spmlsearch:searchResponse>

2014-09-12 15:29:01,601: [main] INFO  Psp.execute(1417) -  - Psp 'psp' - Sync SyncRequest[id=adhoc:MSTest,requestID=2014/09/12-15:29:01.601,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=stem,isContainer=false]]
2014-09-12 15:29:01,603: [main] INFO  Psp.execute(1421) -  - Psp 'psp' - Sync SPML:
<psp:syncRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:01.601' returnData='everything'>
  <psp:id ID='adhoc:MSTest'/>
  <psp:schemaEntity targetID='ldap' entityName='stem'/>
</psp:syncRequest>

2014-09-12 15:29:01,605: [main] INFO  Psp.execute(1152) -  - Psp 'psp' - Diff DiffRequest[id=adhoc:MSTest,requestID=2014/09/12-15:29:01.605,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=stem,isContainer=false]]
2014-09-12 15:29:01,607: [main] INFO  Psp.execute(1156) -  - Psp 'psp' - Diff XML:
<psp:diffRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:01.605' returnData='everything'>
  <psp:id ID='adhoc:MSTest'/>
  <psp:schemaEntity targetID='ldap' entityName='stem'/>
</psp:diffRequest>

2014-09-12 15:29:01,609: [main] INFO  Psp.execute(980) -  - Psp 'psp' - Calc CalcRequest[id=adhoc:MSTest,requestID=2014/09/12-15:29:01.608,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=stem,isContainer=false]]
2014-09-12 15:29:01,610: [main] INFO  Psp.execute(984) -  - Psp 'psp' - Calc XML:
<psp:calcRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:01.608' returnData='everything'>
  <psp:id ID='adhoc:MSTest'/>
  <psp:schemaEntity targetID='ldap' entityName='stem'/>
</psp:calcRequest>

2014-09-12 15:29:01,716: [main] INFO  Psp.execute(1009) -  - Psp 'psp' - Calc CalcResponse[id=adhoc:MSTest,status=success,requestID=2014/09/12-15:29:01.608,pso=PSO[psoID=PSOIdentifier[id='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:01,719: [main] INFO  Psp.execute(1011) -  - Psp 'psp' - Calc XML:
<psp:calcResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:01.608'>
  <psp:id ID='adhoc:MSTest'/>
  <psp:pso entityName='stem'>
    <psoID ID='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>top</dsml:value>
        <dsml:value>organizationalUnit</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='ou'>
        <dsml:value>MSTest</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>Michael's Test</dsml:value>
      </dsml:attr>
    </data>
  </psp:pso>
</psp:calcResponse>

2014-09-12 15:29:01,721: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'psp' - Lookup LookupRequest[psoID=PSOIdentifier[id='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:01.720]
2014-09-12 15:29:01,722: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'psp' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:01.720' returnData='everything'>
  <psoID ID='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:01,723: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'ldap' - Lookup LookupRequest[psoID=PSOIdentifier[id='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:01.720]
2014-09-12 15:29:01,724: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'ldap' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:01.720' returnData='everything'>
  <psoID ID='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:01,819: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'ldap' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:01.720]
2014-09-12 15:29:01,821: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'ldap' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:01.720'>
  <pso entityName='stem'>
    <psoID ID='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>organizationalUnit</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='ou'>
        <dsml:value>MSTest</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>Michael's Test</dsml:value>
      </dsml:attr>
    </data>
  </pso>
</lookupResponse>

2014-09-12 15:29:01,822: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'psp' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:01.720]
2014-09-12 15:29:01,823: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'psp' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:01.720'>
  <pso entityName='stem'>
    <psoID ID='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>organizationalUnit</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='ou'>
        <dsml:value>MSTest</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>Michael's Test</dsml:value>
      </dsml:attr>
    </data>
  </pso>
</lookupResponse>

2014-09-12 15:29:01,856: [main] INFO  Psp.execute(1181) -  - Psp 'psp' - Diff DiffResponse[id=adhoc:MSTest,status=success,requestID=2014/09/12-15:29:01.605,synchronized=SynchronizedResponse[psoID=PSOIdentifier[id='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:01,858: [main] INFO  Psp.execute(1183) -  - Psp 'psp' - Diff XML:
<psp:diffResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:01.605'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:MSTest'/>
</psp:diffResponse>

2014-09-12 15:29:01,862: [main] INFO  Psp.execute(1446) -  - Psp 'psp' - Sync SyncResponse[id=adhoc:MSTest,status=success,requestID=2014/09/12-15:29:01.601,SynchronizedResponse[psoID=PSOIdentifier[id='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:01,864: [main] INFO  Psp.execute(1448) -  - Psp 'psp' - Sync SPML:
<psp:syncResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:01.601'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:MSTest'/>
</psp:syncResponse>

2014-09-12 15:29:01,865: [main] INFO  Psp.execute(1417) -  - Psp 'psp' - Sync SyncRequest[id=adhoc:NewOrgH,requestID=2014/09/12-15:29:01.864,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=stem,isContainer=false]]
2014-09-12 15:29:01,866: [main] INFO  Psp.execute(1421) -  - Psp 'psp' - Sync SPML:
<psp:syncRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:01.864' returnData='everything'>
  <psp:id ID='adhoc:NewOrgH'/>
  <psp:schemaEntity targetID='ldap' entityName='stem'/>
</psp:syncRequest>

2014-09-12 15:29:01,870: [main] INFO  Psp.execute(1152) -  - Psp 'psp' - Diff DiffRequest[id=adhoc:NewOrgH,requestID=2014/09/12-15:29:01.868,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=stem,isContainer=false]]
2014-09-12 15:29:01,871: [main] INFO  Psp.execute(1156) -  - Psp 'psp' - Diff XML:
<psp:diffRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:01.868' returnData='everything'>
  <psp:id ID='adhoc:NewOrgH'/>
  <psp:schemaEntity targetID='ldap' entityName='stem'/>
</psp:diffRequest>

2014-09-12 15:29:01,872: [main] INFO  Psp.execute(980) -  - Psp 'psp' - Calc CalcRequest[id=adhoc:NewOrgH,requestID=2014/09/12-15:29:01.872,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=stem,isContainer=false]]
2014-09-12 15:29:01,873: [main] INFO  Psp.execute(984) -  - Psp 'psp' - Calc XML:
<psp:calcRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:01.872' returnData='everything'>
  <psp:id ID='adhoc:NewOrgH'/>
  <psp:schemaEntity targetID='ldap' entityName='stem'/>
</psp:calcRequest>

2014-09-12 15:29:01,928: [main] INFO  Psp.execute(1009) -  - Psp 'psp' - Calc CalcResponse[id=adhoc:NewOrgH,status=success,requestID=2014/09/12-15:29:01.872,pso=PSO[psoID=PSOIdentifier[id='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:01,930: [main] INFO  Psp.execute(1011) -  - Psp 'psp' - Calc XML:
<psp:calcResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:01.872'>
  <psp:id ID='adhoc:NewOrgH'/>
  <psp:pso entityName='stem'>
    <psoID ID='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>top</dsml:value>
        <dsml:value>organizationalUnit</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='ou'>
        <dsml:value>NewOrgH</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>NewOrgH</dsml:value>
      </dsml:attr>
    </data>
  </psp:pso>
</psp:calcResponse>

2014-09-12 15:29:01,931: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'psp' - Lookup LookupRequest[psoID=PSOIdentifier[id='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:01.930]
2014-09-12 15:29:01,932: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'psp' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:01.930' returnData='everything'>
  <psoID ID='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:01,932: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'ldap' - Lookup LookupRequest[psoID=PSOIdentifier[id='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:01.930]
2014-09-12 15:29:01,940: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'ldap' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:01.930' returnData='everything'>
  <psoID ID='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:02,038: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'ldap' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:01.930]
2014-09-12 15:29:02,041: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'ldap' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:01.930'>
  <pso entityName='stem'>
    <psoID ID='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>organizationalUnit</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='ou'>
        <dsml:value>NewOrgH</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>NewOrgH</dsml:value>
      </dsml:attr>
    </data>
  </pso>
</lookupResponse>

2014-09-12 15:29:02,042: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'psp' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:01.930]
2014-09-12 15:29:02,052: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'psp' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:01.930'>
  <pso entityName='stem'>
    <psoID ID='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>organizationalUnit</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='ou'>
        <dsml:value>NewOrgH</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>NewOrgH</dsml:value>
      </dsml:attr>
    </data>
  </pso>
</lookupResponse>

2014-09-12 15:29:02,055: [main] INFO  Psp.execute(1181) -  - Psp 'psp' - Diff DiffResponse[id=adhoc:NewOrgH,status=success,requestID=2014/09/12-15:29:01.868,synchronized=SynchronizedResponse[psoID=PSOIdentifier[id='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:02,059: [main] INFO  Psp.execute(1183) -  - Psp 'psp' - Diff XML:
<psp:diffResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:01.868'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:NewOrgH'/>
</psp:diffResponse>

2014-09-12 15:29:02,060: [main] INFO  Psp.execute(1446) -  - Psp 'psp' - Sync SyncResponse[id=adhoc:NewOrgH,status=success,requestID=2014/09/12-15:29:01.864,SynchronizedResponse[psoID=PSOIdentifier[id='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:02,061: [main] INFO  Psp.execute(1448) -  - Psp 'psp' - Sync SPML:
<psp:syncResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:01.864'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:NewOrgH'/>
</psp:syncResponse>

2014-09-12 15:29:02,062: [main] INFO  Psp.execute(1417) -  - Psp 'psp' - Sync SyncRequest[id=adhoc:ecaweb,requestID=2014/09/12-15:29:02.062,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=stem,isContainer=false]]
2014-09-12 15:29:02,063: [main] INFO  Psp.execute(1421) -  - Psp 'psp' - Sync SPML:
<psp:syncRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:02.062' returnData='everything'>
  <psp:id ID='adhoc:ecaweb'/>
  <psp:schemaEntity targetID='ldap' entityName='stem'/>
</psp:syncRequest>

2014-09-12 15:29:02,064: [main] INFO  Psp.execute(1152) -  - Psp 'psp' - Diff DiffRequest[id=adhoc:ecaweb,requestID=2014/09/12-15:29:02.064,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=stem,isContainer=false]]
2014-09-12 15:29:02,067: [main] INFO  Psp.execute(1156) -  - Psp 'psp' - Diff XML:
<psp:diffRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:02.064' returnData='everything'>
  <psp:id ID='adhoc:ecaweb'/>
  <psp:schemaEntity targetID='ldap' entityName='stem'/>
</psp:diffRequest>

2014-09-12 15:29:02,067: [main] INFO  Psp.execute(980) -  - Psp 'psp' - Calc CalcRequest[id=adhoc:ecaweb,requestID=2014/09/12-15:29:02.067,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=stem,isContainer=false]]
2014-09-12 15:29:02,068: [main] INFO  Psp.execute(984) -  - Psp 'psp' - Calc XML:
<psp:calcRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:02.067' returnData='everything'>
  <psp:id ID='adhoc:ecaweb'/>
  <psp:schemaEntity targetID='ldap' entityName='stem'/>
</psp:calcRequest>

2014-09-12 15:29:02,094: [main] INFO  Psp.execute(1009) -  - Psp 'psp' - Calc CalcResponse[id=adhoc:ecaweb,status=success,requestID=2014/09/12-15:29:02.067,pso=PSO[psoID=PSOIdentifier[id='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:02,096: [main] INFO  Psp.execute(1011) -  - Psp 'psp' - Calc XML:
<psp:calcResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:02.067'>
  <psp:id ID='adhoc:ecaweb'/>
  <psp:pso entityName='stem'>
    <psoID ID='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>top</dsml:value>
        <dsml:value>organizationalUnit</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='ou'>
        <dsml:value>ecaweb</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>Groups for ECA Website permissions</dsml:value>
      </dsml:attr>
    </data>
  </psp:pso>
</psp:calcResponse>

2014-09-12 15:29:02,098: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'psp' - Lookup LookupRequest[psoID=PSOIdentifier[id='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:02.097]
2014-09-12 15:29:02,099: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'psp' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:02.097' returnData='everything'>
  <psoID ID='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:02,099: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'ldap' - Lookup LookupRequest[psoID=PSOIdentifier[id='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:02.097]
2014-09-12 15:29:02,100: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'ldap' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:02.097' returnData='everything'>
  <psoID ID='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:02,182: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'ldap' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:02.097]
2014-09-12 15:29:02,184: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'ldap' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:02.097'>
  <pso entityName='stem'>
    <psoID ID='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>organizationalUnit</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='ou'>
        <dsml:value>ecaweb</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>Groups for ECA Website permissions</dsml:value>
      </dsml:attr>
    </data>
  </pso>
</lookupResponse>

2014-09-12 15:29:02,185: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'psp' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:02.097]
2014-09-12 15:29:02,192: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'psp' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:02.097'>
  <pso entityName='stem'>
    <psoID ID='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>organizationalUnit</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='ou'>
        <dsml:value>ecaweb</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>Groups for ECA Website permissions</dsml:value>
      </dsml:attr>
    </data>
  </pso>
</lookupResponse>

2014-09-12 15:29:02,193: [main] INFO  Psp.execute(1181) -  - Psp 'psp' - Diff DiffResponse[id=adhoc:ecaweb,status=success,requestID=2014/09/12-15:29:02.064,synchronized=SynchronizedResponse[psoID=PSOIdentifier[id='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:02,194: [main] INFO  Psp.execute(1183) -  - Psp 'psp' - Diff XML:
<psp:diffResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:02.064'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:ecaweb'/>
</psp:diffResponse>

2014-09-12 15:29:02,195: [main] INFO  Psp.execute(1446) -  - Psp 'psp' - Sync SyncResponse[id=adhoc:ecaweb,status=success,requestID=2014/09/12-15:29:02.062,SynchronizedResponse[psoID=PSOIdentifier[id='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:02,196: [main] INFO  Psp.execute(1448) -  - Psp 'psp' - Sync SPML:
<psp:syncResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:02.062'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:ecaweb'/>
</psp:syncResponse>

2014-09-12 15:29:02,199: [main] INFO  Psp.execute(1417) -  - Psp 'psp' - Sync SyncRequest[id=adhoc:rgtest,requestID=2014/09/12-15:29:02.199,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=stem,isContainer=false]]
2014-09-12 15:29:02,200: [main] INFO  Psp.execute(1421) -  - Psp 'psp' - Sync SPML:
<psp:syncRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:02.199' returnData='everything'>
  <psp:id ID='adhoc:rgtest'/>
  <psp:schemaEntity targetID='ldap' entityName='stem'/>
</psp:syncRequest>

2014-09-12 15:29:02,201: [main] INFO  Psp.execute(1152) -  - Psp 'psp' - Diff DiffRequest[id=adhoc:rgtest,requestID=2014/09/12-15:29:02.201,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=stem,isContainer=false]]
2014-09-12 15:29:02,207: [main] INFO  Psp.execute(1156) -  - Psp 'psp' - Diff XML:
<psp:diffRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:02.201' returnData='everything'>
  <psp:id ID='adhoc:rgtest'/>
  <psp:schemaEntity targetID='ldap' entityName='stem'/>
</psp:diffRequest>

2014-09-12 15:29:02,210: [main] INFO  Psp.execute(980) -  - Psp 'psp' - Calc CalcRequest[id=adhoc:rgtest,requestID=2014/09/12-15:29:02.209,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=stem,isContainer=false]]
2014-09-12 15:29:02,211: [main] INFO  Psp.execute(984) -  - Psp 'psp' - Calc XML:
<psp:calcRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:02.209' returnData='everything'>
  <psp:id ID='adhoc:rgtest'/>
  <psp:schemaEntity targetID='ldap' entityName='stem'/>
</psp:calcRequest>

2014-09-12 15:29:02,240: [main] INFO  Psp.execute(1009) -  - Psp 'psp' - Calc CalcResponse[id=adhoc:rgtest,status=success,requestID=2014/09/12-15:29:02.209,pso=PSO[psoID=PSOIdentifier[id='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:02,244: [main] INFO  Psp.execute(1011) -  - Psp 'psp' - Calc XML:
<psp:calcResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:02.209'>
  <psp:id ID='adhoc:rgtest'/>
  <psp:pso entityName='stem'>
    <psoID ID='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>top</dsml:value>
        <dsml:value>organizationalUnit</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='ou'>
        <dsml:value>rgtest</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>Richard's test folder</dsml:value>
      </dsml:attr>
    </data>
  </psp:pso>
</psp:calcResponse>

2014-09-12 15:29:02,251: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'psp' - Lookup LookupRequest[psoID=PSOIdentifier[id='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:02.250]
2014-09-12 15:29:02,251: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'psp' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:02.250' returnData='everything'>
  <psoID ID='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:02,252: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'ldap' - Lookup LookupRequest[psoID=PSOIdentifier[id='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:02.250]
2014-09-12 15:29:02,253: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'ldap' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:02.250' returnData='everything'>
  <psoID ID='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:02,264: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'ldap' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:02.250]
2014-09-12 15:29:02,265: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'ldap' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:02.250'>
  <pso entityName='stem'>
    <psoID ID='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>organizationalUnit</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='ou'>
        <dsml:value>rgtest</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>Richard's test folder</dsml:value>
      </dsml:attr>
    </data>
  </pso>
</lookupResponse>

2014-09-12 15:29:02,266: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'psp' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:02.250]
2014-09-12 15:29:02,267: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'psp' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:02.250'>
  <pso entityName='stem'>
    <psoID ID='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>organizationalUnit</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='ou'>
        <dsml:value>rgtest</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>Richard's test folder</dsml:value>
      </dsml:attr>
    </data>
  </pso>
</lookupResponse>

2014-09-12 15:29:02,268: [main] INFO  Psp.execute(1181) -  - Psp 'psp' - Diff DiffResponse[id=adhoc:rgtest,status=success,requestID=2014/09/12-15:29:02.201,synchronized=SynchronizedResponse[psoID=PSOIdentifier[id='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:02,269: [main] INFO  Psp.execute(1183) -  - Psp 'psp' - Diff XML:
<psp:diffResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:02.201'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:rgtest'/>
</psp:diffResponse>

2014-09-12 15:29:02,269: [main] INFO  Psp.execute(1446) -  - Psp 'psp' - Sync SyncResponse[id=adhoc:rgtest,status=success,requestID=2014/09/12-15:29:02.199,SynchronizedResponse[psoID=PSOIdentifier[id='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:02,276: [main] INFO  Psp.execute(1448) -  - Psp 'psp' - Sync SPML:
<psp:syncResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:02.199'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:rgtest'/>
</psp:syncResponse>

2014-09-12 15:29:02,277: [main] INFO  Psp.execute(1417) -  - Psp 'psp' - Sync SyncRequest[id=adhoc:MSTest:MSGroupTest,requestID=2014/09/12-15:29:02.277,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:02,278: [main] INFO  Psp.execute(1421) -  - Psp 'psp' - Sync SPML:
<psp:syncRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:02.277' returnData='everything'>
  <psp:id ID='adhoc:MSTest:MSGroupTest'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:syncRequest>

2014-09-12 15:29:02,279: [main] INFO  Psp.execute(1152) -  - Psp 'psp' - Diff DiffRequest[id=adhoc:MSTest:MSGroupTest,requestID=2014/09/12-15:29:02.278,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:02,280: [main] INFO  Psp.execute(1156) -  - Psp 'psp' - Diff XML:
<psp:diffRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:02.278' returnData='everything'>
  <psp:id ID='adhoc:MSTest:MSGroupTest'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:diffRequest>

2014-09-12 15:29:02,281: [main] INFO  Psp.execute(980) -  - Psp 'psp' - Calc CalcRequest[id=adhoc:MSTest:MSGroupTest,requestID=2014/09/12-15:29:02.281,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:02,288: [main] INFO  Psp.execute(984) -  - Psp 'psp' - Calc XML:
<psp:calcRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:02.281' returnData='everything'>
  <psp:id ID='adhoc:MSTest:MSGroupTest'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:calcRequest>

2014-09-12 15:29:02,438: [main] INFO  EventLog.info(156) -  - [cc7ee8d611eb4f32898bff912b6f32b7,'GrouperSystem','application'] session: start (7ms)
2014-09-12 15:29:02,681: [main] INFO  Psp.execute(1009) -  - Psp 'psp' - Calc CalcResponse[id=adhoc:MSTest:MSGroupTest,status=success,requestID=2014/09/12-15:29:02.281,pso=PSO[psoID=PSOIdentifier[id='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:02,684: [main] INFO  Psp.execute(1011) -  - Psp 'psp' - Calc XML:
<psp:calcResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:02.281'>
  <psp:id ID='adhoc:MSTest:MSGroupTest'/>
  <psp:pso entityName='group'>
    <psoID ID='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>top</dsml:value>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>MSGroupTest</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>Michael's group test</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='gidNumber'>
        <dsml:value>3846713259</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </psp:pso>
</psp:calcResponse>

2014-09-12 15:29:02,684: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'psp' - Lookup LookupRequest[psoID=PSOIdentifier[id='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:02.684]
2014-09-12 15:29:02,685: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'psp' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:02.684' returnData='everything'>
  <psoID ID='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:02,686: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'ldap' - Lookup LookupRequest[psoID=PSOIdentifier[id='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:02.684]
2014-09-12 15:29:02,692: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'ldap' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:02.684' returnData='everything'>
  <psoID ID='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:02,698: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'ldap' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:02.684]
2014-09-12 15:29:02,701: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'ldap' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:02.684'>
  <pso entityName='group'>
    <psoID ID='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>MSGroupTest</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>Michael's group test</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='gidNumber'>
        <dsml:value>3846713259</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </pso>
</lookupResponse>

2014-09-12 15:29:02,702: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'psp' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:02.684]
2014-09-12 15:29:02,704: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'psp' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:02.684'>
  <pso entityName='group'>
    <psoID ID='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>MSGroupTest</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>Michael's group test</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='gidNumber'>
        <dsml:value>3846713259</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </pso>
</lookupResponse>

2014-09-12 15:29:02,705: [main] INFO  Psp.execute(1181) -  - Psp 'psp' - Diff DiffResponse[id=adhoc:MSTest:MSGroupTest,status=success,requestID=2014/09/12-15:29:02.278,synchronized=SynchronizedResponse[psoID=PSOIdentifier[id='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:02,707: [main] INFO  Psp.execute(1183) -  - Psp 'psp' - Diff XML:
<psp:diffResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:02.278'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:MSTest:MSGroupTest'/>
</psp:diffResponse>

2014-09-12 15:29:02,707: [main] INFO  Psp.execute(1446) -  - Psp 'psp' - Sync SyncResponse[id=adhoc:MSTest:MSGroupTest,status=success,requestID=2014/09/12-15:29:02.277,SynchronizedResponse[psoID=PSOIdentifier[id='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:02,709: [main] INFO  Psp.execute(1448) -  - Psp 'psp' - Sync SPML:
<psp:syncResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:02.277'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:MSTest:MSGroupTest'/>
</psp:syncResponse>

2014-09-12 15:29:02,709: [main] INFO  Psp.execute(1417) -  - Psp 'psp' - Sync SyncRequest[id=adhoc:NewOrgH:OrgH01,requestID=2014/09/12-15:29:02.709,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:02,711: [main] INFO  Psp.execute(1421) -  - Psp 'psp' - Sync SPML:
<psp:syncRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:02.709' returnData='everything'>
  <psp:id ID='adhoc:NewOrgH:OrgH01'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:syncRequest>

2014-09-12 15:29:02,712: [main] INFO  Psp.execute(1152) -  - Psp 'psp' - Diff DiffRequest[id=adhoc:NewOrgH:OrgH01,requestID=2014/09/12-15:29:02.712,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:02,713: [main] INFO  Psp.execute(1156) -  - Psp 'psp' - Diff XML:
<psp:diffRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:02.712' returnData='everything'>
  <psp:id ID='adhoc:NewOrgH:OrgH01'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:diffRequest>

2014-09-12 15:29:02,714: [main] INFO  Psp.execute(980) -  - Psp 'psp' - Calc CalcRequest[id=adhoc:NewOrgH:OrgH01,requestID=2014/09/12-15:29:02.714,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:02,715: [main] INFO  Psp.execute(984) -  - Psp 'psp' - Calc XML:
<psp:calcRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:02.714' returnData='everything'>
  <psp:id ID='adhoc:NewOrgH:OrgH01'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:calcRequest>

2014-09-12 15:29:02,894: [main] INFO  Psp.execute(1009) -  - Psp 'psp' - Calc CalcResponse[id=adhoc:NewOrgH:OrgH01,status=success,requestID=2014/09/12-15:29:02.714,pso=PSO[psoID=PSOIdentifier[id='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:02,897: [main] INFO  Psp.execute(1011) -  - Psp 'psp' - Calc XML:
<psp:calcResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:02.714'>
  <psp:id ID='adhoc:NewOrgH:OrgH01'/>
  <psp:pso entityName='group'>
    <psoID ID='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>top</dsml:value>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>OrgH01</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>OrgH01</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='gidNumber'>
        <dsml:value>3846645715</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </psp:pso>
</psp:calcResponse>

2014-09-12 15:29:02,898: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'psp' - Lookup LookupRequest[psoID=PSOIdentifier[id='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:02.897]
2014-09-12 15:29:02,899: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'psp' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:02.897' returnData='everything'>
  <psoID ID='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:02,899: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'ldap' - Lookup LookupRequest[psoID=PSOIdentifier[id='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:02.897]
2014-09-12 15:29:02,900: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'ldap' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:02.897' returnData='everything'>
  <psoID ID='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:02,905: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'ldap' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:02.897]
2014-09-12 15:29:02,907: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'ldap' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:02.897'>
  <pso entityName='group'>
    <psoID ID='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>OrgH01</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>OrgH01</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='gidNumber'>
        <dsml:value>3846645715</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </pso>
</lookupResponse>

2014-09-12 15:29:02,908: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'psp' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:02.897]
2014-09-12 15:29:02,916: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'psp' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:02.897'>
  <pso entityName='group'>
    <psoID ID='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>OrgH01</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>OrgH01</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='gidNumber'>
        <dsml:value>3846645715</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </pso>
</lookupResponse>

2014-09-12 15:29:02,918: [main] INFO  Psp.execute(1181) -  - Psp 'psp' - Diff DiffResponse[id=adhoc:NewOrgH:OrgH01,status=success,requestID=2014/09/12-15:29:02.712,synchronized=SynchronizedResponse[psoID=PSOIdentifier[id='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:02,921: [main] INFO  Psp.execute(1183) -  - Psp 'psp' - Diff XML:
<psp:diffResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:02.712'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:NewOrgH:OrgH01'/>
</psp:diffResponse>

2014-09-12 15:29:02,921: [main] INFO  Psp.execute(1446) -  - Psp 'psp' - Sync SyncResponse[id=adhoc:NewOrgH:OrgH01,status=success,requestID=2014/09/12-15:29:02.709,SynchronizedResponse[psoID=PSOIdentifier[id='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:02,924: [main] INFO  Psp.execute(1448) -  - Psp 'psp' - Sync SPML:
<psp:syncResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:02.709'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:NewOrgH:OrgH01'/>
</psp:syncResponse>

2014-09-12 15:29:02,926: [main] INFO  Psp.execute(1417) -  - Psp 'psp' - Sync SyncRequest[id=adhoc:ecaweb:D394PG,requestID=2014/09/12-15:29:02.925,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:02,931: [main] INFO  Psp.execute(1421) -  - Psp 'psp' - Sync SPML:
<psp:syncRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:02.925' returnData='everything'>
  <psp:id ID='adhoc:ecaweb:D394PG'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:syncRequest>

2014-09-12 15:29:02,932: [main] INFO  Psp.execute(1152) -  - Psp 'psp' - Diff DiffRequest[id=adhoc:ecaweb:D394PG,requestID=2014/09/12-15:29:02.931,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:02,932: [main] INFO  Psp.execute(1156) -  - Psp 'psp' - Diff XML:
<psp:diffRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:02.931' returnData='everything'>
  <psp:id ID='adhoc:ecaweb:D394PG'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:diffRequest>

2014-09-12 15:29:02,933: [main] INFO  Psp.execute(980) -  - Psp 'psp' - Calc CalcRequest[id=adhoc:ecaweb:D394PG,requestID=2014/09/12-15:29:02.933,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:02,934: [main] INFO  Psp.execute(984) -  - Psp 'psp' - Calc XML:
<psp:calcRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:02.933' returnData='everything'>
  <psp:id ID='adhoc:ecaweb:D394PG'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:calcRequest>

2014-09-12 15:29:03,057: [main] INFO  Psp.execute(1009) -  - Psp 'psp' - Calc CalcResponse[id=adhoc:ecaweb:D394PG,status=success,requestID=2014/09/12-15:29:02.933,pso=PSO[psoID=PSOIdentifier[id='cn=D394PG,ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:03,059: [main] INFO  Psp.execute(1011) -  - Psp 'psp' - Calc XML:
<psp:calcResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:02.933'>
  <psp:id ID='adhoc:ecaweb:D394PG'/>
  <psp:pso entityName='group'>
    <psoID ID='cn=D394PG,ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>top</dsml:value>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>D394PG</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>Postgaduate Students in the School of Art</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </psp:pso>
</psp:calcResponse>

2014-09-12 15:29:03,060: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'psp' - Lookup LookupRequest[psoID=PSOIdentifier[id='cn=D394PG,ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:03.060]
2014-09-12 15:29:03,061: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'psp' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:03.060' returnData='everything'>
  <psoID ID='cn=D394PG,ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:03,061: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'ldap' - Lookup LookupRequest[psoID=PSOIdentifier[id='cn=D394PG,ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:03.060]
2014-09-12 15:29:03,062: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'ldap' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:03.060' returnData='everything'>
  <psoID ID='cn=D394PG,ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:03,077: [main] ERROR BaseSpmlProvider.execute(320) -  - Target 'ldap' - Lookup LookupResponse[pso=<null>,status=failure,error=noSuchIdentifier,errorMessages={},requestID=2014/09/12-15:29:03.060]
2014-09-12 15:29:03,078: [main] ERROR BaseSpmlProvider.execute(322) -  - Target 'ldap' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.060' error='noSuchIdentifier'/>

2014-09-12 15:29:03,079: [main] ERROR BaseSpmlProvider.execute(320) -  - Target 'psp' - Lookup LookupResponse[pso=<null>,status=failure,error=noSuchIdentifier,errorMessages={},requestID=2014/09/12-15:29:03.060]
2014-09-12 15:29:03,079: [main] ERROR BaseSpmlProvider.execute(322) -  - Target 'psp' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.060' error='noSuchIdentifier'/>

2014-09-12 15:29:03,082: [main] INFO  Psp.execute(1181) -  - Psp 'psp' - Diff DiffResponse[id=adhoc:ecaweb:D394PG,status=success,requestID=2014/09/12-15:29:02.931,add=AddRequest[psoID=PSOIdentifier[id='cn=D394PG,ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],targetID=ldap,returnData=everything,requestID=2014/09/12-15:29:03.081]]
2014-09-12 15:29:03,085: [main] INFO  Psp.execute(1183) -  - Psp 'psp' - Diff XML:
<psp:diffResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:02.931'>
  <addRequest xmlns='urn:oasis:names:tc:SPML:2:0' entityName='group' requestID='2014/09/12-15:29:03.081' targetId='ldap' returnData='everything'>
    <psoID ID='cn=D394PG,ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>top</dsml:value>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>D394PG</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>Postgaduate Students in the School of Art</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </addRequest>
  <psp:id ID='adhoc:ecaweb:D394PG'/>
</psp:diffResponse>

2014-09-12 15:29:03,087: [main] INFO  BaseSpmlProvider.execute(153) -  - Target 'psp' - Add AddRequest[psoID=PSOIdentifier[id='cn=D394PG,ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],targetID=ldap,returnData=everything,requestID=2014/09/12-15:29:03.081]
2014-09-12 15:29:03,094: [main] INFO  BaseSpmlProvider.execute(157) -  - Target 'psp' - Add XML:
<addRequest xmlns='urn:oasis:names:tc:SPML:2:0' entityName='group' requestID='2014/09/12-15:29:03.081' targetId='ldap' returnData='everything'>
  <psoID ID='cn=D394PG,ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  <data>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
      <dsml:value>top</dsml:value>
      <dsml:value>groupOfNames</dsml:value>
      <dsml:value>posixGroup</dsml:value>
    </dsml:attr>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
      <dsml:value>D394PG</dsml:value>
    </dsml:attr>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
      <dsml:value>Postgaduate Students in the School of Art</dsml:value>
    </dsml:attr>
  </data>
  <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
    <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
      <spmlref:toPsoID targetID='ldap'/>
    </spmlref:reference>
  </capabilityData>
</addRequest>

2014-09-12 15:29:03,095: [main] INFO  BaseSpmlProvider.execute(153) -  - Target 'ldap' - Add AddRequest[psoID=PSOIdentifier[id='cn=D394PG,ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],targetID=ldap,returnData=everything,requestID=2014/09/12-15:29:03.081]
2014-09-12 15:29:03,096: [main] INFO  BaseSpmlProvider.execute(157) -  - Target 'ldap' - Add XML:
<addRequest xmlns='urn:oasis:names:tc:SPML:2:0' entityName='group' requestID='2014/09/12-15:29:03.081' targetId='ldap' returnData='everything'>
  <psoID ID='cn=D394PG,ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  <data>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
      <dsml:value>top</dsml:value>
      <dsml:value>groupOfNames</dsml:value>
      <dsml:value>posixGroup</dsml:value>
    </dsml:attr>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
      <dsml:value>D394PG</dsml:value>
    </dsml:attr>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
      <dsml:value>Postgaduate Students in the School of Art</dsml:value>
    </dsml:attr>
  </data>
  <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
    <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
      <spmlref:toPsoID targetID='ldap'/>
    </spmlref:reference>
  </capabilityData>
</addRequest>

2014-09-12 15:29:03,103: [main] ERROR BaseSpmlProvider.execute(188) -  - Target 'ldap' - Add AddResponse[pso=<null>,status=failure,error=customError,errorMessages={[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']},requestID=2014/09/12-15:29:03.081]
2014-09-12 15:29:03,104: [main] ERROR BaseSpmlProvider.execute(190) -  - Target 'ldap' - Add XML:
<addResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.081' error='customError'>
  <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
</addResponse>

2014-09-12 15:29:03,105: [main] ERROR BaseSpmlProvider.execute(188) -  - Target 'psp' - Add AddResponse[pso=<null>,status=failure,error=customError,errorMessages={[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']},requestID=2014/09/12-15:29:03.081]
2014-09-12 15:29:03,105: [main] ERROR BaseSpmlProvider.execute(190) -  - Target 'psp' - Add XML:
<addResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.081' error='customError'>
  <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
</addResponse>

2014-09-12 15:29:03,106: [main] ERROR Psp.execute(1452) -  - Psp 'psp' - Sync SyncResponse[id=adhoc:ecaweb:D394PG,status=failure,error=customError,errorMessages={[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']},requestID=2014/09/12-15:29:02.925,AddResponse[pso=<null>,status=failure,error=customError,errorMessages={[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']},requestID=2014/09/12-15:29:03.081]]
2014-09-12 15:29:03,107: [main] ERROR Psp.execute(1454) -  - Psp 'psp' - Sync SPML:
<psp:syncResponse xmlns:psp='http://grouper.internet2.edu/psp' status='failure' requestID='2014/09/12-15:29:02.925' error='customError'>
  <addResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.081' error='customError'>
    <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
  </addResponse>
  <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
  <psp:id ID='adhoc:ecaweb:D394PG'/>
</psp:syncResponse>

2014-09-12 15:29:03,108: [main] INFO  Psp.execute(1417) -  - Psp 'psp' - Sync SyncRequest[id=adhoc:rgtest:Test new one,requestID=2014/09/12-15:29:03.108,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:03,113: [main] INFO  Psp.execute(1421) -  - Psp 'psp' - Sync SPML:
<psp:syncRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:03.108' returnData='everything'>
  <psp:id ID='adhoc:rgtest:Test new one'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:syncRequest>

2014-09-12 15:29:03,114: [main] INFO  Psp.execute(1152) -  - Psp 'psp' - Diff DiffRequest[id=adhoc:rgtest:Test new one,requestID=2014/09/12-15:29:03.113,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:03,114: [main] INFO  Psp.execute(1156) -  - Psp 'psp' - Diff XML:
<psp:diffRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:03.113' returnData='everything'>
  <psp:id ID='adhoc:rgtest:Test new one'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:diffRequest>

2014-09-12 15:29:03,119: [main] INFO  Psp.execute(980) -  - Psp 'psp' - Calc CalcRequest[id=adhoc:rgtest:Test new one,requestID=2014/09/12-15:29:03.119,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:03,121: [main] INFO  Psp.execute(984) -  - Psp 'psp' - Calc XML:
<psp:calcRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:03.119' returnData='everything'>
  <psp:id ID='adhoc:rgtest:Test new one'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:calcRequest>

2014-09-12 15:29:03,200: [main] INFO  Psp.execute(1009) -  - Psp 'psp' - Calc CalcResponse[id=adhoc:rgtest:Test new one,status=success,requestID=2014/09/12-15:29:03.119,pso=PSO[psoID=PSOIdentifier[id='cn=Test new one,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:03,201: [main] INFO  Psp.execute(1011) -  - Psp 'psp' - Calc XML:
<psp:calcResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:03.119'>
  <psp:id ID='adhoc:rgtest:Test new one'/>
  <psp:pso entityName='group'>
    <psoID ID='cn=Test new one,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>top</dsml:value>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>Test new one</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>polop</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </psp:pso>
</psp:calcResponse>

2014-09-12 15:29:03,202: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'psp' - Lookup LookupRequest[psoID=PSOIdentifier[id='cn=Test new one,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:03.201]
2014-09-12 15:29:03,202: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'psp' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:03.201' returnData='everything'>
  <psoID ID='cn=Test new one,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:03,202: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'ldap' - Lookup LookupRequest[psoID=PSOIdentifier[id='cn=Test new one,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:03.201]
2014-09-12 15:29:03,203: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'ldap' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:03.201' returnData='everything'>
  <psoID ID='cn=Test new one,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:03,205: [main] ERROR BaseSpmlProvider.execute(320) -  - Target 'ldap' - Lookup LookupResponse[pso=<null>,status=failure,error=noSuchIdentifier,errorMessages={},requestID=2014/09/12-15:29:03.201]
2014-09-12 15:29:03,205: [main] ERROR BaseSpmlProvider.execute(322) -  - Target 'ldap' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.201' error='noSuchIdentifier'/>

2014-09-12 15:29:03,205: [main] ERROR BaseSpmlProvider.execute(320) -  - Target 'psp' - Lookup LookupResponse[pso=<null>,status=failure,error=noSuchIdentifier,errorMessages={},requestID=2014/09/12-15:29:03.201]
2014-09-12 15:29:03,206: [main] ERROR BaseSpmlProvider.execute(322) -  - Target 'psp' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.201' error='noSuchIdentifier'/>

2014-09-12 15:29:03,206: [main] INFO  Psp.execute(1181) -  - Psp 'psp' - Diff DiffResponse[id=adhoc:rgtest:Test new one,status=success,requestID=2014/09/12-15:29:03.113,add=AddRequest[psoID=PSOIdentifier[id='cn=Test new one,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],targetID=ldap,returnData=everything,requestID=2014/09/12-15:29:03.206]]
2014-09-12 15:29:03,207: [main] INFO  Psp.execute(1183) -  - Psp 'psp' - Diff XML:
<psp:diffResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:03.113'>
  <addRequest xmlns='urn:oasis:names:tc:SPML:2:0' entityName='group' requestID='2014/09/12-15:29:03.206' targetId='ldap' returnData='everything'>
    <psoID ID='cn=Test new one,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>top</dsml:value>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>Test new one</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
        <dsml:value>polop</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </addRequest>
  <psp:id ID='adhoc:rgtest:Test new one'/>
</psp:diffResponse>

2014-09-12 15:29:03,207: [main] INFO  BaseSpmlProvider.execute(153) -  - Target 'psp' - Add AddRequest[psoID=PSOIdentifier[id='cn=Test new one,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],targetID=ldap,returnData=everything,requestID=2014/09/12-15:29:03.206]
2014-09-12 15:29:03,235: [main] INFO  BaseSpmlProvider.execute(157) -  - Target 'psp' - Add XML:
<addRequest xmlns='urn:oasis:names:tc:SPML:2:0' entityName='group' requestID='2014/09/12-15:29:03.206' targetId='ldap' returnData='everything'>
  <psoID ID='cn=Test new one,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  <data>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
      <dsml:value>top</dsml:value>
      <dsml:value>groupOfNames</dsml:value>
      <dsml:value>posixGroup</dsml:value>
    </dsml:attr>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
      <dsml:value>Test new one</dsml:value>
    </dsml:attr>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
      <dsml:value>polop</dsml:value>
    </dsml:attr>
  </data>
  <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
    <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
      <spmlref:toPsoID targetID='ldap'/>
    </spmlref:reference>
  </capabilityData>
</addRequest>

2014-09-12 15:29:03,235: [main] INFO  BaseSpmlProvider.execute(153) -  - Target 'ldap' - Add AddRequest[psoID=PSOIdentifier[id='cn=Test new one,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],targetID=ldap,returnData=everything,requestID=2014/09/12-15:29:03.206]
2014-09-12 15:29:03,236: [main] INFO  BaseSpmlProvider.execute(157) -  - Target 'ldap' - Add XML:
<addRequest xmlns='urn:oasis:names:tc:SPML:2:0' entityName='group' requestID='2014/09/12-15:29:03.206' targetId='ldap' returnData='everything'>
  <psoID ID='cn=Test new one,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  <data>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
      <dsml:value>top</dsml:value>
      <dsml:value>groupOfNames</dsml:value>
      <dsml:value>posixGroup</dsml:value>
    </dsml:attr>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
      <dsml:value>Test new one</dsml:value>
    </dsml:attr>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='description'>
      <dsml:value>polop</dsml:value>
    </dsml:attr>
  </data>
  <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
    <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
      <spmlref:toPsoID targetID='ldap'/>
    </spmlref:reference>
  </capabilityData>
</addRequest>

2014-09-12 15:29:03,238: [main] ERROR BaseSpmlProvider.execute(188) -  - Target 'ldap' - Add AddResponse[pso=<null>,status=failure,error=customError,errorMessages={[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']},requestID=2014/09/12-15:29:03.206]
2014-09-12 15:29:03,240: [main] ERROR BaseSpmlProvider.execute(190) -  - Target 'ldap' - Add XML:
<addResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.206' error='customError'>
  <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
</addResponse>

2014-09-12 15:29:03,241: [main] ERROR BaseSpmlProvider.execute(188) -  - Target 'psp' - Add AddResponse[pso=<null>,status=failure,error=customError,errorMessages={[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']},requestID=2014/09/12-15:29:03.206]
2014-09-12 15:29:03,241: [main] ERROR BaseSpmlProvider.execute(190) -  - Target 'psp' - Add XML:
<addResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.206' error='customError'>
  <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
</addResponse>

2014-09-12 15:29:03,242: [main] ERROR Psp.execute(1452) -  - Psp 'psp' - Sync SyncResponse[id=adhoc:rgtest:Test new one,status=failure,error=customError,errorMessages={[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']},requestID=2014/09/12-15:29:03.108,AddResponse[pso=<null>,status=failure,error=customError,errorMessages={[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']},requestID=2014/09/12-15:29:03.206]]
2014-09-12 15:29:03,242: [main] ERROR Psp.execute(1454) -  - Psp 'psp' - Sync SPML:
<psp:syncResponse xmlns:psp='http://grouper.internet2.edu/psp' status='failure' requestID='2014/09/12-15:29:03.108' error='customError'>
  <addResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.206' error='customError'>
    <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
  </addResponse>
  <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
  <psp:id ID='adhoc:rgtest:Test new one'/>
</psp:syncResponse>

2014-09-12 15:29:03,242: [main] INFO  Psp.execute(1417) -  - Psp 'psp' - Sync SyncRequest[id=adhoc:rgtest:himneee,requestID=2014/09/12-15:29:03.242,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:03,243: [main] INFO  Psp.execute(1421) -  - Psp 'psp' - Sync SPML:
<psp:syncRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:03.242' returnData='everything'>
  <psp:id ID='adhoc:rgtest:himneee'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:syncRequest>

2014-09-12 15:29:03,243: [main] INFO  Psp.execute(1152) -  - Psp 'psp' - Diff DiffRequest[id=adhoc:rgtest:himneee,requestID=2014/09/12-15:29:03.243,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:03,243: [main] INFO  Psp.execute(1156) -  - Psp 'psp' - Diff XML:
<psp:diffRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:03.243' returnData='everything'>
  <psp:id ID='adhoc:rgtest:himneee'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:diffRequest>

2014-09-12 15:29:03,244: [main] INFO  Psp.execute(980) -  - Psp 'psp' - Calc CalcRequest[id=adhoc:rgtest:himneee,requestID=2014/09/12-15:29:03.244,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:03,246: [main] INFO  Psp.execute(984) -  - Psp 'psp' - Calc XML:
<psp:calcRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:03.244' returnData='everything'>
  <psp:id ID='adhoc:rgtest:himneee'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:calcRequest>

2014-09-12 15:29:03,314: [main] INFO  Psp.execute(1009) -  - Psp 'psp' - Calc CalcResponse[id=adhoc:rgtest:himneee,status=success,requestID=2014/09/12-15:29:03.244,pso=PSO[psoID=PSOIdentifier[id='cn=himneee,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:03,315: [main] INFO  Psp.execute(1011) -  - Psp 'psp' - Calc XML:
<psp:calcResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:03.244'>
  <psp:id ID='adhoc:rgtest:himneee'/>
  <psp:pso entityName='group'>
    <psoID ID='cn=himneee,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>top</dsml:value>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>himneee</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </psp:pso>
</psp:calcResponse>

2014-09-12 15:29:03,315: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'psp' - Lookup LookupRequest[psoID=PSOIdentifier[id='cn=himneee,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:03.315]
2014-09-12 15:29:03,315: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'psp' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:03.315' returnData='everything'>
  <psoID ID='cn=himneee,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:03,315: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'ldap' - Lookup LookupRequest[psoID=PSOIdentifier[id='cn=himneee,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:03.315]
2014-09-12 15:29:03,316: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'ldap' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:03.315' returnData='everything'>
  <psoID ID='cn=himneee,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:03,318: [main] ERROR BaseSpmlProvider.execute(320) -  - Target 'ldap' - Lookup LookupResponse[pso=<null>,status=failure,error=noSuchIdentifier,errorMessages={},requestID=2014/09/12-15:29:03.315]
2014-09-12 15:29:03,318: [main] ERROR BaseSpmlProvider.execute(322) -  - Target 'ldap' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.315' error='noSuchIdentifier'/>

2014-09-12 15:29:03,318: [main] ERROR BaseSpmlProvider.execute(320) -  - Target 'psp' - Lookup LookupResponse[pso=<null>,status=failure,error=noSuchIdentifier,errorMessages={},requestID=2014/09/12-15:29:03.315]
2014-09-12 15:29:03,318: [main] ERROR BaseSpmlProvider.execute(322) -  - Target 'psp' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.315' error='noSuchIdentifier'/>

2014-09-12 15:29:03,319: [main] INFO  Psp.execute(1181) -  - Psp 'psp' - Diff DiffResponse[id=adhoc:rgtest:himneee,status=success,requestID=2014/09/12-15:29:03.243,add=AddRequest[psoID=PSOIdentifier[id='cn=himneee,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],targetID=ldap,returnData=everything,requestID=2014/09/12-15:29:03.318]]
2014-09-12 15:29:03,319: [main] INFO  Psp.execute(1183) -  - Psp 'psp' - Diff XML:
<psp:diffResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:03.243'>
  <addRequest xmlns='urn:oasis:names:tc:SPML:2:0' entityName='group' requestID='2014/09/12-15:29:03.318' targetId='ldap' returnData='everything'>
    <psoID ID='cn=himneee,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>top</dsml:value>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>himneee</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </addRequest>
  <psp:id ID='adhoc:rgtest:himneee'/>
</psp:diffResponse>

2014-09-12 15:29:03,319: [main] INFO  BaseSpmlProvider.execute(153) -  - Target 'psp' - Add AddRequest[psoID=PSOIdentifier[id='cn=himneee,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],targetID=ldap,returnData=everything,requestID=2014/09/12-15:29:03.318]
2014-09-12 15:29:03,320: [main] INFO  BaseSpmlProvider.execute(157) -  - Target 'psp' - Add XML:
<addRequest xmlns='urn:oasis:names:tc:SPML:2:0' entityName='group' requestID='2014/09/12-15:29:03.318' targetId='ldap' returnData='everything'>
  <psoID ID='cn=himneee,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  <data>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
      <dsml:value>top</dsml:value>
      <dsml:value>groupOfNames</dsml:value>
      <dsml:value>posixGroup</dsml:value>
    </dsml:attr>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
      <dsml:value>himneee</dsml:value>
    </dsml:attr>
  </data>
  <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
    <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
      <spmlref:toPsoID targetID='ldap'/>
    </spmlref:reference>
  </capabilityData>
</addRequest>

2014-09-12 15:29:03,320: [main] INFO  BaseSpmlProvider.execute(153) -  - Target 'ldap' - Add AddRequest[psoID=PSOIdentifier[id='cn=himneee,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],targetID=ldap,returnData=everything,requestID=2014/09/12-15:29:03.318]
2014-09-12 15:29:03,320: [main] INFO  BaseSpmlProvider.execute(157) -  - Target 'ldap' - Add XML:
<addRequest xmlns='urn:oasis:names:tc:SPML:2:0' entityName='group' requestID='2014/09/12-15:29:03.318' targetId='ldap' returnData='everything'>
  <psoID ID='cn=himneee,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  <data>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
      <dsml:value>top</dsml:value>
      <dsml:value>groupOfNames</dsml:value>
      <dsml:value>posixGroup</dsml:value>
    </dsml:attr>
    <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
      <dsml:value>himneee</dsml:value>
    </dsml:attr>
  </data>
  <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
    <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
      <spmlref:toPsoID targetID='ldap'/>
    </spmlref:reference>
  </capabilityData>
</addRequest>

2014-09-12 15:29:03,322: [main] ERROR BaseSpmlProvider.execute(188) -  - Target 'ldap' - Add AddResponse[pso=<null>,status=failure,error=customError,errorMessages={[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']},requestID=2014/09/12-15:29:03.318]
2014-09-12 15:29:03,322: [main] ERROR BaseSpmlProvider.execute(190) -  - Target 'ldap' - Add XML:
<addResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.318' error='customError'>
  <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
</addResponse>

2014-09-12 15:29:03,323: [main] ERROR BaseSpmlProvider.execute(188) -  - Target 'psp' - Add AddResponse[pso=<null>,status=failure,error=customError,errorMessages={[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']},requestID=2014/09/12-15:29:03.318]
2014-09-12 15:29:03,323: [main] ERROR BaseSpmlProvider.execute(190) -  - Target 'psp' - Add XML:
<addResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.318' error='customError'>
  <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
</addResponse>

2014-09-12 15:29:03,323: [main] ERROR Psp.execute(1452) -  - Psp 'psp' - Sync SyncResponse[id=adhoc:rgtest:himneee,status=failure,error=customError,errorMessages={[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']},requestID=2014/09/12-15:29:03.242,AddResponse[pso=<null>,status=failure,error=customError,errorMessages={[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']},requestID=2014/09/12-15:29:03.318]]
2014-09-12 15:29:03,324: [main] ERROR Psp.execute(1454) -  - Psp 'psp' - Sync SPML:
<psp:syncResponse xmlns:psp='http://grouper.internet2.edu/psp' status='failure' requestID='2014/09/12-15:29:03.242' error='customError'>
  <addResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.318' error='customError'>
    <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
  </addResponse>
  <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
  <psp:id ID='adhoc:rgtest:himneee'/>
</psp:syncResponse>

2014-09-12 15:29:03,325: [main] INFO  Psp.execute(1417) -  - Psp 'psp' - Sync SyncRequest[id=adhoc:rgtest:rgtest2,requestID=2014/09/12-15:29:03.324,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:03,325: [main] INFO  Psp.execute(1421) -  - Psp 'psp' - Sync SPML:
<psp:syncRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:03.324' returnData='everything'>
  <psp:id ID='adhoc:rgtest:rgtest2'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:syncRequest>

2014-09-12 15:29:03,331: [main] INFO  Psp.execute(1152) -  - Psp 'psp' - Diff DiffRequest[id=adhoc:rgtest:rgtest2,requestID=2014/09/12-15:29:03.331,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:03,332: [main] INFO  Psp.execute(1156) -  - Psp 'psp' - Diff XML:
<psp:diffRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:03.331' returnData='everything'>
  <psp:id ID='adhoc:rgtest:rgtest2'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:diffRequest>

2014-09-12 15:29:03,332: [main] INFO  Psp.execute(980) -  - Psp 'psp' - Calc CalcRequest[id=adhoc:rgtest:rgtest2,requestID=2014/09/12-15:29:03.332,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:03,332: [main] INFO  Psp.execute(984) -  - Psp 'psp' - Calc XML:
<psp:calcRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:03.332' returnData='everything'>
  <psp:id ID='adhoc:rgtest:rgtest2'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:calcRequest>

2014-09-12 15:29:03,427: [main] INFO  Psp.execute(1009) -  - Psp 'psp' - Calc CalcResponse[id=adhoc:rgtest:rgtest2,status=success,requestID=2014/09/12-15:29:03.332,pso=PSO[psoID=PSOIdentifier[id='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:03,428: [main] INFO  Psp.execute(1011) -  - Psp 'psp' - Calc XML:
<psp:calcResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:03.332'>
  <psp:id ID='adhoc:rgtest:rgtest2'/>
  <psp:pso entityName='group'>
    <psoID ID='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>top</dsml:value>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>rgtest2</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='gidNumber'>
        <dsml:value>3846643288</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </psp:pso>
</psp:calcResponse>

2014-09-12 15:29:03,432: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'psp' - Lookup LookupRequest[psoID=PSOIdentifier[id='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:03.428]
2014-09-12 15:29:03,432: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'psp' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:03.428' returnData='everything'>
  <psoID ID='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:03,433: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'ldap' - Lookup LookupRequest[psoID=PSOIdentifier[id='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:03.428]
2014-09-12 15:29:03,433: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'ldap' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:03.428' returnData='everything'>
  <psoID ID='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:03,435: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'ldap' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:03.428]
2014-09-12 15:29:03,438: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'ldap' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:03.428'>
  <pso entityName='group'>
    <psoID ID='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>rgtest2</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='gidNumber'>
        <dsml:value>3846643288</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </pso>
</lookupResponse>

2014-09-12 15:29:03,438: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'psp' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:03.428]
2014-09-12 15:29:03,438: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'psp' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:03.428'>
  <pso entityName='group'>
    <psoID ID='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>rgtest2</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='gidNumber'>
        <dsml:value>3846643288</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </pso>
</lookupResponse>

2014-09-12 15:29:03,439: [main] INFO  Psp.execute(1181) -  - Psp 'psp' - Diff DiffResponse[id=adhoc:rgtest:rgtest2,status=success,requestID=2014/09/12-15:29:03.331,synchronized=SynchronizedResponse[psoID=PSOIdentifier[id='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:03,439: [main] INFO  Psp.execute(1183) -  - Psp 'psp' - Diff XML:
<psp:diffResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:03.331'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:rgtest:rgtest2'/>
</psp:diffResponse>

2014-09-12 15:29:03,439: [main] INFO  Psp.execute(1446) -  - Psp 'psp' - Sync SyncResponse[id=adhoc:rgtest:rgtest2,status=success,requestID=2014/09/12-15:29:03.324,SynchronizedResponse[psoID=PSOIdentifier[id='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:03,440: [main] INFO  Psp.execute(1448) -  - Psp 'psp' - Sync SPML:
<psp:syncResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:03.324'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:rgtest:rgtest2'/>
</psp:syncResponse>

2014-09-12 15:29:03,440: [main] INFO  Psp.execute(1417) -  - Psp 'psp' - Sync SyncRequest[id=adhoc:rgtest:rgtestgroup,requestID=2014/09/12-15:29:03.440,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:03,440: [main] INFO  Psp.execute(1421) -  - Psp 'psp' - Sync SPML:
<psp:syncRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:03.440' returnData='everything'>
  <psp:id ID='adhoc:rgtest:rgtestgroup'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:syncRequest>

2014-09-12 15:29:03,440: [main] INFO  Psp.execute(1152) -  - Psp 'psp' - Diff DiffRequest[id=adhoc:rgtest:rgtestgroup,requestID=2014/09/12-15:29:03.440,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:03,441: [main] INFO  Psp.execute(1156) -  - Psp 'psp' - Diff XML:
<psp:diffRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:03.440' returnData='everything'>
  <psp:id ID='adhoc:rgtest:rgtestgroup'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:diffRequest>

2014-09-12 15:29:03,441: [main] INFO  Psp.execute(980) -  - Psp 'psp' - Calc CalcRequest[id=adhoc:rgtest:rgtestgroup,requestID=2014/09/12-15:29:03.441,returnData=everything,schemaEntityRef=SchemaEntityRef[targetID=ldap,entityName=group,isContainer=false]]
2014-09-12 15:29:03,442: [main] INFO  Psp.execute(984) -  - Psp 'psp' - Calc XML:
<psp:calcRequest xmlns:psp='http://grouper.internet2.edu/psp' requestID='2014/09/12-15:29:03.441' returnData='everything'>
  <psp:id ID='adhoc:rgtest:rgtestgroup'/>
  <psp:schemaEntity targetID='ldap' entityName='group'/>
</psp:calcRequest>

2014-09-12 15:29:03,538: [main] INFO  Psp.execute(1009) -  - Psp 'psp' - Calc CalcResponse[id=adhoc:rgtest:rgtestgroup,status=success,requestID=2014/09/12-15:29:03.441,pso=PSO[psoID=PSOIdentifier[id='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:03,539: [main] INFO  Psp.execute(1011) -  - Psp 'psp' - Calc XML:
<psp:calcResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:03.441'>
  <psp:id ID='adhoc:rgtest:rgtestgroup'/>
  <psp:pso entityName='group'>
    <psoID ID='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>top</dsml:value>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>rgtestgroup</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='gidNumber'>
        <dsml:value>3846632253</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </psp:pso>
</psp:calcResponse>

2014-09-12 15:29:03,546: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'psp' - Lookup LookupRequest[psoID=PSOIdentifier[id='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:03.540]
2014-09-12 15:29:03,546: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'psp' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:03.540' returnData='everything'>
  <psoID ID='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:03,546: [main] INFO  BaseSpmlProvider.execute(285) -  - Target 'ldap' - Lookup LookupRequest[psoID=PSOIdentifier[id='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>],returnData=everything,requestID=2014/09/12-15:29:03.540]
2014-09-12 15:29:03,547: [main] INFO  BaseSpmlProvider.execute(289) -  - Target 'ldap' - Lookup XML:
<lookupRequest xmlns='urn:oasis:names:tc:SPML:2:0' requestID='2014/09/12-15:29:03.540' returnData='everything'>
  <psoID ID='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
</lookupRequest>

2014-09-12 15:29:03,549: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'ldap' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:03.540]
2014-09-12 15:29:03,549: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'ldap' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:03.540'>
  <pso entityName='group'>
    <psoID ID='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>rgtestgroup</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='gidNumber'>
        <dsml:value>3846632253</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </pso>
</lookupResponse>

2014-09-12 15:29:03,550: [main] INFO  BaseSpmlProvider.execute(314) -  - Target 'psp' - Lookup LookupResponse[pso=PSO[psoID=PSOIdentifier[id='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]],status=success,requestID=2014/09/12-15:29:03.540]
2014-09-12 15:29:03,550: [main] INFO  BaseSpmlProvider.execute(316) -  - Target 'psp' - Lookup XML:
<lookupResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='success' requestID='2014/09/12-15:29:03.540'>
  <pso entityName='group'>
    <psoID ID='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    <data>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='objectClass'>
        <dsml:value>groupOfNames</dsml:value>
        <dsml:value>posixGroup</dsml:value>
        <dsml:value>top</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='cn'>
        <dsml:value>rgtestgroup</dsml:value>
      </dsml:attr>
      <dsml:attr xmlns:dsml='urn:oasis:names:tc:DSML:2:0:core' name='gidNumber'>
        <dsml:value>3846632253</dsml:value>
      </dsml:attr>
    </data>
    <capabilityData mustUnderstand='true' capabilityURI='urn:oasis:names:tc:SPML:2:0:reference'>
      <spmlref:reference xmlns='urn:oasis:names:tc:SPML:2:0' xmlns:spmlref='urn:oasis:names:tc:SPML:2:0:reference' typeOfReference='member'>
        <spmlref:toPsoID targetID='ldap'/>
      </spmlref:reference>
    </capabilityData>
  </pso>
</lookupResponse>

2014-09-12 15:29:03,553: [main] INFO  Psp.execute(1181) -  - Psp 'psp' - Diff DiffResponse[id=adhoc:rgtest:rgtestgroup,status=success,requestID=2014/09/12-15:29:03.440,synchronized=SynchronizedResponse[psoID=PSOIdentifier[id='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:03,553: [main] INFO  Psp.execute(1183) -  - Psp 'psp' - Diff XML:
<psp:diffResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:03.440'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:rgtest:rgtestgroup'/>
</psp:diffResponse>

2014-09-12 15:29:03,553: [main] INFO  Psp.execute(1446) -  - Psp 'psp' - Sync SyncResponse[id=adhoc:rgtest:rgtestgroup,status=success,requestID=2014/09/12-15:29:03.440,SynchronizedResponse[psoID=PSOIdentifier[id='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk',targetID=ldap,containerID=<null>]]]
2014-09-12 15:29:03,554: [main] INFO  Psp.execute(1448) -  - Psp 'psp' - Sync SPML:
<psp:syncResponse xmlns:psp='http://grouper.internet2.edu/psp' status='success' requestID='2014/09/12-15:29:03.440'>
  <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
    <psp:psoID ID='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
  </psp:synchronizedResponse>
  <psp:id ID='adhoc:rgtest:rgtestgroup'/>
</psp:syncResponse>

2014-09-12 15:29:03,556: [main] ERROR Psp.execute(811) -  - Psp 'psp' - BulkSync BulkSyncResponse[id=<null>,status=failure,error=<null>,errorMessages={},requestID=2014/09/12-15:29:00.541,responses=11]
2014-09-12 15:29:03,557: [main] ERROR Psp.execute(813) -  - Psp 'psp' -  BulkSync SPML:
<psp:bulkSyncResponse xmlns:psp='http://grouper.internet2.edu/psp' status='failure' requestID='2014/09/12-15:29:00.541'>
  <psp:syncResponse status='success' requestID='2014/09/12-15:29:01.601'>
    <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
      <psp:psoID ID='ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    </psp:synchronizedResponse>
    <psp:id ID='adhoc:MSTest'/>
  </psp:syncResponse>
  <psp:syncResponse status='success' requestID='2014/09/12-15:29:01.864'>
    <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
      <psp:psoID ID='ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    </psp:synchronizedResponse>
    <psp:id ID='adhoc:NewOrgH'/>
  </psp:syncResponse>
  <psp:syncResponse status='success' requestID='2014/09/12-15:29:02.062'>
    <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
      <psp:psoID ID='ou=ecaweb,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    </psp:synchronizedResponse>
    <psp:id ID='adhoc:ecaweb'/>
  </psp:syncResponse>
  <psp:syncResponse status='success' requestID='2014/09/12-15:29:02.199'>
    <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
      <psp:psoID ID='ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    </psp:synchronizedResponse>
    <psp:id ID='adhoc:rgtest'/>
  </psp:syncResponse>
  <psp:syncResponse status='success' requestID='2014/09/12-15:29:02.277'>
    <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
      <psp:psoID ID='cn=MSGroupTest,ou=MSTest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    </psp:synchronizedResponse>
    <psp:id ID='adhoc:MSTest:MSGroupTest'/>
  </psp:syncResponse>
  <psp:syncResponse status='success' requestID='2014/09/12-15:29:02.709'>
    <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
      <psp:psoID ID='cn=OrgH01,ou=NewOrgH,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    </psp:synchronizedResponse>
    <psp:id ID='adhoc:NewOrgH:OrgH01'/>
  </psp:syncResponse>
  <psp:syncResponse status='failure' requestID='2014/09/12-15:29:02.925' error='customError'>
    <addResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.081' error='customError'>
      <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
    </addResponse>
    <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
    <psp:id ID='adhoc:ecaweb:D394PG'/>
  </psp:syncResponse>
  <psp:syncResponse status='failure' requestID='2014/09/12-15:29:03.108' error='customError'>
    <addResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.206' error='customError'>
      <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
    </addResponse>
    <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
    <psp:id ID='adhoc:rgtest:Test new one'/>
  </psp:syncResponse>
  <psp:syncResponse status='failure' requestID='2014/09/12-15:29:03.242' error='customError'>
    <addResponse xmlns='urn:oasis:names:tc:SPML:2:0' status='failure' requestID='2014/09/12-15:29:03.318' error='customError'>
      <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
    </addResponse>
    <errorMessage>[LDAP: error code 65 - object class 'posixGroup' requires attribute 'gidNumber']</errorMessage>
    <psp:id ID='adhoc:rgtest:himneee'/>
  </psp:syncResponse>
  <psp:syncResponse status='success' requestID='2014/09/12-15:29:03.324'>
    <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
      <psp:psoID ID='cn=rgtest2,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    </psp:synchronizedResponse>
    <psp:id ID='adhoc:rgtest:rgtest2'/>
  </psp:syncResponse>
  <psp:syncResponse status='success' requestID='2014/09/12-15:29:03.440'>
    <psp:synchronizedResponse xmlns:psp='http://grouper.internet2.edu/psp'>
      <psp:psoID ID='cn=rgtestgroup,ou=rgtest,ou=grouper,dc=authorise-dev,dc=ed,dc=ac,dc=uk' targetID='ldap'/>
    </psp:synchronizedResponse>
    <psp:id ID='adhoc:rgtest:rgtestgroup'/>
  </psp:syncResponse>
</psp:bulkSyncResponse>

2014-09-12 15:29:03,565: [main] INFO  PspCLI.run(146) -  - End of psp execution : 3052 ms

Attachment: signature.asc
Description: OpenPGP digital signature




Archive powered by MHonArc 2.6.16.

Top of Page