Main Home:  |  Tel: +1.630.355.6292   |  Global Offices  




WebSphere Portal Personalization feature allows personalizing the content based on user selection and user profile. This is achieved using various Personalization Artifacts such as rules, content spots, campaigns and Application objects.

The following diagram explains the flow of events when a Personalization rule is executed.

Troubleshooting common Install & Configuration Issues

Troubleshooting common Install & Configuration Issues

Personalization portlets have been added manually to a page and the rule authors are unable to create rules.

If Personalization portlets have been added manually to a page then please ensure that the rule authors have the appropriate access to create the rules.
1. Navigate to Personalization navigator portlet , logged in as wpsadmin.
2. Click on the workspace on the navigation panel on the left.
3. Click on Extra Actions.
4. Choose Edit access
5. Grant manager/editor access to the users who need to create the rules
6. Click Apply and done
7. Log in as a regular user and you should be able to create rules.

Additionally, Review the section – Table 5. Access rights for Business Rules at

The issue with personalization occurs in one environment but not the other.

If there is an issue with Personalization portlets in one environment and not on the other, check the file on all the environments, verify the Access control settings for the Personalization portlets, verify whether the Personalization portlets have been deployed successfully using the Portal Administration Console and finally compare the folder structure for the Personalization Navigator and the Personalization Editor portlets at /installedApps directory.

Personalization rules are not working with a custom theme?

Try the failing scenario with the default theme. If the issue still prevails then collect the personalization Mustgather and engage IBM Support for problem analysis.

After executing setup-pzn task following an Admin install of WebSpere Portal, Personalization portlets are not available.

The WPSconfig scripts ‘setup-pzn’ and ‘remove-pzn’ for IBM® WebSphere® Portal and Workplace Web Content Management™ v6.0 and subsequent service releases are only supported when installing Personalization Server without WebSphere Portal.
Refer to the following technote for additional information. (Support statement for ‘setup-pzn’ and ‘remove-pzn’)

The IBM® WebSphere® Portal v6.1 configuration task modify-servlet-path may fail with a EJPXB0015E error code during the action-remove-pznauthor-portlet subtask. 

This problem can be caused by setting the same value for both WsrpContextRoot and WpsContextRoot.
Review the technote for additional information. (EJPXB0015E failure during modify-servlet-path configuration task)

Personalization Portlets are unavailable. Both the Personalization navigator and the Personalization Editor portlets show as “Unavailable”. When this occurs, we see the following Exception in the SystemOut.log

Ensure that the Editor portlet and the Authoring portlet have all the files and proper folder structure as it is possible that these files might be missing sometimes. Replacing the correct version of the missing files should correct this situation.

Troubleshooting common Authoring Issues

Troubleshooting common Authoring Issues

ConstraintViolationException while saving large Personalization rule on WebSphere Portal v6.1 and higher. In SystemErr.log following exceptions are thrown.

00000037 SystemErr R javax.jcr.nodetype.ConstraintViolationException: The value for the binary property ibmpersonalization:contents on node /New Business Roles and Categories exceeds its max length. The max length is 32000 while the value is of length 32074
00000037 SystemErr R at

Large rules can be built and saved to the repository by enabling the property rulesRepository.enableLargeRules to true in file located at<wp_profile>\PortalServer\config\config\services.
Additional Information is available in the following technote. (ConstraintViolationException while saving large Personalization rule.)

Non-administrator users receive an error when creating a rule for New Personalization Element in the Personalization Picker

Granting proper access rights to the non-administrator should resolve the issue. Please refer to the section ‘Access rights for Business Rules’ in the Infocenter.

Cannot edit or delete a Personalization rule in personalization editor or navigator. Even the Portal administrator is unable to release the lock on a rule which is currently being held by another user.

POSSIBLE CAUSE: User editing the rule then walks away without saving and session times out.

Use Support Tools Portlet available at Lotus Greenhouse portlet catalog ( ) to identify the UUID of the rule (in the RULESWORSPACE) to remove the locks for that node. After downloading and deploying the Support tools portlet

1. Enable Write Access. ( Contact IBM Support to obtain unlock access code ). Use the unlock access code available from Support.
2. Browse Nodes and navigate to the node ( in the RULESWORKSPACE )
3. Locate the lock and click on UNLOCK

Not able to create a new Business Rule on WebSphere Portal No page is displayed when clicking New Rule.

Personalization Navigator shows the message:

"The current view cannot be displayed"
Errors received when starting the application:
00000888 RegistryFacto W getPluginRegistry plugin added twice
00000888 RegistryFacto W getPluginRegistry <Null Message>
                                 java.lang.IllegalStateException: The
plugin is not enabled


Unable to register new PZN resource collection through Personalization Editor Portlet. ( WebSphere Portal v6.1 )

Install PK68613 ( Contact IBM Support to obtain this ifix ).

When trying to add a new Personalization rule or edit an existing rule by selecting a value, the information is not saved and the following error is printed to the Systemout.log: 

00000204 ActionManager W   internalExecuteAction id = n6jfN77400008 is invalid.
00000204 WPActionPhase W processPortlets   EJPEI0169E: Cannot execute the received action due to a  security violation. The assigned action ID n6jfN77400008 is invalid.

Install PK82601 which has a corequisite of PK79235. (WebSphere Portal 6.1.x) – ( Contact IBM Support to obtain these ifixes.)

Troubleshooting common Runtime Issues

Troubleshooting common Runtime Issues

The following Exception is seen in the logs when a Personalization rule is executed.

javax.jcr.nodetype.NoSuchNodeTypeException: Node Type clb:clbLibrary not found.

This problem indicates that the application is expecting a JCR Node Type which has not been defined.
Please review the technote for additional information
(JCR troubleshooting topic: troubleshooting common exceptions)
Also apply – PK52204 and PK69027. Contact IBM Support to obtain these ifixes.

Personalization Component in Web Content Management is not displaying any data.

Verify whether the rule that is associated with the Personalization component still exists in the personalization navigator portlet. If it does not exist then create a new instance of that rule and associate this rule with the Personalization component. If the rule exists on the Personalization navigator then resave the Personalization component to see if displays any data, If the issue still persists, contact IBM Support.

When giving the exact value for LDAP groups in a personalization rule, no results are being returned.

While specifying the LDAP groups in a Personalization rule ensure that they are entered in lower case as the PUMA API( Portal User Management ) returns the groups of the user in lower case.

Troubleshooting common Publishing Issues

Troubleshooting common Publishing Issues

The following error is shown in the SystemOut.log while importing Personalization rules. EJPVP10606E Items to be imported already exist in the workspace

If you had exported the entire workspace including the root node and were attempting to import to target server using the “Import” button, this will not work since the root node already exists. You need to export from a folder if you wish to use the import option.
Note: Simply moving the nodes from root to a folder will not work since the configured portlets expect the rule to be at the root location. You would need to reconfigure the portlets.

pznload script fails with 


--username wpsadmin --password xxxxxx c:\rule\SampleRule.nodes

Publishing file: 'c:\rule\SampleRule.nodes'
Server url: ''
Destination workspace: 'The default workspace for rules on the target server.'
Destination path: '/'
Published objects will only overwrite existing objects

Publish started [datetime] Connecting to the publish server
datetime execute
WARNING: could not send the request data Certificate not Trusted
at Source)
at Source)
at Source)
at Source)
at Source)
at Source)
at Source)
at Source)
at Source)
at Source)
at Source)
at Source)
Caused by: Certificate not Trusted
at Source)
at Source)
at Source)
... 14 more
Publish failed [datetime] The publish job could not be started: Unable to communicate with the remote server

The pznload script will fail with above error, if the trust store are not included in cacerts. The truststore for Personalization is handled through JSSE. Since this task is executed as a separate java process, it by default looks for the truststore in
<was_home>\java\jre\lib\security\cacerts. Use the IKeyman utility in WebSphere Application Server to extract the WAS certificates into cacerts and rerun the task. Please refer to WebSphere Application Server Infocenter to extract/import certificates.
Also, please note you have to extract the certificate in the target/publish server and import in the node, where you are running the task.

pznload script fails with HTTPS hostname wrong exception
This error occurs when the serverUrl is configured to utilize SSL.


--username wpsadmin --password xxxxx c:\rule\SampleRule.nodes

    Publishing file: 'c:\rule\SampleRule.nodes'
    Server url: ''
    Destination workspace: 'The default workspace for rules on the target server.'

Destination path: ‘/’

    Published objects will only overwrite existing objects

Publish started    [datetime] Connecting to the publish server
datetime execute
WARNING: could not send the request data HTTPS hostname wrong:  should be <>
        at Source)
        at Source)
        at Source)
        at Source)
Publish failed     [datetime] The publish job could not be started: Unable to communicate with the remote serverWebSphere\PortalServer\pzn\v6.0\publish>

  1. Ensure WebSphere Application Server (WAS) on the target node is configured to use SSL.
  2. Ensure the certificate has the same common name as the hostname.

    If you are using the default certificates that is shipped with WebSphere Application Server, then the common name for this host is “jserver: and you will receive the above error.
    If you need assistance with configuring the certificates in WebSphere Application Server (WAS), Contact WAS Support.

Unable to publish the rules using a custom port and firewall enabled.

Ensure the port that is being used for publishing is opened through the firewall.

When publishing to a server with a different username and password than the source, the following error occurs:

EJPVP20003E: The publish job could not be started: 'The username or password you specified was not valid'

This causes the publish action to fail.

Have the two servers to use the same username and passwords.

Troubleshooting common Visibility rule Issues

Troubleshooting common Visibility rule Issues

Administrator is not able to attach any visibility rules to the portal page
Note: This issue was reported on PZN; however it’s believed to exist in version 6.0 as well.
The log shows the following error:

0000005d ActionManager W internalExecuteAction id = E::fL75640004 is invalid.
0000005d WPActionPhase W processPortlets EJPEI0169E:
Cannot execute the received action due to a
security violation. The assigned action ID E::fL75640004 is invalid

Install PK82601. (Contact IBM Support to obtain this ifix )

Visibility Rules are not called / invoked by Portal Engine

Collect a trace with tracestring*=all. If there are no entries in the trace for classes, the pzn rules are not being invoked by the portal engine.

Find the resources.xml that contains Possible locations for the file:

Check if this config property is set:
You can remove this property completely from the file since the default value is true.
The property content.topology.dynamic controls if the Portal dynamic content model is enabled or not. The dynamic content model is the plug point for visibility rules. If it is disabled the rules will not be executed.

Does Visibility rules support Anonymous users?

No. WebSphere portal does not allow dynamic models for anonymous users for different reasons. The most important reasons are cacheability and memory consumption. Please refer to technote for additional information –
(Visibility Rules are not applicable to Portal Anonymous Users)

Attributes set in the session from one portlet are not available for visibility rules on another portlet ?

Attributes that are set in the session is available to visibility rule if it is in the same portlet or the scope is set to application.

Visibility rules are not getting re-executed or somehow retaining the previous state for that session even if we refresh the page many times.

Install PK67945 (Visibility rule cache does not always invalidate when cleared. ). Contact IBM Support to obtain this ifix.

The visibility rules and personalization engine gets fired only once at the time of login. It should be fired every time the user goes to the page on which they have applied visibility rules.

Disable visibility rule caching by setting the following property to false in and restart the server.


For more information please refer to the following articles:

Troubleshooting common Caching Issues

Troubleshooting common Caching Issues

Is there a way in which we can invalidate cache for a particular Application object and Resource collection on demand through portlets ?

Yes, If you are using the Application object in a visibility rule then disabling the visibility rule cache should address this issue.

These are the methods that you could use to invalidate the entire visibility rule cache or a particular rule within the visibility rule cache
invalidate(request, rulename)

-request is the PortletRequest and
-ruleName is a String relative to the Personalization Workspace. ( RULESWORKSPACE).

public static void invalidate(HttpServletRequest req) – Invalidates all visibility rule caching for the current user

public static void invalidate(HttpServletRequest req, String rule) –
Invalidates visibility cache for the rule specified for the current user

You might need to programmatically flush the Personalization cache, for example when a resource is updated outside of Personalization rules through some other application. A programming interface is provided to flush the cache. Since the timeout interval for the cache can be specified in the file, in many cases it may be adequate to wait for the cache timeout before updates are seen.

The class can be used to invalidate the cache for a particular resource, a particular resource collection, or the entire cache. Personalization uses this class internally to flush the cache when updates occur.

Flushing the cache for a particular resource may require that all cached queries be flushed. Flushing the cache on a collection may flush the cache for all collections using the same dynamic cache map. When the application frequently flushes the cache for a particular collection, isolating that collection in its own cache map through the use of the ruleEngine.cache.jndiName.resourceCollectionName property will result in better cache utilization.

Caching occurs before any rule exits are called.

For more information about using the DistributedMap and DistributedObjectCache interfaces for the dynamic cache, refer to the IBM WebSphere Application Server Information Center.

Does Caching need to be disabled at the master level in order to disable any particular resource collection?

You don’t have to disable the master level caching at rulesEngine.cache.enabled = false as it will cause performance impact.

A sample is as follows


The resource collection that is cached is wcmWebContentCollection and it is being cached under the default distributedMap dynacache instance

Another good resource is
(Page visibility rules and unreachable Search results)

In a scenario in which data fetched by the resource collection is liable to change at runtime within the same session and same goes for the application object as well. What is the best practice to be followed with respect to performance without Compromising the functionality ?

You could always invalidate the cache for a particular rule. can be used to invalidate the cache for a particular resource, a particular resource collection, or the entire cache. Personalization uses this class internally to flush the cache when updates occur.

Can we set the personalization visibility rule to a mode like NOT_SHARED for the Dynacache implementation? If so, how is this set and should it be set?

Visibility rules cache is per session, so that does not use dynacache.

Troubleshooting common Application object Issues

Troubleshooting common Application object Issues

java.lang.ClassNotFoundException: int is seen in the SystemOut.log while executing a visibility rule that uses an Application object.

The ClassNotfoundException is being caused by the use of an application object that is of type int. Personalization supports only java classes and this feature has been added through the ifix PM03285. Contact IBM support to obtain this ifix.

How to get the sessionID off the RequestContext object that is passed to the init() method in the ApplicationObject?

Call a method getRequestObject(). This is implemented through
That will return a which can be used to access various attributes.

If the interface is an Http type (, you should call getServletRequest.
If the type is portlet (, then you will need to call getPortletRequest.

In the ApplicationObject class there is public void init(RequestContext context) method and 
the object. How do we access the PortletRequest object and from there the User object. 

If you need to access an attribute on the user in a rule, you could create a condition in the rule to access the included portal user collection.
If it’s necessary to access the user outside of the included portal user collection to do some processing on that value, then the user object can be accessed from the RequestContext object by calling get(“pzn.user./.personalization/collections/ibmpzn:wpsUser”)

There is no public API way to access the underlying PortletRequest.

Troubleshooting common Performance Issues

Troubleshooting common Performance Issues

Please refer to the Personalization best practices guide at the following location that will address the common performance issues.

Collecting the traces for WebSphere Portal Personalization

Collecting the traces for WebSphere Portal Personalization

NOTE: Clients who are on WebSphere Portal version up until and 6.1 to need to install PK80778 ( available on IBM fix Central ) to collect the WebSphere Portal Personalization traces.

Personalization Mustgather 6.0 –

Personalization Mustgather 6.1 –

Copyright ©2023 All Rights Reserved.