Skip to Content.
Sympa Menu

grouper-users - RE: [Ext] Re: [grouper-users] More PSP-NG: custom user attributes in userSearchFilter

Subject: Grouper Users - Open Discussion List

List archive

RE: [Ext] Re: [grouper-users] More PSP-NG: custom user attributes in userSearchFilter

Chronological Thread 
  • From: "Coleman, Erik C" <>
  • To: "Hyzer, Chris" <>, Bryan Wooten <>, "Gettes, Michael" <>
  • Cc: "" <>
  • Subject: RE: [Ext] Re: [grouper-users] More PSP-NG: custom user attributes in userSearchFilter
  • Date: Tue, 5 Jun 2018 03:55:44 +0000
  • Accept-language: en-US
  • Ironport-phdr: 9a23:OLqv3B0LIro9CTtesmDT+DRfVm0co7zxezQtwd8ZsesWIvXxwZ3uMQTl6Ol3ixeRBMOHs68C07KempujcFRI2YyGvnEGfc4EfD4+ouJSoTYdBtWYA1bwNv/gYn9yNs1DUFh44yPzahANS47xaFLIv3K98yMZFAnhOgppPOT1HZPZg9iq2+yo9JDffwVFiCChbb9uMR67sRjfus4KjIV4N60/0AHJonxGe+RXwWNnO1eelAvi68mz4ZBu7T1et+ou+MBcX6r6eb84TaFDAzQ9L281/szrugLdQgaJ+3ART38ZkhtMAwjC8RH6QpL8uTb0u+ZhxCWXO9D9QKsqUjq+8ahkVB7oiD8GNzEn9mHXltdwh79frB64uhBz35LYbISTOfV5Y63dYMgaRXJfUclNSyxPDIS8b44VAOoAO+ZTso3xqlQKoBe7AwSnGeHhxSJShnLu3aM0zfkvER3I0gIjEdIBsnXUo8n6O6oJS++50LXEwC/fY/9Kxzvw7pXDfBA7ofGLWLJ9acTdxFcoFwPBkFqQrJbqPzWN2u8QvGab9etgVeGygGM5pQ16vz+iydkwhYbVnY8Vy1TE9SF4wIYzIt24SVV7bcS6H5RNqiGXLo17Sd4sTWFvvSY10LwGuZijcScUzJQn2gLfa/2Dc4iT+B7jT+GRLS93hHJkZLK/hwuy/lO6xu39Ucm4yE5KrjBCktnLuHANzxvT6smBSvth5EuuxTGP1wXL5uFEPUA0ibLbJ4cvz7EqjpUcqV/DHjLtl0X0kqCZalkk9vKp6+v6ernmopicN4B7ig7gKKQigNKwDvklMgUIQmOV+vy82aX+8UD9XrlGlOA6n6vDvJ3ZO8gXvKy0DxFN3osj9xqzFTSr3MkCkXUaIl9IeAiLgorqNl3WLvD3E/Syj0ipnTpuw/3LOqPuD5DMI3fei7jsebNw5FRAxwcw099S4oxbBa0fLP/9XEL6qcbWAQUjMwOuxubqENV92Z0aWWKIGqKZMafSsVuJ5uIpJOmMZZQVtCzjJPc4+v7ilX45mVkDcqm1xZYbdXS1Eup8L0mEY3fgmNQMHXkQsgc8UuDmkFiCXiRSZ3a2UaI8/DY7CIe+AIjdWo+inKeM3Ca/Hp1SZ2BGDFeMEXbzd4meRfgDdT+SLtd7kjMYTbihV5Mh1Ra2uQ/10bpnKffU+jUGupL5zdR1+vbTmg8o9TxvFMmd12CNT3ponmMTWTM6xqF/oUphylidy6h4heJXFcBN6/9TTAg1KIPcnKRGDIW4ehPTc83NAH2mWNS9S3llS9kx0s0DeW58AN7kkwjO2SzsDrMIwfjDLoYl+6SU4H/2O8t7gyLMzrgoiR85RcxTOGuOm7J2907eC5Of1w3TuKu2aakHmGbo9WyDxGeK9gkMXwNsTajedW0RYg3bocmvtW3YSLr7Q58gNgZEwMjGYoZQa96hph8OEProM/zfZ2awnWCxHlCFyq7aP9miQHkUwCiIUBtMqAsU53vTcFVnCw==
  • Spamdiagnosticmetadata: NSPM
  • Spamdiagnosticoutput: 1:99

To answer Bryan’s first question, I am using the LdapGroupProvisioner, as this is exclusively creating groups.


I am still stuck, I tried a variety of JEXL syntax and it still won’t evaluate samAccountName. I couldn’t find any notes that said we set something up special before.  I even looked up the various methods and classes here: and they seem to be valid.


Chris, are you inferring that I need to define a hash map or something to pre-define the attribute so that it can be used by PSPNG? I’m still not clear what classes or methods are valid in the context of, and the pspng provisioner in particular.





From: Hyzer, Chris <>
Sent: Monday, June 4, 2018 9:39 PM
To: Bryan Wooten <>; Gettes, Michael <>
Cc: ; Coleman, Erik C <>
Subject: RE: [Ext] Re: [grouper-users] More PSP-NG: custom user attributes in userSearchFilter


I added this to the GSH wiki… if someone has the variables and types for the pspng to make this more realistic please let us know, or maybe add to pspng wiki…

_expression_ language testing


Set this in = DEBUG



Run GSH:



gsh 0% GrouperSession grouperSession = GrouperSession.startRootSession();

gsh 1% Group group = GroupFinder.findByName(grouperSession, "apps:loader");

gsh 2% Map variableMap =  new HashMap();

gsh 3% variableMap.put("theGroup", group);

gsh 4% String result = GrouperUtil.substituteExpressionLanguage("Name: ${}", variableMap);

gsh 5% result

Name: apps:loader


This is the log entry:


2018-06-04 22:32:58,197: [main] DEBUG GrouperUtil.substituteExpressionLanguage(9416) -  - Subsituting EL: 'Name: ${}', and with env vars: theGroup, grouperUtil with result: 'Name: apps:loader'





From: [] On Behalf Of Bryan Wooten
Sent: Monday, June 04, 2018 9:18 PM
To: Gettes, Michael <>; Bryan Wooten <>
Cc: ;
Subject: Re: [Ext] Re: [grouper-users] More PSP-NG: custom user attributes in userSearchFilter


I am a recovering Java programmer. I swear if I never see a null pointer exception again, I will die a happy man…


But I can still backtrace a Java stack dump in a log file for a clue.


I tried to read the Jexl docs from Apache and Grouper and was immediately lost…


I would ask readers to share their Jexl strings…


So I turned to my tried and true Java IDE (Netbeans / shoot me / not Eclipse or Jetbrains) and did some simple Java string parsing. I may have included some grouper jars files and some Apache Jexl jars…


Garbage in / Garbage out stuff.


“Co-programming” with a very competent co-worker (AD expert and knows more than enough about Linux/ shell).


Honestly our biggest set-back was that Loader Diagnostics for LDAP quit working (SQL works fine)? On our to-do / figure out list. I made a post re: this issue to no avail. :(


BTW, if anyone is interested, we figured out how to do a SQL loader job against a CSV file (don’t ask why data feeds are still so out-dated).




From: "Gettes, Michael" <>
Date: Monday, June 4, 2018 at 6:42 PM
To: Bryan Wooten <>
Cc: "" <>, "" <>
Subject: Re: [Ext] Re: [grouper-users] More PSP-NG: custom user attributes in userSearchFilter


Ok, this makes more sense.  I read your reply a couple of days ago and I just didn’t get it.


Maybe you can answer the next question I had - I need to write some jexl that will alter variables.  How would I test this without actually invoking grouper loader and PSPNG?  Seems awfully expensive to try something and then fire up the loader to see if it works.  I’d like to construct some variable values and then run the jexl over it to see if it was modified correctly.  I’m not a Java geek so this may be easy but I just need the magical incantation to make it happen.








On Jun 4, 2018, at 8:13 PM, Bryan Wooten <> wrote:


Last week my co-work and I spent most of a day trying to figure out Jexl.


The wiki examples were trivial. But we had a use case to load AD groups into Grouper keeping the AD hierarchy. (cn=group1, ou=groups, ou=dept1, ou=majorOrg,dc=school,dc=edu) where all the ou’s become stems/folders and the cn is the group name).


Using a basic LDAP filter like (&(objectclass=group)(cn=hospital*))


So the wiki provided no complete list of methods available to the Java class LoaderLdap.ElUtils.


So we ended searching for the source (LoaderLdap.ElUtils) on Git. And found the exact method needed. It performed as expected! Victory.


Grouper can be made very functional via configuration only, if you know the subtleties of the syntax and relations to the various property files.


I know submissions to the wiki are encouraged, but sometimes I feel a grouper-documentation list could be a benefit. But I have had bad ideas before.




From: <> on behalf of "Gettes, Michael" <>
Date: Monday, June 4, 2018 at 3:46 PM
To: Paul Engle <>
Cc: "" <>, "" <>
Subject: [Ext] Re: [grouper-users] More PSP-NG: custom user attributes in userSearchFilter


WARNING: Stop. Think. Read. This is an external email.

+1 - this is part of where the documentation is lacking a little bit and what led to the questions I had about JEXL in grouper and how it is used.




On Jun 4, 2018, at 5:16 PM, Paul Engle <> wrote:



  Is this in an LdapGroupProvisioner or an LdapAttributeProvisioner? In the group provisioner, anytime I've needed something from the user entry, I've referenced it as ${ldapUser.getStringValue('foo')}.  I've only used the ${subject} reference in the attribute provisioner. I don't know if that makes a difference or not, or under what contexts each of those objects is available.





Paul Engle

Office of Information Technology




On Mon, Jun 4, 2018 at 3:44 PM Coleman, Erik C <> wrote:



As a follow-up to my two subject sources scenario, I’m having trouble with custom subject attributes. I now have PSP-NG turned on, and it successfully syncs groups that are set with the provision_to attribute, but when it comes time to add members, I’m getting this error in the logs:


grouper-api;grouper_error.log;2018-06-04 19:36:59,091: [uofi_urbana-FullSync-Thread] ERROR Provisioner.evaluateJexlExpression(556) - - Jexl _expression_ samAccountName=${subject.getAttributeValue("samAccountName")} could not be evaluated for subject ''650000001'/'person'/'uofinetid'/null' and group 'null/null' which used variableMap '{userSearchBaseDn=ou=people,dc=ad,dc=uillinois,dc=edu, provisionerType=LdapGroupProvisioner, groupCreationBaseDn=ou=AuthMan,ou=CITES-Services,ou=CITES,ou=Urbana,dc=ad,dc=uillinois,dc=edu, , subject='650000001'/'person'/'uofinetid', provisionerName=uofi_urbana, groupSearchBaseDn=ou=AuthMan,ou=CITES-Services,ou=CITES,ou=Urbana,dc=ad,dc=uillinois,dc=edu}'


Here’s what I have set in


changeLog.consumer.uofi_urbana.userSearchFilter = samAccountName=${subject.getAttributeValue("samAccountName")}


This used to work in our older “pre-TIER” test environment. I’ve considered alternatives:


samAccountName=${}  -- won’t work because we specify subject id using our own uiucEduUIN attribute as specified in the


uiucEduUIN=${} – won’t work because one of my subject sources doesn’t use uiucEduUIN for subject id, it uses samAccountName.


Switching to use samAccountName for subject id won’t work, because we have too many people changing netids quite often.


A look at my personal subject record in Grouper appears to have everything it’s trying to evaluate:


Unique ID:




Coleman, Erik C



Coleman, Erik C


uiuceduuin:        650000001

dn:        CN=ecc,ou=People,dc=ad,dc=uillinois,dc=edu

displayname:     Coleman, Erik C

department:      Technology Services

distinguishedname:              CN=ecc,OU=People,DC=ad,DC=uillinois,DC=edu

samaccountname:          ecc

Member ID:       6fe2e751a0e14e41b896ee6cb8e23e02

Source ID:          uofinetid

Source name:    UOFI AD People


Why is the JEXL _expression_ getting an error? What’s the right JEXL syntax for referencing a “custom” attribute in a subject?




Erik Coleman

University of Illinois at Urbana-Champaign





Archive powered by MHonArc 2.6.19.

Top of Page