Why is LDAP failing to set managers?

Stephen W_
Giga Guru

users are imported correctly, have correct source value etc. and I do not have a map for the manager field..

I have added correct code to transform map and have expanded all relevant fields to 255 characters and validated their data type.

I could script around this so easily.. but it should just work!

I threw some logging into LDAPUtils:

setManager: function(source, target) {

            var ge = source.getElement(this.manager);

            if (!ge || ge.isNil()){

                  return;

            }

            this._getLdapUserUpdate();

            var ldap = new GlideLDAPUserUpdate(); //what's the point of this.. never used..

            var mid =   this.ldapUserUpdate.getManagerValue(target, ge.toString());

            if (mid == null) {

                        gs.logWarning("mid is null. Manager: "+ge.toString(),"LDAPUtils");

                        gs.logWarning("mid is null. Source: "+source,"LDAPUtils");

                        return;

            }

            target.manager = mid;

      }

            target.manager = mid;

      },

The results are exactly as expected, not truncated, and matches another user's "source" field value..


mid is null. Source: [object GlideRecord]

mid is null. Manager: CN=Jimmy Hermo,OU=Users,OU=EXC,OU=CCRA,OU=CCR,DC=CCR,DC=local

Clearly it's calling the script include and not truncating.. so why is it not actually updating the user record?

Of course GlideLDAPUserUpdate source isn't described in the wiki/api.     Anyone have that somewhere?

Thanks!

1 ACCEPTED SOLUTION

Stephen W_
Giga Guru

Solved!


When the transform was setup the user.source field was mapped to a value that contained the DN, but not to a field that contained the "ldap:" prefix.



So when I was evaluating:



this.ldapUserUpdate.getManagerValue(target, ge.toString());



What I didn't know that it filtered on an "ldap:" prefix when evaluating the source field.


The second attribute of getManagerValue() is:


<source> + <source UID>



ldap:CN=Jimmy Hermo,OU=Users,OU=EXC,OU=CCRA,OU=CCR,DC=CCR,DC=local


not this:


CN=Jimmy Hermo,OU=Users,OU=EXC,OU=CCRA,OU=CCR,DC=CCR,DC=local


View solution in original post

18 REPLIES 18

Does the value coming into u_manager exactly match the source field on the existing manager? (minus the "ldap:" piece)


This was the key. I swore I changed the source field the other day from 40 to 200 characters. After you mentioned this, I went back and verified between the manager record and the import table. Changed it to 200 characters, re ran the import and manager showed up. Doing some more testing on this, but appears to be resolved.



Thanks a ton for you help,


-Chris


And you do have "ldapUtils.setManager(source, target);" in your transform script?   (should mostly match my code blocks above)


Hi,




I am facing same issue, I tried all above options but no luck.


Please help !!




Thanks,


Monica


Double check the u_manager field on the import/staging table. Even though I thought I had done it and made sure that the field was changed to 200 characters from 40, it was still 40 when I went back to look. Once I successfully saved the change in length, I've had no problem at all.


-Chris