Virtual Member Manager ignores object classes when an entity type definition includes a custom search filter

Technote (troubleshooting)


Problem

VMM ignores object classes if a custom search filter is defined. Add the object classes to the custom search filter to prevent VMM from returning the wrong entity type.

Symptom

Virtual Member Manager (VMM) may return objects of incorrect entity type to searches made by WebSphere Portal user management (PUMA) or other components. Portal will log exceptions:

... SystemErr     R
com.ibm.wps.um.exceptions.impl.PumaSystemExceptionImpl:
com.ibm.wps.um.exceptions.impl.SchemaViolationExceptionImpl:
com.ibm.portal.puma.SchemaViolationException: EJPSG0052E: Puma requested entity type PersonAccount from VMM but received Entity.                                                                        
...                                                                          
Caused by: com.ibm.wps.um.exceptions.impl.SchemaViolationExceptionImpl:
com.ibm.portal.puma.SchemaViolationException: EJPSG0052E: Puma requested entity type PersonAccount from VMM but received Entity

If a Directory Search request fails, it will also log:


... SystemErr     R
java.lang.NullPointerException
...                                                                      
... SystemErr     R    at
com.ibm.wkplc.people.wmm.workspace.WmmStore.nameSearch(WmmStore.java:290)
... SystemErr     R    at com.ibm.wkplc.people.picker.workspace.WmmPickerAdapter.nameSearch(WmmPickerAdapter.java:66


Diagnosing the problem

Enable the traces from the PUMA MustGather and identify the failing search. Notice that the search filter does not include the object classes as specified by wimconfig.xml for this entity type:


... LdapConnectio > com.ibm.ws.wim.adapter.ldap.LdapConnection searchEntities ENTRY o=IBM (&(!(|(uid=excludeduser*)...)...)(cn=searcheduser)...)

Rather, VMM combines the search argument with only the custom search filter defined in wimconfig.xml:

<config:ldapEntityTypes name="PersonAccount" searchFilter="(!(|(uid=excludeduser*...">
  <config:objectClasses>inetOrgPerson</config:objectClasses> 
  <config:searchBases>o=IBM</config:searchBases> 
</config:ldapEntityTypes>


Resolving the problem

Manually edit wimconfig.xml to add the appropriate object classes to the custom search filter. For example, the above excerpt from wimconfig.xml would become:

... searchFilter="(&amp;(objectclass=inetorgPerson)(!(|(uid=excludeduser*)..."> ...

Note the special encoding for & required in wimconfig.xml. If you do not use this encoding, an error like this may occur:

... exception     1 com.ibm.ws.wim.ConfigManager loadConfigFromXML CWWIM0001E The
configuration file '<PATH>/wimconfig.xml' is not valid. Root cause is 'The entity name must immediately follow the '&' in the entity reference.'.


To manually edit wimconfig.xml in a standalone environment:
1. Stop WebSphere Portal.
2. Edit wimconfig.xml in <profile>/config/cells/<cell>/wim/config/.
3. Restart WebSphere Portal.

To manually edit wimconfig.xml in a cluster:
1. Stop WebSphere Portal and any other application servers in the cell, including dmgr and nodeagent processes.
2. Edit the dmgr's wimconfig.xml file under the <profile>/config/cells/<cell>/wim/config directory.
3. Start the dmgr.
4. Run the syncNode command from all nodes in the cell.
5. Start all nodeagent processes in the cell.
6. Start the application servers.


Related information

PUMA MustGather


Rate this page:

(0 users)Average rating

Add comments

Document information


More support for:

WebSphere Portal
VMM - Virtual Member Manager

Software version:

6.1

Operating system(s):

AIX, HP-UX, IBM i, Linux, Solaris, Windows, i5/OS, z/OS

Software edition:

Enable, Express, Extend, Server

Reference #:

1433248

Modified date:

2010-07-27

Translate my page

Machine Translation

Content navigation