SR-A23247 · Issue 255179
Improved support for older EARs
Resolved in Pega Version 7.2.2
In order to improve backwards compatibility and resolve some agent restart issues, the engine has been updated to improve support for older EARs.
SR-A23558 · Issue 253477
IncrementalIndexer modified to better differentiate InsHandle
Resolved in Pega Version 7.2.2
Instances indexed with FTSIncrementalIndexer were returned in the result list with pxInsHandle="ClassName null" even when the pzInsKey of the instance was not null. This created a problem where perceived duplicates with the same pxInsHandle were stripped so the list did not return accurate results. To correct this, the code has been modified to set Additional Properties for External Class indices.
SR-A77555 · Issue 259289
Improved handling for multiple access 'when' in business event processing
Resolved in Pega Version 7.2.2
It was possible to encounter a missing page in the business event processing if event processing performed a call to tools.getThread().getAuthorization().haveAccess in multiple activities and there were several access 'when' actions defined for the class. The access 'when' requires that a work page be present to evaluate against, and depending on how the call was being performed or if passivation has occurred the process could throw an IndeterminateConditionalException and pass a null as parameter value for "aPage" parameter. To prevent this error, the activities pxCreateSummary and pxGetPrimaryClasses have been changed to pass the ClipboardPage of class for which haveAccess() is being called.
SR-A77555 · Issue 260161
Improved handling for multiple access 'when' in business event processing
Resolved in Pega Version 7.2.2
It was possible to encounter a missing page in the business event processing if event processing performed a call to tools.getThread().getAuthorization().haveAccess in multiple activities and there were several access 'when' actions defined for the class. The access 'when' requires that a work page be present to evaluate against, and depending on how the call was being performed or if passivation has occurred the process could throw an IndeterminateConditionalException and pass a null as parameter value for "aPage" parameter. To prevent this error, the activities pxCreateSummary and pxGetPrimaryClasses have been changed to pass the ClipboardPage of class for which haveAccess() is being called.
SR-A76408 · Issue 252207
Additional options added to configure VPD data pages
Resolved in Pega Version 7.2.2
It was previously only possible to configure 'customInfoDataPage' for VPDs through prconfig. This enhancement allows an application developer using Oracle and Enterprise DB to use D-A-S-S or JNDI to pass a customizable set of property values to the DB when a connection is established to the DB so that a SQL statement can be run. The primary use case for this feature is the ability to implement unbreakable object-level security for all data access from a Pega application by defining Virtual Private Databases (VPDs) on class tables that reference this information, for Pega DBMS that support VPDs.
SR-A102246 · Issue 270426
Enhancement added to clear buildup of lock objects in memory
Resolved in Pega Version 7.2.2
Locks are automatically cleaned up when a requestor is destroyed, but are not when the requestor is passivated. To facilitate cleanup of lock objects in memory, the new API pzDeleteExpiredLocks activity has been added. The activity accepts a number of days to purge as a parameter and removes the entries which are older than (today + given parameter).
SR-A82001 · Issue 255793
Keyed access data pages consider grid sort
Resolved in Pega Version 7.2.2
Page properties populated from keyed data page access were not taking into account grid sorting when passing the page list keys. This did work with the data page set to "Reload once per interaction" on the Refresh strategy, but this caused performance issues (as the SOAP service source was invoked with every single interaction on the data page). The cause was the hash table of keys in keyed page list not being rehashed after sorting, and this has been fixed.
SR-A99690 · Issue 270878
Extended Currency codes working as expected
Resolved in Pega Version 7.2.2
Pega provides the means to extend support for modified currency codes by way of a currency.properties file that holds the required currency code values. This files can be created and placed in the java_home lib folder. To resolve an issue where the API CurrencyProperties getCurrencyProperties(String aCurrencyCode) was not working for overridden values due to the value being stored as a locale code when retrieval was looking for a currency code, changes have been made to the lookup logic of where the currency.properties file will be read and when those values are updated in the currency map that the engine maintains internally.
SR-A22374 · Issue 250037
Node.isUsable() has been updated to return more accurate startup status
Resolved in Pega Version 7.2.2
Previously, Node.isUsable only checked whether the node is initialized or not. This created the possibility that if an Agent was started late in the engine start-up, node.isUsable() could return true while the agent was still null. In order to retain backward compatibility, a new API isStarted() has been added to the system to determine whether the server is completely up or not.
SR-A24733 · Issue 255983
Roles/Portals default setting updated to handle >50 portals
Resolved in Pega Version 7.2.2
Previously, the default setting for max Records was 50 when no number was specified in the list Page, but this was causing errors in the Data-Admin-Operator-AccessGroup Validate activity if the site had more than 50 portal records. This has been corrected by setting pyMaxRecords to 0 (which fetches an unlimited number of records) for the Validate activity while validating each portal.