IBM Connections with external Users: Bug in profiles_functions.js

I had the following problem with external users in Connections 5. The customer used a function for the “displayName” instead of a LDAP property value like “cn” resulting in the following lines in “map_dbrepos_from_source.properties”:

[codesyntax lang=”text”]

displayName={func_decorate_displayName_if_visitor}
displayNameLdapAttr={func_compute_dn}
decorateVisitorDisplayName= - External User
mode={func_map_ext}

[/codesyntax]

The function “func_map_ext” is a self-written function which just returns “external” so that all imported users will be handled as external ones.

While running a sync or populate job to import external users, the TDI job threw the following error message:

[codesyntax lang=”text”]

2015-02-12 18:02:22,244 ERROR [com.ibm.di.log.FileRollerAppender.5b5e0f8c-90a4-4b5f-a19e-0d3c6cc7777a] - CLFRN0104E: Failure during evaluation of mapping function for displayName. Exception is: Error while parsing script of eval() method, text func_map_ext}("displayName");

[/codesyntax]

It took some time to realize that function “func_decorate_displayName_if_visitor” in “profile_functions.js” is buggy.

In this function there was a mixup between the evaluation of the function for the “displayName attribute” and the function specified by the “mode” attribute. To fix that bug you need to change the following lines in “profile_functions.js”:

OLD:

[codesyntax lang=”javascript”]

if ((displayNameLdapAttrVal.length >= 3) && (modeVal.charAt(0) == "{"))
{
    var dispFunctionName = modeVal.substring( 1, displayNameLdapAttrVal.length - 1);

[/codesyntax]

 

NEW:

[codesyntax lang=”javascript”]

if ((displayNameLdapAttrVal.length >= 3) && (displayNameLdapAttrVal.charAt(0) == "{"))
{
   var dispFunctionName = displayNameLdapAttrVal.substring( 1, displayNameLdapAttrVal.length - 1);

[/codesyntax]

If you change these lines then you also can use a function for”displayNameLdapAttr”.

IBM Connections with external Users: Bug in profiles_functions.js