Pages

Tuesday, 23 February 2021

Did you know? Search Keys are shared from one Component to another ?


Components which share the same Search Keys will always pass the Key values to the other.  

We can read about this standard behaviour in the  PeopleCode and the Component Processor > Search Processing in Update Modes 


Alternatively, we can see this at work in any PeopleSoft system by navigating to 

PeopleTools > Security > User Profiles > User Profile

Search for any OPRID and open the User Profile Component

Now navigate to 

      PeopleTools > Security > User Profiles > Copy User Profile

and we'll see that it's automatically passed the OPRID from the first component into this one ready for you to use.

I've worked on several PeopleTools 8.58 upgrade projects recently and discovered a bug which I thought might be useful for the community to know about and some ideas for a resolution.

To demonstrate the issue we need to create a Fluid Navigation Collection which contains the portal folder User Profiles.


We can use the Tile Wizard to create a Fluid Tile which opens this Navigation Collection.

There's a bug in PeopleTools 8.58 (Patch 9 and earlier) which means that Search Keys are not passed from one Component to another if you're operating in the context of a Fluid Navigation Collection.  This might not seem like a serious issue but when users are working on multiple components for the same entity (e.g OPRID in our case here) then they'll soon notice this.  And, of course, the very reason we created the Nav Collection in the first place is to group related Components together to reduce the amount of time spent traversing the menu.

You can see the effect of this issue in the video below.


Solution

We might need to wait until this is fixed in a PeopleTools patch (currently targeted for patch 10 under Bug ID 31890562 )  See Doc ID 2714929.1

But, depending on the impact of the issue on your users you could provide a low impact workaround using Event Mapping and a Global variable.

On Component PreBuild of each component get the Keys from the Search Record and set a Global variable,

On SearchInit of each Component simply read the Global Variable and (optionally) set the SearchDialogBehavior(0) to force the processing of the Key. 

The video below is a quick walk through of this hack.


I got this working on my two sample Components.  This is only a few hours work for a potentially big pay off and it's a totally isolated customisation because we're using Event Mapping.

Any other ideas or suggestions?

No comments: