Personalization (PZN) Tips and Tricks

Difference between "is associated with" vs "is exactly"

Assuming next taxonomy:

  • mammal
    • feline
      •  lion
      •  cat
    •  ape
  • fish

if the rule says “return content whose category is exactly FELINE” it will return content that has that tag and if it says “return content whose category is associated with FELINE” it will return content that has the category FELINE (exact match), or MAMMAL (a parent category) or LION (a child category).

So, if says "is exactly":

  • mammal
    • feline
      •  lion
      •  cat
    •  ape
  • fish

And if it says “is associated with FELINE”:

  • mammal
    • feline
      •  lion
      •  cat
    •  ape
  • fish

is exactly is the most efficient, but really not by much since the category lookups should be cached and the predicate for each category is just a list of UUIDs, you can also provide a list of category UUIDs as the value of the "is exactly"


The list probably retrieved by some application object.

When referring elements

Referencing elements that do not exist on the autofill/placeholder item in result designs may cause another database call, even if the result was cached, because of how the results lazy/load into the cache.

Tip: always check the AT first in a [Plugin:equals text1=“[property key=“authoringtemplate”] text=“TemplateA”] and then directly reference the appropriate element

How to use WCM categories from query parameter for personalization

Use query parameters:

Right now is possible for:

  • Content path: to get content, a single path can be used.
  • Authoring templates: to get content that use only the ATs specified, multiple values can be added.
  • Categories: to get only the content tagged with the categories specified.

Question: is possible to send multiple paths, like sending multiple categories on a single parameters??

From: Luke Cressman

Select actions are restricted by its query languague (xpath) to a single path

Override List Presentation component

Note: You can override the list presentation that is used to render any list by setting the request parameter or request attribute ListPresentationId to set the ID, or ListPresentation to set the name path.


  • &ListPresentation=MP_WEB_DESIGN_LIB/Sites/common/generic-pzn/generic-list-for-directory
  • &ListPresentationId=4bff91f1-0841-4d53-bdcd-52df5059751a


Improving IBM Web Content Manager Personalization rule performance using Include Only

 Think of it as a filter that breaks a rule into 2 parts. 

Part 1: Get all news ordered by date
Part 2: "Include only" results that match the user profile

The part 2, can be reused across all the rules. since it has the same structure - content that matches languages, country (or all countries), sector (or all sectors) etc. The word "include only" is a little weird - I really means "return only". So part 1 creates a big cache (of all the news) - part 2 queries that cached object to create a smaller one just for Mexico line managers.  In theory, it will make everything faster but ALSO much easier to build and maintain. Since there complex part of the rule is reused in part 2.

The include only doesn’t work because the post filter doesn’t compare categories (English) on the user to the value on the content which is stored as guide (cc3543-32344-44568-2drd7 != English (text)). Luke said a application object can fix that. However we still did not get great results from a direct guide comparison.

Even the simplest of rules seem to have a build in latency that is unacceptable in the worst case scenario. (No cache)

Performance Tips

Case: we have a rule that requests content with specific set of ATs, specific set of categories, in a specific location. would it be faster if we didn’t ask for specific ATs? or slower?

Luke: selecting based on the AT should be fine, categories and location are the slow ones they add joins.

So it won’t have much impact if we ask for content with 4 or 5 ATs?

Luke: thats fine, and the number is somewhat irrelevant when it comes to the query composition.

PZN used in this case:

Exclude current content from a PZN

  • is possible to exclude current content from a PZN??
    • without any JS logic