Pega Infinity™ includes an industry-standard release process to simplify and maintain high-quality releases. Several cumulative patches are released a year for each release stream. The Resolved Issues page contains information about client-reported issues that have been addressed for the specific release.
For a formatted complete set of the Resolved Issues for this release, download the PDF attachment at the bottom of this page. (Note that you must be logged in to access the attachment.)
|Ticket #||Issue #||Title||Description|
|SR-A8538||222591||RepeatIndex generation improved||Controls in a triple layout included in a row repeat did not have matching unique IDs and label for attributes. This was due to incomplete generation of the repeatindex for the ID, and has been fixed.|
|SR-B66795||317118||ConvertAttachmentToPDF Activity deprecated as part of PDM removal||As the Pega Distribution Manager is no longer offered as part of the Pega application, the "ConvertAttachmentToPDF" function previously offered as part of PDM 3.3.5 is now [Withdrawn,Deprecated] from 'Pega-ProCom' & 'Pega-ProcessEngine'|
|Tab header value works for SSO||The Tab header value was not updated with the rule name or Work Object ID when SSO authentication was used with sub-domain URLs. This has been fixed.|
|SR-B73087||343814||Fixed incorrect number formatting application in Spanish locale||Errors were seen for fields having pxCurrency and pxNumber control when using the Spanish locale (es_CR):
1. After entering an amount like 917.25 on a field which is configured to refresh section on click/on change, clicking on the field caused the decimal to move and resulted in multiplying the amount by 100 (91725.00)
2. Fields did not allow entering a comma as a decimal delimiter or were stripping the comma.
This has been fixed by modifying pzGenerateTextinput assembly to not apply formatting for numbers in some specific locales.
|SR-B74459||329573||Corrected additional Fork connector||When using a Fork decision shape configured to skip assignment conditionally, an extra connector link appeared in the screen flow. This has been fixed.|
|SR-B77623||346655||Handling added for empty queue in DeleteDeferred||The DeleteDeferred method was setting a step status fail after trying to delete a non-existent queue item. A catch block has been added which will back out if the SLA queue deletion fails.|
|SR-B78077||364120||Documentation updated to assist in fixing UnresolvedAssemblyErrors when resolving RUF rules||To address UnresolvedAssemblyErrors resolving RUF rules, the following help topics have been updated:
To include the following cautions:
* Review the archive contents to better understand which rule sets are capped and to determine the relatives risks and benefits of running uncapped rule sets.
* Do not import an archive into an active runtime instance of Pega Platform because the archive can overwrite rules in use.
|SR-B79034||333532||Flow breadcrumbs improved for temporary objects||Issues were seen with navigating a screen flow properly when the work object was temporary. The screen flow contained sections with some required properties and “Allow errors” was checked to support navigating back and forth when there were errors; clicking the breadcrumb to go back in the flow worked, but clicking Next to go forward again did not proceed to the next flow action. This was due to missing validations, and changes have been made to the Complete Assignment function to handle the errors for Temporary and Non-Temporary Cases.|
|SR-B82031||345364||Filter popup aligns with selected column||When a wide grid was scrolled to the right and a column was filtered, the filter popup as not aligned with the column being filtered. Instead, it was shifted to the left of the column. This was due to the popover not being aligned properly with the target, and has been fixed.|
|SR-B84658||345365||Popover visible for autocomplete on overlay||The Popover was not visible for autocomplete on an overlay when the center overlay option was checked. This has been fixed by adding a scroll handler with an 'if' condition to the rootPopover when there is a child popover on it.|
|SR-B85840||350669||Null check added for Grid content in a read-only RTE||ui_grid.js was trying to initialize a grid from the markup of mail content. Since there were some missing attributes, script errors were thrown that resulted in an endless busy indicator. This is now fixed by adding the necessary null checks in Grid code.|
|SR-B86231||360758||Error identification improved for Data Flow Errors landing page||If a dataflow failed because of a particular input (row), the "Data Flow Errors" landing page was not showing which record was at fault. To correct this, the system will inspect the exception coming from the database layer to define which record failed the batch. If it's not possible to identify the actual record, a general exception will be generated.|
|Modal dialog accessibility enhancements||In order to ensure Modal Dialogs are accessible via screen readers and navigable using keyboard, the following criteria have been reviewed and updated as necessary for both editable and read-only use:
- Modal dialog is accessible using the standard mix of screen readers (JAWS +Microsoft Internet Explorer + Windows / VO + Safari + Mac / Chromevox + chrome / NVDA / Firefox + windows)
- Modal dialog is navigable using TAB key navigation
- Modal dialog is dismissed on pressing ESC key
- Modal dialog always has a aria label tied to the Title of the dialog
- Modal dialog always has a close button
|SR-B88777||344614||Notes in the Service case in 360 Screen properly editable||When attempting to add Notes in the 360 screen after launching a Service case in an interaction, the Notes section became disabled but the record of a new note was created. Investigation showed that if there was a Main section that was readonly and there was a section inside cell set to editable in the presentation tab in non-template mode, it was rendering as readonly when it should have been editable. This has been corrected.|
|SR-B89236||358451||ShowHarness tabs localized||Localization has been added to DC Tab names for showHarness action.|
|SR-B89743||338705||Autocomplete overlay placement fixed for iOS||The autocomplete overlay in mobile was not appearing in the correct place on iPhones. This has been fixed.|
|SR-B90076||341632||Pagination fixed for customized reports||When a report has Header display set to 'Hide column headings' or 'Summary/sort options only', clicking on the navigation page index did not display any further pages. This was caused by malformed HTML that caused the page change to not get picked up, and has been fixed.|
|SR-B91716||340031||DSS rulesets for MQListener and MQConnector flows separated||When both a Listener and a Connect-MQ are configured, the connector tried to make use of two DSS settings in order to work. However, this caused the previously working listener to start failing and throw an exception indicating the options being set are invalid. To resolve this, DSS rulesets for MQListener and MQConnector flows have been separated. This also makes the code backward compatible.|
|SR-B92177||368665||Resolved "unique constraint" error in custom NLP data handling||When saving an NLP record using a custom activity instead of the pzSaveSummaryReporting activity available from NLP framework, the error "Unique constraint (PEGADATA.PR_DATA_NLP_SUMMARY_PK) violated" was logged. This was traced to a parameter not being passed, and has been resolved by adding the unique value to pxID in pxSaveTADetails.|
|SR-B92421||348757||Email Attachments use given mail encoding instead of defaulting to UTF-8.||For email listener use cases, email attachments were always converted to HTML using UTF-8. This caused email characters to be changed when they were sent using any other type, ex ISO-8859-1 (Western European). To resolve this, the encoding used in the incoming email will be used to generate the HTML content before it is attached to the work object.|
|SR-B93296||354784||pxIndexPurpose added to joins||Declare index joins have been updated to add the pxIndexPurpose filter while joining two tables.|
|SR-B93522||357779||BIX CLI extract error handling improved||Error and exceptions handling has been improved to resolve Inconsistencies that were seen with the XML output using BIX CLI extract.|
|SR-B94230||342360||Defer loaded UI in review harness checks for parent editability status||When a layout was defer loaded, it appeared as editable in the review harness instead of read only as expected. This was caused by Dynamic layouts not honoring the readonly parent status from the section level when using defer loading, and has been fixed by adding a check for the parent status.|
|SR-B94928||362772||Reworked conflicting timeouts for PRThread||If a PRThread was activated when a Requestor was in TIMED_OUT state, then pages like Application, Accessgroup and properties like pxPortal were cleared from the PRThread and never restored even after re-authentication of the requestor. This happened when the authentication timeout value specified in the access group was less than the passivation_timeout for the requestor, and has been fixed.|
|SR-B94951||343587||Section assembly escapes quotes||Quote marks were being removed from an action string with a value containing a quote during section assembly. To correct this, the quote character will be escaped rather than removed.|
|SR-B95671||357201||DST issues fixed for RD chart date/time labels||Date and Time labels on a Report Definition chart axis displayed incorrectly for operators in certain time zones when the Date property was configured as "Date" or "Time" only rather than "DateTime". To correct this, the Fusion Chart data generation has been modified to change the parseDate() and formatDate() to use GMT for Date and TimeOfDay properties instead of the server's time zone, and to change normalizeDateCal() and createDateTimeCategories() to set time zone to GMT for Date and TimeOfDay properties. DateTime properties will not be affected.|
|SR-B95713||354215||Added default value for AssociationClass||pxGetAssociations was failing if no value was provided for AssociationClass param. To address this, the default value for this will be set to Link-Association in the @baseclass pxGetAssociations activity in Pega-ProcessEngine rule set > step 2 property set.|
|SR-B95820||355562||Added ignorecase to filter pxAssignedOperatorID||SOAP service GetPMFAssignments622 was not returning tasks when the operator ID had uppercase characters; this has been fixed by modifying the list view GetPMFWorklist to have Ignorecase selected for filter pxAssignedOperatorID.|
|SR-B95980||343245||Fixed set focus timing issue||Set focus was not working on tab keys after upgrade due to an event in the queue conflicting with the set focus event, and has been fixed by adding a conditional setTimeout for tabkey.|
|Failed service requestors return status along with error message||Queue items related Service requesters were going to broken status with a "Database rollback caused queue item rollback" exception. Investigation showed BatchRequestorTask was not returning error messages in case of failure on a service activity, but rather displayed a generic error message in all error scenarios. This has been fixed by modifying ProcessServiceRequestMethod to return the status of a service activity along with an error message in cases of queue process failure.|
|SR-B96842||355769||JAWS reads collapsible header title sourced by JSP||JAWS was not reading expanded/collapsed headers properly if the title was sourced by a JSP property reference. This has been corrected.|
|SR-B96909||357163||Enhanced features for SecureAll settings||Previously, the option existed to support secureAll (i.e. securing all streams and activities) or to list the streams or activities which needed to be secured against CSRF attack. An enhancement has now been added to support the list of allowed activities or streams for which CSRF attack is skipped so that secureAll can be set to True with a provided exemption list of activities or streams.
1) A new DSS setting security/csrf/AllowSameDomainReferrer which allows either True or False has been added.
2) When DSS security/csrf/AllowSameDomainReferrer is set True then the current behavior is retained, i.e. if the referrer is in the allowed referrer list or the request is from same domain of the Pega app then the request is considered as valid even if the token validation fails.
3) When DSS security/csrf/AllowSameDomainReferrer is set False and if the token validation fails. it will be considered a CSRF attack. If the token validation passes then that success is returned.
4) New DSS settings security/csrf/allowedActivities and security/csrf/allowedStreams have been introduced to take the list of activities and streams for which CSRF validation is skipped when security/csrf/secureall is set True.
5) The new DSS settings security/csrf/allowedActivities and security/csrf/allowedStreams will take precedence over the existing DSS settings security/csrf/securedActivities and security/csrf/securedStreams
|SR-C10058||352947||Validation error persists for focus out||The Field Validation Error massage was lost when the error field was clicked and then any other area was clicked. This has been fixed.|
|SignatureMethod Algorithm attribute in Authentication Activity now obtained from certificate||When creating an authentication request in pySAMLWebSSOAuthenticationActivity (step 6), the system was generating the wrong SignatureMethod Algorithm if the site was using certificates with RSA - SHA256 encryption. This was due to the signature algorithms being hardcoded in SAML code, and has been resolved by getting the signature algorithm from the certificate.|
|SR-C10215||356670||Invalid editable field correctly hidden||When a 508 Accessibility user logged in to any harness, an editable field was added after the main layout and sections. This was shown visually with the web accessibility toolbar, and accessibility users were able to navigate to this field via Tab navigation. This field was added intentionally to address an issue, but recent updates to the accessibility tools made it visible. The code has now been updated to correctly hide it.|
|SR-C10216||359979||Removed extraneous tabIndex in Microsoft Internet Explorer||An extra tabIndex on <th> in Microsoft Internet Explorer which was not required and causing additional issues has been removed.|
|SR-C10229||360442||pxAssignDateTime updated during GetNextWork||The property pxAssignDateTime of an assignment was not getting updated using GetNextWork to fetch a case from the workbasket and assign it to a worklist. This has been corrected.|
|SR-C10270||355775||Added client side validation for manually entered date||In a Date Time control defined on date type property, if the date was entered in yyyy/MM/dd format manually, a client validation error was thrown on the screen stating the format was invalid. Clicking on the submit button even after this the client side validation error submitted the form. This did not happen if the property type was Date Time. To correct this, code changes have been made to get the client side validation for an invalid date format.|
|SR-C10277||352040||Declare Expression rule with "\" in the name opens correctly||A declare expression rule with "\" in the name was not opening in the ruleform. This has been resolved by escaping the string properly while passing for parsing.|
|SR-C10396||353405||Optimistic locking fixed for adding work parties||With optimistic locking enabled, attempting to submit the assignment after adding work parties from the out-of-the-box case screens resulted in the error message:
"You have lost the ability to make this change because a change elsewhere has taken precedence over the change you made here. " This has been fixed by reworking the order of operations in the optimistic locking.
|SR-C10430||353177||Null check added for offline rendering of declarativeTarget||When rendering a section offline that has declaratives, the platform tried to evaluate a pyWorkPage which had no parent, resulting in a JS error and breaking the subsequent JS functions. This has been handled by putting a null check in the failing JS function.|
|SR-C10445||354093||Added Null Pointer Exception check to avoid Sync fail||A null pointer check has been added to pzPackagingExceptionCatcher to handle exceptions.|
|SR-C10476||354997||Corrected display of drilldown report popup||Launching a report in a pop-up and drilling down sometimes caused the entire portal to be displayed instead of the single document. At other times the report appeared with a header and left side panel, which was not the expected behavior. This has been fixed.|
|SR-C10482||355568||Local Action modal dialog localized offline||Offline localization has been added to the Local Action modal dialog description.|
|SR-C10528||355028||Enhanced engine startup exception logging||In order to better diagnose engine startup failures, the logger has been modified to print the class name for which the exception was generated.|
|SR-C10543||352808||Parameter value setting for read-only field label fixed||A text field label value provided as a parameter (say Param.pyNextLabel) was not working for read-only sections. This was due to a missing case for param labels to render the param value properly, and has been fixed.|
|SR-C10550||352390||GRS value added to authprofile in Connect CMIS||Given a Connect CMIS with GRS syntax for Authentication profile, the code was not in place to get the configured GRS value for the authprofile, resulting in the runtime scenario failing while placing the file into CMIS repository. To correct this, code has been added to add that value to the Connector pyAuthenticationProfile property.|
|SR-C10617||362409||Removed double-encoding for datatypes created in Japanese||The data page and data page list were displaying junk values when the datatype was created in Japanese. This was traced to the classname being double-encoded, and has been corrected.|
|SR-C10766||359295||Added check to pxUpdateDateTime to compensate for DST/UTC timestamp inconsistencies||Existing customer data created during the DST transition hour in November had an incorrect pxUpdateDateTime, causing Obj-Refresh-and-Lock to disregard local changes and always pull from the database when saving a work object. This was traced to an inconsistency in how timestamp data for pxUpdateDateTime is saved; the value in the database column reflects UTC, while the value in the BLOB reflects the user's system time. This presents an inconsistency during DST as the system time will just move back 1 hour at 2 AM on DST, while UTC will continue on. Objects created during this single hour are out of sync by 1 hour, thus failing a check within Opener.isTimestampDeltaInTolerance(), which is called by OpenIfStale(), used within Obj-Refresh-and-Lock. To resolve this, if the pxUpdateDateTime is exactly one hour off when comparing the column and clipboard on an Open, the system will now ignore the optimization, re-open from the database, and compare again.|
|SR-C10790||351446||Help documents updated for DB2/zOS tablespace and aux tables DDL||n Pega 7.3.1, the ability to explicitly generate create tablespace and aux tables DDL for a DB2/zOS database was added to the import wizard. For a Database-Admin-DB-Name rule for a DB2/zOS database there are dynamic system settings needed. For the PegaRULES and PegaDATA databases these DSS are setup as part of an installation/upgrade. To use this feature for other D-A-DB-Name rules the database configuration properties need to be set up with in Pega using prpcUtils. The help documents have now been updated with this information.|
|SR-C10853||353638||System status in Extractimpl corrected for BIX extraction failures||When a BIX Extraction failed during parsing command line params the JVM went through normal shutdown while the expectation was to have an abrupt shutdown. This was traced to the System exit status not properly setting the error level var in Extractimpl to true, and has been corrected.|
|SR-C10925||352602||Set source list for Repeating Dynamic Layout works for Microsoft Internet Explorer||When using Microsoft Internet Explorer , setting the source as property using PageList or Page Group / Datapage for Repeating Dynamic Layout and submitting the property dialog resulted in "Source is UNSPECIFMicrosoft Internet Explorer D" errors. This was caused by an error in the pzpega_ud_section file, and has been fixed.|
|SR-C11008||353589||Documentation added for Work Group "Authorized Managers" field||As of v7.3.1, the Work Group configuration has a new field "Authorized Managers" which takes a list of manager IDs who can also see the work of that team. This is the field previously given as "Contacts". The documentation has now been updated to reflect these changes and to clarify that work group = team. Legacy style tables have also been converted into task topics.|
|SR-C11017||353403||Test Connectivity enhancement checks database availability||An enhancement has been added to the Test Connectivity button on the Extract ruleform to test the ability to connect to the database.|
|SR-C11027||353987||Check added to fix class not found exceptions||A "Class does not exist" exception was appearing while invoking pzGetCaseDetails via REST client due to empty SLA flow pages being created by the API. A check has been added to correct this.|
|SR-C11041||352810||UI retains layout when RTE maximized for editing||After using the 'Maximize' button in a Rich text editor in a section, the screen layout was incorrect after visiting another window and toggling back to the one with the RTE. This was a timing conflict: when the RTE is maximized CSS styles are captured and removed from the Harness, and whenever refresh section fires onChange, RTE is destroyed and recreated. To make sure the UI does not get distorted, pzpega_ui_richtexteditor.js has been modified to resize the RTE before destroy and to set the CSS styles back to the harness.|
|SR-C11138||357104||Removed stray attribute causing Accessibility error||While validating the Case Manager portal, a critical error thrown by the Accessibility validator was traced to the attribute 'aria-selected' being set to false for Tabs. This was misplaced code applied to an element that did not need it, and has been removed.|
|SR-C11146||355013||Corrected thread contention performance issues for requestor create/retrieve||A thread contention on Requestor retrieval was traced to a global level lock in PRNodeImpl.class, and the global lock has been replaced with a ReentrantReadWriteLock.|
|SR-C11148||354987||Performance improvement for AccessInfoConclusion evaluation||In order to improve performance during an AccessInfoConclusion evaluation, data will be stored in a ConcurrentHashMap instead of a Hashtable.|
|SR-C11149||355078||Added prconfig setting to adjust sync policy for LAC||Some contention on the monitor lock for the LocalizedApplicationContext was seen on sites with with thousands of concurrent users logging in and out. To improve performance, a prconfig setting has been added to LAC - registerUse() & deregisteruse(). to allow use of a looser synchronization policy.|
|SR-C11241||355607||Support added for secured Connectors to use "Keystore location"||Support was recently added for "External keystores" on the Keystore ruleform, seen in the new "Keystore location" drop-down at the top of the form, but Connectors were not able to use the new Keystore types (File reference and data page) for HTTPS connections. This ability has now been added by modifying SSLUtils.java and KeyStoreUtilsImpl.java to support the file reference keystore.|
|SR-C11319||352584||Mobile dropdowns accept data binding from all sources||When entering reports on Mobile, dropdowns were being reset after filling in autocompletes and other dropdowns. This was traced to data binding not being supported for sources other than Associated, and changes have been made to the generateDropdown RUF to support data binding for all sources of dropdown to correct this.|
|RDL FlowAction Section correctly rendered readonly offline||When given a Repeating Dynamic layout in a Section which had the Primary Section and Detail Flow Action configured and the section in Detail Flow Action was configured to display in read-only mode, the layout worked as expected on Desktop and Mobile online, but enabling any case for Offline caused it to not be rendered in read-only mode. This was an issue with how the offline readonly information was being stored, and has been corrected.|
|SR-C11373||353185||Logging enhanced for names of activities||The new logger 'LogActivityExecution' has been introduced to log the names of activities running on the system as Info loggers. To get these info forced log messages, enable 'INFO' on 'LogActivityExecution' logger. This can be done either changing in prlogging.xml or by changing logger settings in Designed studio landing page.
The info message will look like:
"Activity is being executed - Activity name: 'pyUpdateActiveUserCount', Class name: 'System-Status-Nodes'"
|SR-C11499||352774||Performance improvement for Mobile use of CaNull Pointer Exceptionrform||Performance issues were seen in the Mobile application while processing work referencing the when rule CaNull Pointer Exceptionrform. This was due to the "CompareTwoValues" expression underperforming for the Boolean comparison case, and performance has been improved by replacing it with an "ExpressionEvaluatesToTrue" expression.|
|SR-C11712||354391||Incremental Indexer Agent skips instances being indexed by updateIndex API||If NRT Indexing and immediate search queries were processing while the FTSIncrementalIndexer was doing an update, they sometimes conflicted and the FTSIncrementalIndexer would temporarily alter the content in the index. This resulted in incorrect search results during the run, though in the end the content would be correct and match the database to give correct results. To address this confusing behavior, an enhancement has been added to prevent instances being indexed by updateIndex API from being overridden by Incremental Indexer Agent.|
|SR-C11933||360570||Template corrected for read-only flow rule properties||Double clicking a component in an open flow rule showed the properties as read-only, but selecting a component and pressing the properties icon allowed editing of the values and the changes were reflected on screen. This was traced to an incorrect template being used while launching the property panel flow action, and has been fixed.|
|SR-C11958||354853||Reduced Mobile login time||After upgrade, logging in on mobile was taking an excessive amount of time if the user had a lot of assignments. Code changes have been made to fix the redundant expression triggering and to optimize the way of getting expression DOM elements. This reduces the execution time for querySelectorAll.|
|SR-C12199||360112||Pass pyFailMessage works to include additional error message on mobile||Using a custom authentication activity to set an error message to be displayed on login screen by using:
Param.pyFailMessage = "custom error message"
Param.pyChallenge = @java("PRAuthentication.DEFAULT_FAIL_STREAM")
worked fine on Desktop but on mobile resulted in the generic "The information you entered was not recognized." message that is hardcoded in pyWeb-login-mobile-authentication.js. This was a missed use case for handling scenarios where additional message error data should be sent in response, and has been resolved.
|rule-ruleset-version correctly cataloged to hotfix||While importing DL for the PCS application, rule-ruleset-version was not getting cataloged to the hotfix manager. This was traced to the failure of the pre-installation initial scan. As recent system changes now support non-versioned rules by looking at the save time, the Rule-RuleSet-Name and Rule-RuleSet-Version will both be treated as valid for scanning and cataloging to avoid this error.|
|SR-C12338||353057||Corrected code to prevent infinite loop in PegaGadgets||The out-of-the-box Activity : "@baseclass.pzPopulateRecentGadgetList|Pega-Gadgets:07-10-23" contains logic in its Java Step (3) that under certain unusual circumstances caused an infinite loop to occur, locking up the Thread indefinitely. This has been fixed.|
|ZipFileListOnServer activity modified to only create instances for zip files||When the Hotfix Manager was run on the ServiceExport directory, the Next and Cancel buttons did not render. Analysis showed the system was creating the PRFile instance for all of the files from the directory, and an exception was being thrown when am instance was created for a file that had illegal characters in its name. To correct this, the pzZipFileListOnServer activity has been modified to only create the instances for files which start with "dl-" and end with ".zip".|
|SR-C12455||356026||BIX date property extract to Teradata database fixed||BIX extract was failing when extracting date property to a target Teradata database. To resolve this, DatabaseUtilsCommonImpl.java has bene updated to insert the null value as a varchar instead of Timestamp type.|
|Improved logic for CorrNew activity email IDs||When there were only two work parties and their email IDs were same, for example using a Bcc address, the formation of email ID string to CorrNew activity included an extraneous quote mark that caused the email to fail. The formation logic has been reworked to resolve this problem.|
|SR-C12730||355808||Data page change detection refactored for improved performance||In order to improve performance, the engine API used to detect changes in a data page has been modified from using a hash comparison via the getJSON sort to using a new lightweight clipboardpagechangeindicator.|
|SR-C12912||357849||Customization added to ReviewSurvey||An enhancement has been added to allow customization of ReviewSurvey by using QuestionPageName as parameter and including the new section PreReviewSurveySection within.|
|SR-C12957||353926||Parse error fixed for pzProgressBar controls||A parse error popup was generated when displaying a section with pzProgressBar controls. This was caused by an error in the Boolean comparison, and has been fixed.|
|Excel/Word copy/paste to RTE font resolved||When pasting the content from Excel or Word into RTE, the font of the copied text was retaining the font from Excel/Word instead of changing to the one already present in RTE. This has been fixed by adding the lang attribute to the span element.|
|SR-C13055||356016||Fixed Property-Ref Page on Datapage passivation issue||After passivation, clicking a link which referenced a value on a property-ref (page) on a datapage generated an error. This was traced to the reference being broken while activating a passivated page; expanding the page during activation created a dependency for the Dictionary to check the property if it was not defined as a reference. This has been fixed.|
|SR-C13061||378437||Nested CSS classes included in inherited tab formats||When a skin B inherits from skin A containing some formats, some nested CSS classes were not generated. This was a missed use case where inherited tab formats were not considered while generating skin CSS, and has been fixed by modifying the AbstractSkin.java file to include inherited skins while generating CSS.|
|SR-C13086||368782||JAWS reads report viewer tables in Microsoft Internet Explorer||Tables in report viewer were not being read by JAWS when using tabbing with Microsoft Internet Explorer . To resolve this, the Summary Header generation has been modified to add the aria attribute when using Microsoft Internet Explorer to force JAWS to read TH content.|
|SR-C13090||353640||Performance improvements made||Performance improvements have been made in Executable.java and ContextProcessor.java|
|SR-C13228||355520||Enhanced logging for dataflow run ID||DataFlowServicePulseOperation was filling up logs with exceptions that could not be traced to a specific Run. To correct this, logging has been enhanced in order to capture the problematic dataflow Run ID.|
|SR-C13237||354985||JAWS reads checkbox tooltip||The code for pzGenerateCheckbox has been modified to ensure JAWS reads out the checkbox tooltip.|
|Expand/collapse checkboxes read by JAWS||JAWS now reads checkboxes used to expand and collapse rows.|
|SR-C13426||356652||Delta sync enhancement to improve performance||When actions were bundled into a single delta sync request, the resulting package contained a large amount of redundant information that caused performance issues during handling. To improve performance, an enhancement has been made to the process so that only the modified properties of pyWorkPage are sent during delta sync.|
|SR-C13437||360867||Fixed Requestor scope LDP sync||Requestor scope LDP sync was failing if there was a new requestor and no new records, showing the error "Clipboard page must have at least one result” . This has been fixed.|
|SR-C13510||356101||Corrected character encoding for Chart drilldowns||Drilldown was failing with certain characters such as single quotes or &'s when using the legacy "Chart" control. This was due to missing encoding, and has been fixed to encode the parameters before executing the drilldown.|
|SR-C13735||356119||Fixed busyIndicator during grid initialization from email RTE||Attempting to render a Pegagrid which was present in the RTE of an email resulted in a busy indicator that did not resolve. This has been fixed.|
|SR-C13911||361988||Encoding added for non-ascii file names in CMIS repositories||Saving a file attachment that has Cyrillic characters in its name resulted in the name or the extension being changed. To correct this, encoding has been added to properly handle file names that are not in ascii when using 'Store in CMIS repository'.|
|SR-C14053||355755||Handling added for saving page groups with blank indexes||When saving a page group entry with a blank index, the page group entry was created in a corrupt state if "obj-save/writenow" was used instead of obj-save followed by a commit. To fix this, validation was added for empty property creation subscripts and empty subscripted references while parsing.|
|SR-C14255||366610||Hint clarified for SELECT queries on Oracle||Queries beginning with "SELECT /*+ leading(D R H A)" were running very slowly on Oracle. To clarify that the query uses Cartesian join for the first union, the hint now suggests that the format be "SELECT /*+ leading(D R H A) USE_NL(D R H A) optimizer_features_enable('126.96.36.199') */"|
|SR-C14506||355734||Repaired localization on first load of section textarea||After upgrade, localization for textarea "Remaining Character count" was not working when textarea was rendered in a section, but appeared after refresh if "post" action was specified on control. This was due to the template not handling this use case on the first load, and has been fixed.|
|SR-C14523||354591||Tomcat/PostgreSQL guide updated for rulebase installation||Documentation for rulebase installation has been clarified in the Tomcat/PostgreSQL guide to correct pathname errors.|
|SR-C14630||357156||Logic corrected for localized true/false radio buttons||If a Radio Buttons control was used to display read-only values with "Display Text of selected option" using the presentation type "True/False", the value shown was always False if localization was in place, even when the property value was true. This was a logic error and has been corrected.|
|SR-C14639||368138||German localization added for RTE 'check spelling' tooltip||Localization has been added for the Rich Text editor 'Check Spelling' tooltip for the German language pack (_de).|
|German language pack updates||The German Language Pack (_de) has been updated to properly display the German text for rich text editors text like (Bold, Italic,) and the 'Check Spelling' tooltip.|
|SR-C14688||358198||Added handling for scheduled reports with spaces in the shortcut name||If a report was scheduled which had spaces in the shortcut title, the emails were not sent and the error "Opening the definition of the report failed for class name: Work-& report name: Open Case timeliness" was generated. To resolve this, the activity Pega-ScheduledTask-Reporting!pyExecuteTask has been updated to set the pyClassName and pyStreamName according to the report insname found on the shortcut when using a Report Definition.|
|SR-C14893||360684||Repaired Refresh Section triggered by activity||Refresh Section was showing incorrect information after modifying the PageList last record details and triggering an activity. This has been corrected.|
|SR-C14922||357161||Improved CSRF features support whitelist||Previously, the system had an option to support secureAll (i.e. securing all streams and activities) or the ability to list the streams or activities which needed to be secured against CSRF attack (blacklist). This has now been enhanced to support the list of allowed activities or streams for which CSRF protection is skipped so that customer can set secureAll to True and can provide the exemption list of activities or streams (whitelist).
The DSS setting security/csrf/AllowSameDomainReferrer allows either True or False.
When DSS security/csrf/AllowSameDomainReferrer is set True then the current behavior is retained, i.e. if the referrer is in the allowed referrer list or the request is from same domain of the pega app then request is considered as valid even if the token validation fails.
When DSS security/csrf/AllowSameDomainReferrer is set False and if the token validation fails then it will be considered a CSRF attack. If the token validation passes then it's returned as success.
The DSS settings security/csrf/allowedActivities and security/csrf/allowedStreams will take the list of activities and streams for which CSRF validation is skipped when security/csrf/secureall is set True. The DSS settings security/csrf/allowedActivities and security/csrf/allowedStreams will take precedence over the existing DSS settings security/csrf/securedActivities and security/csrf/securedStreams .
|SR-C15039||360857||improved security for static content requests||In order to improve security, the logic used for extracting a file extension from a static content request has been updated to use relative references that avoid needing a PRThread if it doesn't exist.|
|SR-C15346||357008||Label error CSS appended to drop down field||When configuring a Repeat Grid layout with inline always editable mode and a section include containing drop down fields associated with required input fields like DateTime and Text Input fields, exiting out of the drop down did not append the input field label to the CSS class as expected. This was due to incomplete generation of the repeatindex for the ID, and has been fixed.|
|SR-C15461||357308||Corrected locking message||If a case was locked, attempting to open the case elsewhere displayed the incorrect error message "The case type does not yet have any fields defined" instead of indicating the case was locked. This has been corrected by updating the harness locking.|
|SR-C15546||362398||'Close' button hidden when browser doesn't support it||Attempting to access an external NPS survey assignment a second time generates an Access Denied / Logon Denied window; the resulting window was not closeable by using the 'close' button in Google Chrome and Firefox. This was traced to browser security restrictions imposed by Firefox and Google Chrome that disable Window.close()for URLs launched directly by hitting the URL. To avoid confusion, the DenyExternal HTML rule has been modified to avoid showing the 'close' button for browsers that do not support it in this case.|
|SR-C15602||358258||Multiple case handling performance improvements for mobile||Memory leaks have been repaired to improve performance when working numerous simultaneous cases on mobile.|
|SR-C15620||360995||Command line BIX extracts correctly resolve properties||BIX extracts worked as expected within Designer Studio, but the same extracts failed to resolve properties when run from command line without supplying a username and password and using a -i/-I option. This was caused by recent logic changes that missed a use case, and has been fixed.|
|SR-C15639||355647||Localization added for Delegated Descriptions||Localization has been added to the field pyDelegateShortDescription in pzRuleFormKeysAndDescription, to the field pyDelegateDescription in pzRuleformLayoutDelegated [Pega], to pzDataTypeDelegate->Param.DetailDescription, and .pzDataTypeKeysAndDescription->Param.ShortDescription.|
|Customization added to Report Browser||In order to support customization of the Report Browser, the below rules are now marked as available:
RULE-HTML-HARNESS CODE-PEGA-LIST DISPLAYREPORT #20151123T213308.460 GMT
RULE-HTML-HARNESS CODE-PEGA-LIST PZRRDISPLAYCUSTOMFILTERSECTION #20160512T224721.208 GMT
Schedule options and Shortcut/Category options can be hidden via 'when' rules:
pyReportBrowser_ShowActions should be set to False to hide the shortcut/category actions, and
pyReportBrowser_ShowSubscriptionActionsAndInfo should be set to false to hide the report subscription information. When both rules are set to false, the gear icon on the shortcuts grid and list of Public categories will not be displayed.
In addition, the DisplayReport and pzRRDisplayCustomFilterSection harnesses have been made available to allow changing the Microsoft Internet Explorer Document mode.
|SR-C15742||357768||Corrected refresh for Proposition filter||When creating a new Proposition for a Proposition Filter, it did not appear under the Proposition section. This was due to a missing refresh call to load the data rows, and has been corrected.|
|SR-C15834||358294||Added null check for empty messages on clipboard||The clipboard viewer was showing an empty red bar for the messages area of read-only data pages. This has been fixed by adding a null check.|
|SR-C15852||357906||Refresh conditions fixed for complex survey questions||When a complex question configured with refresh condition was answered, it triggered the refresh of whole survey screen and cleared the validation error on other questions. The code has now been updated to repair this: for a Survey configured with Navigation type as "Plain" or "Question Page as a row", only the parent question page (QuestionGroup section) will get refreshed when any question configured with a refresh condition is answered. No changes have been made for Surveys configured with Navigation type as "Tree".|
|SR-C15869||356792||Horizonal scroll fixed for business managed tables in Microsoft Internet Explorer||After upgrading Pega Marketing, the horizontal scrollbar for business managed tables was not appearing when using Microsoft Internet Explorer . This was traced to an inline style 'overflow:auto' on DynamicLayout2 in the rule 'pzRecordsEditorWrapper' which is which was taking precedence in Microsoft Internet Explorer , and that inline style has been removed to resolve this issue.|
|SR-C15887||357943||Fixed Dataflow init issues||An issue where Dataflow services failed to initialize service and the Add Node Button was disabled has been corrected.|
|SR-C15942||358749||REST Connector Wizard Datamodel logic update||The REST Connector wizard was failing to generate all the properties due to a problem with the DataModel generation. This has been corrected by adding two different Boolean properties in the property info map to separately tag request and response processing.|
|SR-C16004||357445||Corrected additional instance being added when clicking on Dynamic Layout row with helper classes||When adding helper classes (custom CSS) on a Dynamic layout or any others that use this feature, two instances were added when clicking on the row and not on the "+" icon. This happened when the layout had some action attached to it and that layout had children whose width was small (and there is no action attached to it) so that there was a lot of space remaining in the layout. In this case, actions were being appended to the queue twice, one from processBehaviorsOnElem call from processBehavior and another processBehaviorsOnElem call from processOtherBehaviors. To correct this, pzpega_ui_events .js has been modified to only call processOtherBehaviors when dynamic layout is used.|
|SR-C16062||372412||ProcessAction will update pageName based on pyWorkPage||A link which was configured to open a local action in overlay and then render a button which again referred to a menu in overlay was only working intermittently. On click, of some of the actions in menu worked while some resulted in a activity status error. This was traced to the method used to update the pageName in the "ProcessAction" activity, and modifications have been made to update pageName only if the primary page is "pyWorkPage".|
|SR-C16122||358344||Removed irrelevant Primary page properties||Irrelevant properties were appearing on the primary page while using Address Map control. This was traced to an improper function call and has been corrected.|
|SR-C16126||388052||XMLCipher.java implementation adjusted for updated JDK8||Errors were seen when using the decryption feature of SOAP services To resolve this, the Pega implementation of XMLCipher.java has been adjusted to correlate to recent updates made to JDK8.|
|SR-C16229||357687||Check added to SQL generation to exclude BOM||When using the facility System Upgrade > "Upgrade Applications Schema" from Designer Studio to generate a SQL file (as opposed to running directly from Designer Studio), the downloaded SQL was found to contain the Byte Order Mark sequence (0xEF,0xBB,0xBF) at the start of the file. This byte sequence caused the DB2 command line client to fail. This has been corrected by adding a check that will set 'aIncludeBOM' flag to false for SQL file generation.|
|SR-C16281||358133||Null check added for filterOutWithdrawnCandidates||During RUF resolution, encountering a candidate that was outside of the current RSL generated an Null Pointer Exception. This has been corrected by adding a null check in filterOutWithdrawnCandidates. If the ruleset spec is null, the candidate will be removed from the list.|
|SR-C16365||356219||Data Schema upgrade documentation clarified||In order to eliminate confusion, portions of the Update and Upgrade guides relating to data schema upgrades have been clarified to differentiate "upgrade schema" and "temporary upgrade schema".|
|SR-C16479||356880||Ruleset version check added to pzPackageParagraph activity||The pzPackageParagraph activity was fetching Paragraph versions from different rulesets instead of only the highest rulesets. This caused performance issues on installations with large numbers of paragraph rules. To correct this, an 'if' check has been added to filter the Paragraph rules which belong to rulesets of lower hierarchy in rule resolution.|
|SR-C16490||356910||Tuned layout visibility conditions||In order to ensure the visibility conditions on layout are honored as expected, code has been added to avoid evaluating expressions from dom elements during the initial rendering of the screen.|
|SR-C16548||360113||Fixed UDF calls schema prefix||UDF calls were being prefixed with the schema name of the class rather than schema name in which the AllOf/OneOf functions are stored. To correct this, the UDF will instead be prefixed using the schema name of the PegaDATA database where the functions/UDFS are installed.|
|SR-C16693||359290||Column name shows in filter section RD of drilldown report||The Column name in the drilldown filter was displayed as a function in the 'column source' (of the main report definition) in the drilldown report, but the name was not provided in the 'column name' column in the query tab of the main report definition. This has been corrected.|
|SR-C16751||360165||Code fixed for harness pyCMReports||An error in the code was causing the report browser (harness pyCMReports) to fail if it was generated by the pxgetRRContentForRB activity. This has been corrected.|
|SR-C16853||357442||Introduced property made visible in reports||The date 'Introduced' property was hidden in reports; this has been made visible.|
|SR-C16897||359392||Property validations messages check box added for read-only||Property validation messages were not displayed on the pxDisplayText(Formatted Text) control when using read-only. To allow this, a 'Show validation messages in read-only mode' check box has been added to the formatted text presentation tab.|
|SR-C16918||376238||Fixed Guardrail report scheduling issue||An issue was seen where a Guardrail report was scheduled but the report was not delivered to any of the recipients even though an instance of the scheduled task agent was up and running on the cluster in question. This was traced to errors in the locking and commit methods used with the triggers, and has been corrected.|
|SR-C16944||364121||pxObjClass of StepPage retained when using adoptJSONObject||When using the adoptJSONObject method in a REST Service activity, calling adoptJSONObject made the pxObjClass of StepPage null. However, the pxObjClass retained its correct value after calling the adoptJSONObject method if the tracer was running. In this scenario, when JSON was adopted on to a page which had pxObjClass set on it and JSON didn't have pxObjClass within it , the resulting page was becoming classless. This has been fixed by reading pxObjClass from the page and retaining it if it is not empty and if pxObjClass is not present in stream.|
|SR-C16959||357694||Checkbox added to allow upgrade check skip||In order to improve performance, a prconfig setting has been added to allow skipping the upgrade check during commit.|
|SR-C16960||356990||Map type change to improve mLocalBeanName performance||In order to improve performance, the logic used for mLocalBeanName references inside JNDIEnvironment.getDelegate(String, String, String, Boolean, Boolean) has been changed from synchronized map to concurrent hash map.|
|SR-C16961||357154||BasicLocaleImpl logic updated to use ConcurrentHashMap||To improve performance, the logic for com.pega.pegarules.exec.internal.util.BasicLocaleImpl has been changed to use ConcurrentHashMap instead of HashTable.|
|SR-C16991||362577||UI-Kit upgraded for FS framework||Issues with the flex layout in Microsoft Internet Explorer were traced to the UI-Kit used with FS framework. The latest version of the UI-Kit is now in place to resolve this issue.|
|SR-C17055||358007||Expanded consideration of pyEmailAddress values||An email sending failure was traced to the provided email address on pyWorkPage.pyWorkParty(pyCorrPartyRole) not being considered, and instead the email address value from pyCorrPage.pyAddresses(Email).pyEmailAddress was used even if it was empty. The code has now been updated to add the email when pyAddressEmail and pyCorrPartyRole page properties contain a pyEmailAddress with value.|
|SR-C17056||356994||Memory use performance improvements for surveys||The inline scripts for question shape have been eliminated and the dynamic generated arguments process has been moved to the global survey namespace. This enables the download of one common script for all question screens to conserve memory usage.|
|SR-C17147||364317||Check in comments displayed when CSRF enabled||After upgrade, using the Check-In modal window did not display the comments field. This was traced to a condition where an enabled CSRF token caused the data to not be rendered in the UI when a modal dialog flow is configured on the button, and has been fixed.|
|SR-C17153||358471||Fixed Cross-origin OPTIONS header mismatch||Attempting to get a Cross Origin (CORS) OPTIONS request to respond with Access-Control-Allow-Origin was not working, resulting in a response that had no Access-Control-Allow-Origin header (with the value of the host address of the machine the request was made on), even though there was a Endpoint-CORS policy mapping for api/v1/cases of 'AllowAllOrigins', This was traced to a mismatch between policy headers and incoming http request headers; the incoming http headers were a comma separated string instead of a list at the HTTP layer, and the wrong data type was chosen (list instead of simple String). To resolve this, logic has been added to split the comma separated headers coming in the HTTPRequest.|
|SR-C17653||367019||Error logging improved for ParseXML assembler failures||A Rule-Connect-REST call to get user data from an external application during authentication did receive data back from the service, but the ParseXML didn't parse the response and there was no response_GET page or errors logged to indicate the issue. To correct this, the code has been updated to ensure that an error is logged if the ParseXML assembler is unable assemble the rule.|
|SR-C17653||367019||Parse XML will log errors if it is unable to assemble a rule||To improve diagnostics, an error will be logged if the ParseXML assembler is unable assemble the rule.|
|Enhancement to support international currencies in SmartDispute||An enhancement has been added to the Smart Dispute application to support using international currencies. The currency control 'pxCurrencyInternational' is available in the base Pega Platform, similar to the existing control 'pxCurrency' but with format type as 'Text'. The control also has a script that removes any text other than non- numeric, comma, decimal, or negative sign values and supports both comma and dot as decimal separators.|
|SR-C17971||358707||Mobile requestors properly closed at logoff||On mobile, the requestor for synchronization was not released after logoff. Investigation showed that two requestors were started for every mobile login but only one was removed when the session was closed. This has been fixed.|
|SR-C17998||358393||Collapsible headers read once with JAWS / Microsoft Internet Explorer 11||JAWS was reading collapsible headers twice when using Microsoft Internet Explorer 11. A check has been added to resolve this.|
|SR-C18047||362402||Added flag for property messages on a passivated page||A page with messages on a property was submitted twice after passivation has occurred. On investigation it was found that @hasMessages() is returning false after passivation even though a property on the page did have messages. Because the messages were not getting cleared, the application returned the same page to the user, and the page ended up being submitted twice. To correct this, when a page that undergoes passivation has messages, the information that the page has messages will be stored in the encoded page put into the passivation store. During decoding/activation of page, the system will use this flag to determine that page has messages and process them correctly.|
|SR-C18124||362384||Configuration change to avoid Apache Poi zip bomb errors||While importing an Excel sheet to create a workbook instance in Pega on a system that uses Apache Poi, Apache's built-in validations were triggered by what the software interpreted as an attempt to violate system integrity. In this case, a "java.io.IOException: Zip bomb detected!" error was generated when Apache detected a huge amount of data being uploaded to a server; in some scenarios this might be an attempt to eat up all of the server memory and impact server performance significantly, hence the warning.
When there are many redundant data values present in an Excel file, the file will be compressed by a very high scale when saving. When the same file is used to retrieve data (during import in Pega) it will expand with the same scale to prepare the actual file. The "Zip bomb detected" exception will occur if the expanded file crosses the default MinInflateRatio set in the Apache jar. Apache includes a setting called MinInflateRatio which is configurable via ZipSecureFile.setMinInflateRatio() ; this will now be set to 0.0 by default to allow large files.
|SR-C18180||361485||DenyExternal close button localized||Localization has been added for the "Close" button in the final rule DenyExternal.|
|SR-C18355||359131||Fixed dropdown visibility in Results tab||When trying to delegate a decision table with a few result options defined in a "Results" tab, the drop down of options is not available when editing the decision table rule If the checkbox "Allowed to update column layout" is unchecked in the said decision table. This has been fixed.|
|SR-C18491||361186||pyDecimalProperties value honored by Records editor||While downloading a file from the Records editor, the pyDecimalProperties value was not being honored and decimal values were truncated. This has been fixed.|
|SR-C18562||362907||Failed SQ: statement added to archive import logging||If an import failed for an archive with circumstanced properties and dual user configuration, the failing DDL was not indicated. Enhanced logging has now been added to include the current SQL statement which failed.|
|SR-C18565||358140||Performance improvement for worklist RDL pagination||When progressive pagination is configured on scroll for a worklist RDL, opening a case and returning to the worklist will now cause RDL to display only records of pagination size and not automatically load all the previous scrolled records.|
|SR-C18637||360155||Logic repaired in toGMT RUF||A logic error in the toGMT RUF has been fixed to correctly handle dates before the epoch date.|
|SR-C18766||362376||Logout binding switched to signed certificate for signature||HTTP Redirect logout binding uses a hard coded "rsa-sha1" from a open SAML library file to calculate the signature; this created an issue with ADFS. To override this, the system will use the subclass buildRedirectURL() to get the signature algorithm from signed certificate instead of the hard coded signature algorithm (Sha1).|
|SR-C1883||359736||Added iFrame garbage collection to improve memory use for multiple child cases||Client Side memory was piling up due to multiple child cases being attached to the same parent case without a garbage collection process passing over the iframes. Performance has been improved by adding garbage collection to files pega_ui_busyindicator and pzpega_mobile_hybrid, pzpega_ui_doc_lifecycle.|
|SR-C18868||362502||Improved performance and error handling for assembled 'when' rules||This release features a major re-working of the assembled 'when' rules to improve performance. The vast majority of rule dispatch costs come from unnecessary work. By optimizing VTable dispatch, eliminating unnecessary validation, increasing intrinsic usage, and optimizing dispatch routines, rule dispatch has been made 5-100x faster for IL-Assembled rules. In addition there is improved error handling for exceptions.|
|SR-C18883||362411||Recipient flexibility added to scheduled Guardrail reports||Scheduled guardrail reports were delivered only intermittently. This was traced to the report having an email address (as opposed to an operator ID) in the recipient list, and the page references have been updated to correct this.|
|SR-C18932||360087||Fixed product file list view filter error||When creating a product file, the error "An Exception occurred while processing contents of Rule-Admin-Product" appeared when using a list view filter in Product rule. This was caused by the instances not having the ruleset name present when it was expected, and code has been added to make sure those are included when needed.|
|SR-C18936||358807||API added to customize properties used in checksum calculation||In order to provide a way to customize certain system properties from a checksum calculation, an API has been added to set a list of properties to be excluded.|
|SR-C18978||358377||Fixed exception for empty offline property value||Using a localized value with property reference caused a script error in the _resolveParams function of pzpega_offline_localization file when there were no property values in offline. This has been corrected.|
|SR-C18980||358386||Expression evaluation performance improvements||The code has been modified to improve the performance of Expression evaluation by avoiding the rendering of invisible elements in layout container children.|
|Behavior change for error handling when using "Call superclass data transform"||Previously, when "Call superclass data transform" was enabled for data transfers, the initial data transform would continue working even if the subsequent transforms it called failed. As an example, given data transform A, which called another data transform B, which called another data transform C, and data transform A performed some actions after calling data transform B; If an error occurred while processing data transform C, data transform C ended processing, data transform B also ended processing, but data transform A continued working. This was confusing behavior. To create a more consistent environment, whether or not “call superclass data transform” is used, when any of the chained data transforms fail the entire process will exit. The documentation has also been updated to indicate this new behavior.|
|SR-C19190||360723||Cluster Management shows all servers with pagination||When Pagination was used in a table layout with page size as 20, the option to navigate between pages was not displayed and only the first 20 nodes were displayed in the cluster management landing page. This was traced to a missed checkbox in table layout properties Display Header Grid used to display the header section, and has been fixed.|
|SR-C19202||358750||Handling added for password beginning with special character||The upgrade process was failing when it tried to generate the the SQL for the RuleSet Cleanup Script. This was an issue with a password that began with a special character, and handling has been added for that use|
|SR-C19217||363043||New Java regression issues fixed for Connector and Metadata Wizard||Multiple features in Connector and Metadata Wizard (legacy) were not working after upgrade due to some methods being deprecated in the latest version of Java. These regression issues have been fixed.|
|SR-C19248||359946||Behavior modification for bypass OperatorID update||An update of an OperatorID record could be bypassed during authentication by setting the "extAssignFlag" property with any non-blank value, however in the most recent versions of Authentication.java this flag is ignored during the Authentication.unauthenticate() method. The flag is still respected and the update skipped if the initializeUser() method) is used. In order to create behavior that matches, if the "extAssignFlag" is enabled then the system will not save the operator record in unauthenticate() method.|
|SR-C19285||358754||Blacklist when performance improvement||When running a performance test, the when delta sync blacklist when rule generated 1.6BG of garbage. In order to improve performance, a data page will be created to hold blacklisted delta sync data pages.|
|SR-C19325||363470||Bulk Processing checkbox tool tip displays||The Bulk Processing Tool Tip was not displayed when hovering over the checkbox. The tool tip has been added for Select Item and Unselect Item based on the check box select/un-select.|
|SR-C19348||359143||Editable PDF creation added||A new feature has been added to allow creation of an editable PDF via an added flag in the activity HtmltoPDF.|
|SR-C19401||369254||Customized SAX parser/handler modified to retain the type attribute value and other type-substitution candidates||It was not possible to collect the xsi:type information in XML inbound data mapping and map it onto the clipboard page using Parse XML new assembler. This was due to the customized SAX parser assuming that type attribute was available only for type-substitution purpose and missed retaining the attribute value. This was a missed use case in new assembler, and the customized SAX parser/handler has now been modified to retain the type attribute value along with other possible candidates for type-substitution.|
|SR-C19530||363270||Fast JSON mapping improvements||Performance improvements have been made to the fast JSON mapping API. In addition, handling has been added for a null value in an array type.|
|SR-C19568||360661||Check added to ensure Charts appear consistently after form submit||If a chart was included in a section along with some other fields, the Chart disappeared whenever a client validation triggered with a pop-up asking to fill in the mandatory fields. When a form is submitted, charts are destroyed before the submit happens. If there are client side errors, then the section doesn't refresh and so the chart was not initialized again. To handle this, the submitWrapper method in pzpega_ui_doc_submit has been modified to check for client side errors before destroying the charts.|
|SR-C19787||363113||Improved security for personal information parameters involved in alerts||Previously, if an alert was generated while there was Personally Identifiable Information (PII) data on the parameter page, that PII was put in the alert log in clear text. If dynamic appenders (PDC/AES) were used, only the values for whitelisted key names were included. It was also possible to override the remote value to send all values except those on the blacklist (obfuscated). In order to improve security, the system will check if it needs to do whitelist (which is now the default) or blacklist, and then does the obfuscation only once. RemoteFilterType can be used to control both the remote and file based parameter page, and the allowed/obfuscated keywords are shared between remote and local alerts.|
|SR-C19835||360026||Refresh fixed for data pages||A refresh was causing empty data pages due to a sequencing error in the code. This has been fixed by rearranging the evaluations.|
|SR-C20061||362706||Logic changed to improve pr_assembledclasses use on multi-node systems||Previously, each time an RUF was generated on a multi-node system a pulse event was sent to other nodes to re-generate the library as well. When these nodes would get the message, they would regenerate the library as well as in some cases send out the pulse event. In complex installations, this resulted in ~1.4 million updates per hour to the database table in pr_Assembledclasses. In order to improve performance, the system will no longer generate the library on a generate pulse event if eager population is enabled. The library is simply invalidated.|
|SR-C20064||359982||Streamlined truststore.jks creation||Many folders were being created in the Tomcat temp folder that each contained the file "truststore.jks" used to hold the certificates used in Kafka connection security settings. The implementation has been changed to streamline this: a new KafkaSecurity class was created for a KafkaInstanceImpl which holds 1 truststore file instead of the previous method which created the truststore file in getProducer and getConsumer.|
|SR-C20240||361514||Display caption checkbox control honored||In some configurations the Check Boxes control was not respecting the "Display caption when read only" setting. This has been fixed,|
|SR-C20270||362661||Visible when condition working for dropdown value||A visible 'when' condition configured to evaluate on the client based on the value in a dropdown was not working after upgrading. This was due to the system getting the wrong context in cases where the property is "Page.somePropPages.somePropPage", and has been fixed.|
|SR-C20466||361005||Security/privacy enhancement added to allow overriding URL parameter values being logged||The Connect-REST method/engine class throws an exception when it times out; the standard behavior is to disclose the entire URL string including URL parameter values, but in some cases the parameter values may contain sensitive data. To support greater security and privacy, an enhancement has been added to override this behavior when desired by adding an extra check to filter the data being displayed in the PegaRULES log.|
|SR-C205||354134||Special character handling improved for field value rule description fields||When special characters such as valor do preÝ âê ($) were used as part of the description field in a field value rule, the description field was empty or not visible after the field value rule was saved. This was an issue with the way the encoding API was applied to special characters, and has been corrected.|
|Performance improved for screen rendering and checkbox action in Microsoft Internet Explorer||After upgrade, Screen rendering and checkbox action was slow in the Microsoft Internet Explorer Browser. To improve performance, the following updates have been made:
1) Conditionally skipping multiple flex resizes on harness resize event.
2) Replaced $ calls in getCorrectPropertyElemFromDOM() with native querySelector.
3) Grid's getScrollParent() (~200ms) was erroneously comparing element’s scrollWidth with scrollWidth (instead of clientWidth) each time.
4) ui_inspector.js was making multiple attempts to get the closest element. The results are now cached.
5) In client expr evaluation, getAllRefreshableTargets() queries for the entry were handled three times. The query is fired only once now and the results are cached.
|Added explicit cleanup of non-serializable objects in the Connect-SOAP ParameterPage||In investigating an application continuously logging error messages for Serialization, it was found that Connect-SOAP execution leaves non-serializable objects in the ParameterPage, which in-turn caused this the error logging upon requestor passivation. To resolve this, code has been added to remove the pyServiceClient, soapHdr, and activityParamPage parameters from the ParameterPage after use.|
|SR-C21009||362404||New implementations for pzClearAllRecentItems activity||A new implementation has been added to allow for greater customization when clearing all non-dirty document threads by configuring pzClearAllRecentItems activity. This will clear all the threads in one request instead of using multiple requests.
pzPooledDoClose - This is a new activity to execute the pzDoCloseWrapper activity for each thread. This uses executeActivityInContext engine method to execute the doCloseWrapper activity on a particular thread context. Input to this activity is the documents information to be closed. * pzDoCloseWrapper - This is updated, to maintain the portal data model in sync. After execution of doClose activity, pzFindAndUpdateElement. * pzClearAllRecentItems - Updated to get the pooledDoClose parameter value of pzClearAllRecentItems (Runactivity action) and sends back to the client. * webwb pzpega_ui_doc_lifecycle js - Updated harnessOnBeforeUnload method for not to send pzDeleteDocumentPg request in case of Microsoft Internet Explorer .
webwb pzpega_ui_doc_ajaxengine js - Added new method, getAjaxTrackerID, to return the tracker id. * webwb pega_desktop_api.js - Updated updateRecentList method, to pass pooledDoClose parameter for desktopaction("UpdateRecentList"). * webwb pzpega_ui_dynamiccontainer js - Updated to collect all documents information and make request to pzPooledDoClose activity when pooledDoClose is enabled for pzClearAllRecentItems (Runactivity action). * webwb pzpega_ui_doc_tabsupport js - Updated onActivate method, to send the request to maintain portal data model in sync with client. * UMicrosoft Internet Explorer lementModel pzFindAndUpdateElement - Updated to not make any data model element as active element when invoked from pzDoCloseWrapper activity. * pzUpdateCapturedDCModel - This activity is called only on tab switching/closing cases to update pyDisplay's pyUIActive and pyUMicrosoft Internet Explorer lements pages and Recent Gadget. It also includes change tracker's div.
|SR-C21036||369503||Report definitions with 'Include descendant classes' repaired||The behavior for report definitions was unexpectedly changed as a result of work done to address another issue; if the checkbox for "include descendant classes" was set to true on a report definition, descendant classes with directed inheritance were not included. This regression has been fixed.|
|SR-C21054||360762||WS-Fed implementation/Support added||Enhancements have been made to support WS-Fed, including the addition of an API to validate SAML assertion signature.|
|SR-C21190||363214||StringIndexOutOfBoundsException fixed for getAccessToken()||A StringIndexOutOfBoundsException appeared while calling getAccessToken(). This was traced to a code error and has been corrected.|
|SR-C2141||371046||Added null value handling for rowPage parameter||Depending on how an application is configured, the value of rowPage parameter sent from client in pzPerformGridAction Activity may not exist on the Clipboard. Null value handling has been added along with a more informative log message.|
|SR-C21418||362714||Stale data clearing improved for WO flow on Mobile||On Mobile, the error "The flow this assignment corresponds to has been removed" appeared after sharing a WO to a desktop user who then sent it back to the Mobile user. This was traced to lingering stale data in a OSCO breakout call for an Online case in the Offline-Enabled app. To correct this, the current thread will be used as context to clear the stale data.|
|Customization added for removing ET- ID from email subject||The out-of-the-box email channel was exposing the ET-XYZ ID to end-users when it was not desired. To allow for greater customization, a customer-overridable activity 'pyMapEmailToEmailTriage' is now called from pxCreateAndManageTriageWork, and sample code has been included for reference.|
|SR-C21550||362245||Currency control updated for iOS decimal access||Currency control did not allow iPhone users to enter decimals: 'Pattern [0-9]*' was added on markup for mobiles to display number keypad, but the number keypad for iOS does not have the decimal operator. This has been fixed.|
|SR-C2169||356256||Prconfig added to customize retryDelayForAgentQueue||After configuring a http service and trying to process a work object using the service activity, contentious locking and queuing issues were seen when a Queuewhen condition was configured on a service rule and the item was requested using a Request processor rule. This timing issue has been addressed with the addition of a prconfig to customize the delay between two failed attempts of processing a queue item. Sample prconfig:
<env name="initialization/agents/retryDelayForAgentQueue" value ="RS1:agent1,1000,RS2:agent2,2000">
Here if there is a failed item for the agent, agent1 in ruleset RS1, t will be queued to run after 1000 milli seconds.
for agent2 in RS2, it will be 2000 milli seconds.
prconfig value is a comma separated value of the below structure.
(<rulesetname>:<agentname>,<delay in milliseconds>,)+
"<rulesetname>:<agentname>" this can be found in queue item XML as "pyAgentName"
The same can be declared as DASS as
"prconfig/initialization/agents/retryDelayForAgentQueue/default" in "PEGA-ENGINE" ruleset.
|SR-C21735||362929||Custom modules support repositories||An enhancement has been added to to allow Android Archives (.aar) files to be placed in the libs folder of a custom module, allowing repositories to be added.|
|SR-C21787||364620||Check added for setting Owner Party in Case API||A problem getting the details of a given case from the case API was traced to the owner party being set in pzGetCaseDetails without checking whether the Owner party exists or not. a check has now been added so the Owner information is added only if the Owner party is present, otherwise the step is skipped.|
|SR-C21876||369542||Enhanced error messages logged for startup exceptions||To support better troubleshooting, enhancements have been made to the logging for the following Exceptions during startup:
If one of the above Exceptions is thrown, the associated following message will now appear in the log:
"DatabaseException Exception forcing rollback: " (followed by Exception text)
"TransactionFailure Exception forcing rollback: " (followed by Exception text)
"RuntimeException Exception forcing rollback: " (followed by Exception text)
"Error Exception forcing rollback: " (followed by Exception text)
|SR-C21996||364597||Error message clarified for unauthorized record deletion||When there was an unauthorized attempt to delete records from a delegated data type, the error message appeared stating “A commit cannot be performed” instead of displaying an authorization error. This has been corrected.|
|SR-C22087||368240||Resolved Oracle connection reset in migrate.sh||Running the migrate.sh script to generate and apply rules schema objects against an Oracle database was failing. This was an issue with how the newer versions of the Oracle JDBC driver use entropy: by defaulting to using /dev/random, when running in an environment where there this is not a lot of noise the entropy pool will eventually be empty and the connection will be reset. Earlier versions of the Oracle JDBC driver did not see this issue. Previously, Pega added added a urandom setting to the migrate and prpcUtils scripts for Oracle/UNIX environments to avoid the connection reset issue. This urandom setting has now also been added to setupDDL.xml to resolve the schema objects issue.|
|SR-C22461||363990||JobID status now considers In-Progress||When checking the status of a particular JobID, getStatus returned overall Build status as FAILED when the Job Status is actually in IN-PROGRESS. This was due to Jenkins treating non-zero returned values as job failure and setting the status of the Jenkins Job to Failed although the in-progress job may yet run to successful completion. In this case, both http status code and job status were considered while evaluating the build status, but the job status IN-PROGRESS was not considered. This has been corrected.|
|SR-C22471||370124||Handling added for long names when exporting DataType columns||Values were not being displayed in an exported file for a column with a name exceeding 30 characters. This was traced to the values being mapped to a hashed value that truncated the name and caused the alias to not be found when expanding the data, and has been fixed.|
|SR-C22549||365733||Code modified to avoid Security Analyzer false positive||A false-positive was reported for a security vulnerability in the pzMultiDragDropControlStandard control. Two issues were captured when Rule Analyzer was run using the pyUnsafeURL expression: 1. ActiveXCall, and 2. Activity call in the script. To correct this, code changes have been made to avoid an ActiveX call in the control.|
|SR-C22575||363177||Hours display corrected for readonly custom datetime||If a date time control was set to readonly formatting and the format type was a custom type like '01/01/01 01:00 AM', '01/01/2001 01:00 AM' , the hours were not displaying in 'hh' format but instead used 'h' format. This was a missed use case for custom date/time and has been corrected.|
|SR-C23090||365768||Duplicate check added to property optimization||In previous releases, a property could be optimized only once. A new feature introduced in 7.3 enabled optimization of a property any number of times, but it was missing a duplicate check while modifying the pyOptForClassList property. This caused the class name to be listed two or more times in the 'Optimized for classes' section of the property rule in the advanced tab list. To correct this, a duplicate check has now been added.|
|SR-C23096||367425||Handling added for empty SetTicket parameter||If a ticket parameter to SetTicket activity was passed as empty, the current step was skipped rather than the process staying in the same step. To address this, the SetTicket activity will call an exit activity if the ticket parameter is empty.|
|SR-C23134||362897||Tab delimiter write-out corrected for File Dataset||The File Dataset was writing out "\t" as the delimiter for tab delimited files. This was due to the tab character being escaped and then treated improperly in the parser/serializer, and has been fixed.|
|SR-C23138||367878||PRPushServlet response corrected to 400 when disabled||PRPushServlet is used to establish a WebSocket connection with the Pega server. When server-push is disabled, the Push engine won't get initialized and will return an empty response by logging a warning message ("Request arrived for requestor:[%s]. But PushEngine has not started." ). Unexpectedly, this process was returning HTTP status 200 instead of 400. This has been corrected.|
|SR-C23153||370814||Corrected handling for birthdate of 1970-01-01||Issues were seen when the input date of birth was “1970-01-01” (matching the "epoch date" when time started for Unix computers) in the request of a webservice. When the DSS "disableEpochDate" on "Pega-IntegrationEngine" was set to "true", the date of birth was deleted from the request if it was 1970-01-01. If it was set to "false", other empty Date properties were valued as 1970-01-01 in Stream XML data mapping. To resolve this, the DSS setting will only be considered when the Date/DateTime property value is not empty.|
|SR-C23157||364333||JMSListener modified to support custom connection client ID||If JMSListener was configured for PubSub messaging model with durable subscription, restarting the JMSListener generated a new ClientID that was used to retrieve messages from Topic. This resulted in either some messages being missed or some being processed multiple times. To resolve this, a new configuration/field has been introduced on the JMSListener ruleform that accepts a client ID that can be specified statically/dynamically per listener.|
|SR-C23250||365591||Corrected column count calculation for DT with property set||If a decision table was configured with property set in output instead of any return column,
after exporting the content of the decision table into Excel a Return column appeared in the Excel file. If the same Excel data was imported after modifying it, a spurious column was added on the right side of the Decision Table. This was caused by the property-set calculation of the column count not being considered properly, and has been corrected.
|SR-C23461||365026||Exported Excel now displays text between angle brackets||Using the Export to Excel feature on a Report Definition was stripping XML and HTML-like values from the data such as text between matching angle brackets. This was traced to recently modifications in Export to Excel: because the export generates an XLSX document and not an HTML document, HTML-like code is stripped from formatted values. However, that was being performed after unescaping special HTML characters and codes in the raw or localized value, and this caused HTML-like code in the data to be removed as well. To correct this, the system will strip HTML prior to unescaping special characters. In addition, columns which did not have valid controls assigned to them or their associated properties were borrowing logic from columns formatted by non-auto controls. This has been addressed by refactoring ReportUIFieldFactory to generate basic ReportUIField instances for unformatted columns, excluding numeric and date columns.|
|JAWS reads table sort order||To improve accessibility, the sort order of a table will be read by JAWS.|
|SR-C23560||378135||Accessible 'select' button added to date/dropdown with post value||An enhancement has been added to the pzpega_ui_template_dropdown.js file in the PegaWAI ruleset to allow any date / dropdown with a post value to be provided with a "Select" button when accessibility is enabled.|
|SR-C23650||365164||Requestor ID masked for internal users for security||In order to ensure internal users with access to logs, SMA, or operations data can not utilize a Requestor ID to hijack a session, the requestor ID will now be masked and only show a portion of it.|
|File Listener variable modified to resolve authorization exceptions||A custom JMS MDB Listener was randomly failing with the exception:
"ListenerThreadPool : 3] [ STANDARD] [ ] [ ] ( internal.services.ServiceAPI) ERROR - Authorization failed, please contact system administrator.
com.pega.pegarules.pub.clipboard.InvalidParameterException: InvalidParameter Class not defined in dictionary: Rule-Service-null aClassName .createPage"
This error was traced to a situation where the variable mEvaluateAuthorizationCheck was getting modified by more than one listener at the same time, and has been resolved by changing mEvaluateAuthorizationCheck from a static variable to an instance variable.
|SR-C23885||369192||Further improvements to browser interaction wrap memory leak||Several optimizations have been done to further address browser memory leak issues observed with each interaction wrap.|
|SR-C2400||352685||RAClientCleanup will be explicitly called for JBoss app tier||In a JBoss app tier environment, RAClientCleanup was not happening after scheduling the Daemons in PresenceSessionStateTrackerDaemon and PushSubscriptionCleanerDaemon, leading to exceptions that ultimately caused system issues. RAClientContainer.cleanup(); will now be explicitly called.|
|Values correctly generated for elements with attributes in ParseXML134||The new SOAP integration wizard was not creating "Value" properties in WSDL with several ComplexType elements using SimpleContent definition, though it did create properties for all the attributes. This resulted in data mapping anomalies. This was traced to a missed use case in rule generation, and the rule generation implementation has been updated to generate the "Value" property for ComplexType element with SimpleContent and configure it in the mapping rules.|
|Apache library updated||To improve security, the following updates have been made:
- Apache Commons FileUpload updated to version 1.3.3
- Apache-mime4j-core has been updated to version 0.8.1
- Apache POI has been upgraded to version 3.17
|SR-C24117||364430||Added 'rules only' mode for loading UDFs||The DDL generated by a migrate script can be filtered to only include rules schema changes, but the UDF loaders were not modified to handle 'rules only' mode. In order to this scenario, a rules-only option has been added for loading UDFs that can be used during Apply Rules Schema Objects.|
|SR-C24201||373198||Updated logging to stabilize ServiceAPI use||When using “ServiceAPI” for other integrations within the application, setting ServiceAPI to “Fatal” caused the loss of visibility on issues with other components of the application which use ServiceAPI. This was traced to excessive logging for authentication failures from ServiceAPI, and has been resolved by changing error logging to Warn or Debug at various instances.|
|SR-C24370||371308||Autocomplete text alignment fixed with Microsoft Internet Explorer div check||Using the Microsoft Internet Explorer browser, an autocomplete list of 50 items was shown as overridden by a vertical Scroll bar. This was caused by a div error on the gridLayoutWrapper, and has been corrected with the addition of a check for Microsoft Internet Explorer when calculating the gridLayoutWrapper div width.|
|SR-C24382||372081||Internal When results cached||In order to improve performance, internal 'When' results will now be cached.|
|Passivated queue cleared for dismissed window||If there were open active tabs in the portal work space and the window was closed with the browser 'close' icon instead of logging off, the active threads related to that session were not properly terminated and would reappear if the browser window was reopened. The system has now been updated to ensure that the queue will be properly cleared in this scenario when using <env name="Initialization/PersistRequestor" value="Never"/>.|
|SR-C24470||368594||Pick-Country-i18ncontrol shows selected value in edit mode||When using the Pick-Country-i18n out-of-the-box control inside a grid which is allowed to be edited, it did not display the selected value on refresh in input/perform mode. Pick-country control did work correctly with validation. This was traced to Pick-Country-i18n not considering the Clipboard value when rendering in editable mode, and has been modified to do so when generating markup of the Pick-Country-i18n control.|
|SR-C24478||353695||BIX files generated with unique id||BIX extraction files were overwritten when the same extract was run the next day. This was due to duplicate filenames, and the system has been modified to add the date the the zip file name, ex. BIX_classname_runID_date_squencenumber, to ensure it is unique.|
|SR-C24537||367642||Guardrail updated to redirect 'When filter' to 'listview filter' in product rules||The 'When' rule is deprecated on product rules and can cause issues if used. To clarify this and create more helpful guardrail messages, the following warning message has been added to situation where the 'when filter' is used in the Class instances to include section:
"Using when rule filter is deprecated. Instead use list view filter."
|SR-C24834||373044||Multiple Universal SMA fixes made||The following issues in Universal SMA have been fixed:
1) “STOP” button not working in Sys Queue Mgmt
2) ClassCastException appearing in Requestor Mgmt
3) Mbean Exception being generated for “Rebuild Classmap"
4) Agent Mgmt Runnable icon always shows X, and Agents were not starting
5) "Get Rule detail" was not working
6) API not found, java.lang.NoSuchMethodException
|SR-C24834||368176||SOAP attachment resolved and additional Apache updates made||An error was encountered when attempting to attach a file using SOAP service invoked from the SOAP UI. This has been fixed by changing the type of configuration used for the process. In addition, Apache-mime4j-core has been updated to v0.8.1 and Apache POI has been upgraded to v3.17.|
|SR-C25043||367314||Corrected displayed records for DT show complete||When @equalsIgnoreCase(, somepropvalue) was used in a column header, clicking on the the Decision table's option "Show Completeness" was displaying all the combinations of each cell value with "<" and ">" appended. This was due to a code fragment left from a logic revision and has been removed.|
|SR-C25092||366511||Fixed proposition status calculation by removing stale calendar object||The status of a proposition was not getting calculated correctly due to the class Calendar object being static. Once it was cached it was being used for all the propositions for the entire server session until next server restart. To correct this, the calendar object has been removed as static final and the time zone object has been made static final.|
|SR-C25167||367695||Search box in Data Designer works for Identifier||The search box in the records tab of the Data designer did not give any result for columns of Identifier type. This was caused by pzMapFilterLogic not containing an entry for Identifier, and the the identifier data type has been added to the pzMapFilterLogic decision table to correct this.|
|SR-C25178||368242||Help updated to clarify valid BIX extraction filter parameters||The help files have been updated to clarify that data pages cannot be used in BIX extraction filters.|
|SR-C25199||366252||Corrected FTP logic for finding files||The file listener is processing all the files, but the FTP client is throwing an error after disconnecting from the port and the file does not arrive on the remote ftp site. This issue was caused by a change in the implementation of the logic, and has been fixed.|
|SR-C25202||365395||Fixed offline sync flow processing corruption||In offline sync, only differences are sent from the device to the server for each action. The server-based sync service merges the differences onto the full work object read from the database. In some cases, data with blank values in the received different JSON was not replacing existing values in the workpage, causing corrupted flow processing and completed cases being returned to the application inactive queue. This was traced to a missed use case for pxObjClass while sending data from client to server, and has been resolved.|
|SR-C25312||377871||Debugging enhancement for broken Service requestor queue items||Queue items related to the Service requester were going to broken status with a "Database rollback caused queue item rollback" exception in the pxErrorMessage field. In order to facilitate troubleshooting, new APIs have been added to get the errorMessage and stackTrace for debugging.|
|SR-C25312||377871||New APIs added to get more precise broken process information||Queue items related to a Service requester were going to broken status with a "Database rollback caused queue item rollback" exception instead of displaying the actual exception in the broken process queue. This has been resolved by adding new APIs to get errorMessage and stackTrace.|
|SR-C25321||372748||Cleared checkbox param to ensure correct exported date/time||When a report definition was configured to display a datetime property with column format as DateTime and DateTime format as "01-Jan-2011 1:00:00 AM EDT" is displayed in report viewer as "09-Apr-2018 02:20:00 PM EDT" (12hr format), the date showed as "09-Apr-2018 14:20:00 EDT" (24hr format) when it was exported to a PDF. In this situation, the report viewer has a querytimestamp field which uses Data time as the control and has the display 24 hours format checkbox checked. This value was added to the parameter page and later was not cleared, causing the other data time fields also display in 24 hours format. To correct this, pzGenerateFormat RUF has been modified to clear this param at the end.|
|SR-C25564||366809||Updated locales to properly use Other Currency option||When the Currency control was configured to display "Other currency" symbol value and the property was populated with USD, the property is displayed as 100.00 / USD in the es_CR, es_GT and es_HN locale, but in local format only for the es_PA, es_NI and es_SV locales. This was an issue with the default Currency Symbol values for es_PA, es_NI, es_SV pointing to old ICU2 formats, and has been fixed by changing the currencysymbol attribute in es_PA.xml, es_CR.xml, and es_SV.xml.|
|SR-C25702||369365||Fixed content-type in Multipart for PostData||When the REST Connector was set to use the JSON mapping mode for request data and a request attachment page was present, the resulting Multipart message contained the mapped JSON in the "PostData" Part, with the Content-Type header of the Part incorrectly set to "text/plain" rather than the correct value of "application/json." This meant that services consuming the request did not know to handle it as JSON. To fix this, the REST Connector engine module and HTTPClientUtils module have been retooled to match the details and also to handle binary content mapped in as base64-encoded string. This can be overridden via a parameter. The "fat channel" now accepts Part objects so that the Connector implementation can craft a Part with all aspects of the Part, rather than providing only a value. The feature has also been enhanced to better handle Multipart request/response cases.|
|SR-C25702||370594||REST POST method sets Content-Type and Boundary||When the REST Connector was set to use the JSON mapping mode for request data and a request attachment page was present, the resulting Multipart message contained the mapped JSON in the "PostData" Part, with the Content-Type header of the Part incorrectly set to "text/plain" rather than the correct value of "application/json." This meant that services consuming the request did not know to handle it as JSON. To fix this, the REST Connector engine module and HTTPClientUtils module have been retooled to match the details and also to handle binary content mapped in as base64-encoded string. This can be overridden via a parameter. The "fat channel" now accepts Part objects so that the Connector implementation can craft a Part with all aspects of the Part, rather than providing only a value. The feature has also been enhanced to better handle Multipart request/response cases.|
|SR-C25746||371903||Fixed logic in Decision Table evaluation logic||If a decision table was created with more than 5 columns and more than 1000 rows, trying to evaluate lines 1024 to 1062 (1084 to 1122 etc.), even though those lines matched, resulted in an otherwise value instead of the actual row value. This was caused by a logic error, and has been fixed.|
|SR-C25788||390394||Changed temp directory handling for Export to Excel||In rare cases, using the Export to Excel feature on the report definition viewer resulted in a Java FileNotFoundException. This was traced to process conflicts between the new Export to Excel implementation first featured in 7.3 and the Apache POI used to generate Excel documents by streaming the file to the disk as it is populated. Each worksheet in the document is streamed to its own temporary file. At the end of generation, the Excel document is created by opening the completed temporary files and copying their data into the final document. This way the entire dataset is never held in memory at once unless it is particularly small. However, the temporary file that holds the Data worksheet was in rare cases being deleted while the rows and columns were being populated. This was not noticed by the code until the file was reopened to copy its data into the final spreadsheet. Since it is not necessary to store the temp files in a separate directory (poi files) instead of using the the default configuration for saving temp files, the system will now use the function PegaTempFileCreationStrategy which will create the temp file but not create the temp directory. This means all the generated temp files are stored directly in the temp directory and not in the sub-directory poi files. ExcelReportExporter has also been updated so Apache POI knows to use this class for managing temp files.|
|SR-C25839||368838||Fixed Merge Wizard silent failure and added checks for ":" in RuleSetName value||If an error occurred when using the Merge Wizard, the merge case was resolved-rejected without any reason or error message. This was caused by a hidden “Required Rulesets and Versions” field on the RuleSet ruleform which set the ruleset to application based validation. In addition, some ruleset validation logic was triggering even in ABV mode. To correct this, the precondition in pzOpenAllSourceRuleSets 2.2 has bene changed from "pyIsSourceABV"=="true" to .pyIsSourceABV=="true", and the pzRuleSetNameIsABranch function now has support for handling the null pointer exception when the RuleSetName value is ":". A message will also be logged if the RuleSetName starts with ":".|
|SR-C25839||366531||Merge Wizard errors fixed, and created rules will use the highest ruleset version available||Code errors in the Merge Wizard that were causing Null Pointer Exception errors have been fixed, In addition, branch rule sets created through this wizard did not have the 'Application validation' option and rule set pre-requisite filled automatically; the system has been updated so the version prerequisite will be the highest existing ruleset version in the ruleset.|
|SR-C26026||369003||Report Editor hints updated to reflect report type||In order to clarify use, the formatting hint will be generated differently for List and Summary reports.
List report hint: To format, sort, filter, or delete a column: Click on the down arrow next to it to delete the column, to change its format, or to sort or filter its values.
Summary report hint: To format, sort, filter, or delete a column: Right-click a column heading or click on the down arrow next to it to delete the column, to change its format, or to sort or filter its values.
|SR-C26047||372483||Total count column sorting added to “Timeliness of Top Process Owners” report||Sorting has been added to the total count column of the “Timeliness of Top Process Owners” report in CL Assign-Worklist ID pyAgeByAssigneeTop5.|
|SR-C26209||368478||Status of -action rollback clarification||When -action rollback was executed using prpcServiceUtils it returned Status as SUCCESS, creating the impression that the request has been successfully completed by the server whereas in actuality the request had simply been correctly queued for execution. To be consistent with status reporting for other commands, the Status for this has been updated to be QUEUED.|
|SR-C26304||367156||Output files pool close policy changed to idle timer||The Output files pool in the HDFS data set closed files when there were no threads actively using files from this pool. This resulted in many files being created even when using one thread (one file per partition in that case). To prevent the buildup of files, the Output files pool close policy has been changed to use an idle timer instead. Files will be closed after 10 seconds of inactivity or the value configured via dnode/idle_file_pool_close_timeout HDFS and File Repository Datasets support save operations.|
|SR-C2637||345584||Date control defaults to current year if data is invalid||When given a Random number as input to Date Control, it was considering it as a year and showing the same year when opening the Calendar icon of the Field. This was caused by the processDate function in calendar.js was incorrectly returning the date, and has been fixed by updating the processDate API of pzpega_ui_calendar.js to display the current year if it is given an invalid date.|
|SR-C26524||367359||Validation override option to configure routing in survey flow||In order to support using a property reference to route options in a survey, pzSetSurveyDriverParams, pzSetQuestionShapeParams and pzSetQuestionPageParams have bene modified to not do validation for operator existence if a property reference is passed.|
|SR-C26566||370744||Quotes stripped from property reference for pzActionSetItemFocus RUF||Menu navigation was not working if a property reference included quotes. To resolve this, pzActionSetItemFocus RUF has been modified to remove any extra quotes present|
|SR-C26648||369666||pyTaskName truncation raised to 128 characters||An issue was seen with the Flow.AddHistory RUF truncating the pyTaskname to 32 characters when pxTaskLabel was more than 32 characters. To resolve this, Flow.AddHistory RUF has been updated to truncate the pyTaskname to 128 characters when pxTaskLabel is more than 128 characters.|
|SR-C26699||374934||DSS-configurable idle connections timeout added||In some cases Idle Connections were not getting closed; code has now been added to close idle connections after a specific time based on an idle timeout value set using DSS.|
|SR-C26782||367349||ApplicationManager checks login success state||If there was a network connection error, the mobile application sometimes froze during login. Killing and restarting the app still hung on the splash screen because the initial state of the application was cached even though the login was not completed successfully. This was traced to the ApplicationManager API not checking the state, and has been corrected.|
|SR-C26841||369641||Handling added for missing class definition in DT Java generation||Java generation was failing during the save of a Data transform which referred to a data page present in two different rule set versions; in the lower version it was defined on class, which is no longer in the database, and an exception resulted from the null value. Handling for this has now been added to FirstLevelCandidatesResolver.|
|SR-C26873||367291||Refresh after modal close handled correctly||After using Display harness to open a work object in review mode and launch another flow in modal dialog, closing the modal dialog without any changes (using the close button) and refreshing the browser generated an error screen. This was caused by the modal dialog browser URL being changed while opening, and the pzpega_ui_dynamicContainer_lite JS file has been modified to resolve this.|
|SR-C26906||368262||pyHandleClick added to support calendar onClick customization||In order to support customization for changing the behavior of onClick for a calendar event, the function pyHandleClick has been introduced to replace pzHandleClick.|
|SR-C27188||376713||Timezone handling improved for scheduled reports||A report scheduled to deliver on weekdays in the AEST time zone was being delivered on Saturdays and skipping on Mondays. This was due to an implementation error regarding time zones; Tuesday in AEST is Monday in GMT, and Saturday in AEST is Friday in GMT, and the isWeekDay check ended up being done on GMT time instead of the time zone specific time. To correct this, the time zone will be set and used for startdatetime.|
|SR-C27192||368788||Command line flag added to customize overall build status outcome preference||A flag has been provided to toggle the outcome of overall build status when one or all imports fail. This enhancement uses the command line parameter --processFailStrategy which can be either set to FAIL_PROCESS_ON_ALL_SYSTEM_FAILURE or FAIL_PROCESS_ON_SINGLE_SYSTEM_FAILURE. If not set, default value will be 'FAIL_PROCESS_ON_SINGLE_SYSTEM_FAILURE.|
|SR-C27242||368023||Minimap icon title localized||Localization has been added to the value of the minimap icon title.|
|SR-C27248||368978||Command line hotfix install authentication fixed||When performing a hotfix installation from command line, the requestor authentication was not set to true. This has been corrected.|
|SR-C27263||382273||Harness passed to child from parent in PDF generation||If more than one "create pdf" was used in a single smart shape, then only the first "create pdf" received the skin. This was due to the Markup generated when tracing HTMLtoPDF activity having the same result for all the subcases due to the Pega only once tag being used to generate the harness skin. In order to support this use, the logic has been enhanced to include the skin for each PDF generated. This has been resolved by adding a parameter to force the skin generation if it is called from PDF smart shape, and adding handing to pick app skin instead of Designer Studio skin based on the parameter as appropriate.|
|SR-C2729||376951||Resolved New Work items in WB sometimes hanging due to email content||A null check has been added to resolve system hang when attempting to render a grid which is present in the RTE of an email. Additional checks have been added for the class attribute and for the bGrid attribute when displaying email content in the grid's expand pane inside an RTE for markup that was copy-pasted (when sending the email).; this ensures the needed attributes are present during the initialization of grids.|
|SR-C27340||370762||Added validation to date/time for "Update if target is blank"||Data table updates were not working as expected if "Update if target is blank" was used and the primary key field Date field in Excel was in m/d/yyyy format ( system locale en-US). This has been corrected by adding validation to the Date/DateTime/TimeOFDay field.|
|SR-C27371||374718||Section overlays dismissed on click away||Overlays did not dismiss on clicking away from the Work-Action section. This was due to the clickaway handler not getting attached when clicking out of the iframe, and code changes have been added to ensure it is attached.|
|SR-C27444||369750||Property/column case mismatch handling added for OverallSentimentSplit report on Oracle systems||A casing inconsistency was causing the OverallSentimentSplit report in Pega Marketing to not run on a SQL Server database, resulting in the inability to see any metrics related to Social Sentiment on the marketing dashboard. To fix this, an external mapping class has been added to account for the mismatch on case-sensitive Oracle systems, so that pyDataSetIDwill be set as pyDatasetId in the Data-NLP-Report-Summary class.|
|SR-C27483||368291||prpcServiceUtils getStatus corrected for unlocked ruleset||While exporting a product rule containing unlocked rulesets, the error message was not set when the export operation was called from service. This caused the build to fail as it was unable to parse the empty response. To correct this, the relevant error message will be added for exporting a unlocked ruleset and the ant build will fail|
|Jackson and ElasticSearch upgraded||ElasticSearch (in embedded mode) has been upgraded to ES 5.6.7 so that nested structures can be accommodated in ElasticSearch when using dynamic templates. In addition, the Jackson JARs have been upgraded to version 2.9.5 for improved security.|
|SR-C27549||368123||Support added for Microsoft Exchange Public Keys||An enhancement has been added to support Microsoft Exchange Public keys.|
|SR-C27568||368081||Cancel/Submit buttons localized in summarized report||Localization has been added to the Cancel and Submit buttons of Summarize report.|
|SR-C27573||368388||Localization added to 'manage participants' error headings||Localization has been added to the work parties error headings in the 'manage participants' screen.|
|SR-C27582||368673||Feedback work queue fields localized||Localization has been added to the following fields of the Feedback work queue:
Work queue record for Broken Processes (aka problem flows)
Failed Robotic Assignments
Work queue Record
Work queue record for CheckInCandidate tasks
Work queue record for deferred tasks
Work queue record for Incomplete Connections tasks
Work queue record for inprogress tasks
Work queue record for QA tasks
Work queue record for REQUESTS tasks
Work queue record for ReviewChanges tasks
Work queue record for scanned documents
Work queue record for support tasks
|SR-C27585||370960||Cassandra startup modified to use absolute path to needed files||DDS was not starting on Windows, reporting that it was unable to find the cassandra.bat file. In this case, Cassandra was started using ".\cassandra.bat" command and the path to cassandra.bat was specified by setting the working directory in ProcessBuilder, but ProcessBuilder doesn't use working directory to find the location of the script. In order to ensure consistent startup behavior, the invocation of Cassandra scripts has been modified to run using an absolute path to Cassandra startup files in the command.|
|SR-C27659||368116||Modified survey logic for modal dialog radio button rendering||When Survey was rendered on a modal dialog, radio button questions were not getting displayed. This was traced to the system skipping some stream generation logic due to a purpose called VALIDATE which was set incorrectly in post processing. To resolve this, the code for validation at the question level has been moved below the stream generation logic in the SurveyAccessMethodBodyQuestionCollection and SurveyAccessMethodBodyQuestion FUAs.|
|SR-C27724||369088||Cluster timeouts now configurable||Boundaries were originally placed on the values allowed via prconfig for the cluster timeout settings to avoid values that could extremely negatively impact the cluster. These boundaries have now been removed to allow sites to use their discretion and the logging level for the Cluster Configuration has been changed from DEBUG to INFO.|
|SR-C27806||369056||FileInput and FileOutput contention resolved||In order to resolve contention issues with FileInputStream and FileOutputStream APIs that were causing GC to hold the objects till the end, they have been replaced with Files.newInputStream and Files.newOutputStream APIs which will not introduce GC.|
|SR-C27924||368528||My Teams tooltip localized||Localization has been added to the My Teams tooltip.|
|SR-C27948||368598||Create case transfer information tooltip localized||The tooltip for "Transfer information to new case" checkbox in the create case utility has been localized.|
|SR-C27961||369850||Tree grid wrapper logic optimized||The wrapper logic for Tree grid expansion has been optimized to reduce the number of unwanted clipboard calls to getRawString.|
|SR-C27981||364524||Modified negative responses number displayed in AMM||The recorded responses count under Designer Studio > Predictive Analysis > Adaptive Model Management landing page was appearing as negative after the clearing or deleting of models, giving the impression of an error To avoid confusion, the system will now show '--' if the counter returns a negative number for recorded responses.|
|SR-C28092||370330||Service Utils repackaged for Linux||Running ant or prpcServiceUtils.sh on a Linux instance was failing with the error "bash: ./scripts/bin/ant: /bin/sh^M: bad interpreter: No such file or directory". The Service Utils have been repackaged to correct this issue.|
|SR-C28260||369661||System will not add quotes to Data Page string parameter||After creating a unit test for a Data Page that requires a string parameter, the unit test failed because the parameter value entered was placed in quotes. This requirement was not clear: Double quotes were shown in the test rule form even though the actual value was not expected to be input with quotes, and the system was adding them. To remove confusion, the system will no longer add the additional quotes so they are not doubled.|
|SR-C28265||374085||Optimized properties “pyFieldClass” & “pyFieldName”||The properties pyFieldname and pyFieldClass were not optimized, leading to errors if these properties were used in out-of-the-box report definitions run without UDF enabled. As part of this fix, the columns will be created in the database and need to be populated.|
|SR-C28389||374701||Added check for parent page when using 'save-as' in PM BundleTemplate||Pega Marketing has a longstanding shipped section called BundleTemplate which is used to render a page-list of bundle members for emails. Doing a save-as of this section (without ANY changes) was resulting in runtime errors with the exception ":com.pega.pegarules.pub.clipboard.InvalidReferenceException: The reference .BundleOfferMembers(1).BundleOfferMembers is not valid. Reason: Entry handle must have a page name specified." This happened because the Section in grid was run on a page without a name, and the exception came from test id generation code which expected a complete path of the grid page list property. In this case the path is not complete as it starts with "." (dot) and there is not a top level named page. To resolve this, the code has been modified to not generate a test ID when the parent page does not exist in Clipboard.|
|SR-C28579||384591||Delegated data types show correct tab header name||When the delegated rules were opened from the case manager portal via configuration page in a multi DC portal, the tab name was shown as insname of the data type class. This was caused by the
"pyInsHandle" property being configured for the name parameter for the landing page action. To correct this, the system will use "pyOriginatingLabel" instead of "pyInsHandle" in the pzDelegatedRulesGrid section to display the rule label.
|SR-C28586||377237||Error with fetching prompt value fixed||When property was configured with declare expression and its read only value was given as 'Display text of selected options', it showed the standard value instead of the prompt value. This has been corrected with code changes to get the prompt value of the given configuration.|
|SR-C28597||369290||Logoff fixed for No SLO URL Authservice||Recent changes made to Code-Security.Logoff to handle NO SLO URL defined in AuthService resulted in logoff not occurring properly. This has been fixed.|
|SR-C28672||371101||Timing issue fixed with switchLocale refresh||When using a function call to have a section refreshed so that it shows in Spanish, the section instead loaded in English and did not change. This was traced to a timing issue: the pega.clientTools.switchLocale method is asynchronous, and immediately refreshing Sections and Harnesses after the asynchronous call may not have time to reflect the changes. To resolve this, a callback mechanism has been introduced in the pega.clientTools.switchLocale method.|
|SR-C28691||371875||Waterfall segment issues fixed||After upgrade, issues were seen with waterfall segments with more than 10 groups in a set: 1) While deleting a criteria in a group, the control went to the top and did not come back. This has been fixed by adding code to get the name attribute using getAttribute().
2) While moving groups up and down, the control went to the top and it was necessary to scroll down to find the rule. This was due to Menu options containing the refresh parent section request which was losing the focus. Code has been added to set the focus on the control from the point where the menu is getting launched.
|SR-C28801||374737||Decimal validations fixed for offline mobile case||On a mobile device using offline case it was possible to use multiple entries of grouping_separator without generating an error, but the Presentation configuration of Text Input control did not allow more than one separator in Google Chrome and Microsoft Internet Explorer . Example:
"11,22" - worked
"11,22.11" - generated error
"11.22.22" - generated error
"11,22,22" - generated error
As a result it was possible to enter values as "12,3,3,3,3,3,3,3." or "188.8.131.52.3.3,4" and submit without any error and the Client Cache would be populated with the expected value "11111.76,null,null,null,null,null,777" , but after sync the clipboard contained "11111.76,null,,null,,null,777"
This was due to the present client side validations not supporting validations based on locales, and a new regex expression has been added to pzpega_validators to fix invalid decimal number patterns like 45,,,,5434 , 45....5423 , 43.3,2354 , 54,.42324, etc.
|SR-C29110||369501||Added visibility conditions to display of Import/Export screen for pzZipMoveExport||Non-Developer/System administrator users were able to view the Application Import/Export screen despite insufficient privileges. This was a missed use case around the pzZipMoveExport privilege, and has been fixed by adding a visibility condition on sections so that export-related landing pages will be shown when there are required privileges.|
|SR-C29147||369498||Context Not Defined error tuned for capture responses||ContextNotDefinedErrors were thrown on capture response even when one of the models executed in the original decision matched all identifiers. For example, given
Model1, with predictor Age
Model2, with predictors Age and income
Model3, with predictors Age, income and gender
When a response is sent to ADM with Outcome and just Age, a Context Not Defined error was logged for Model2 and Model3.
This behavior has now been updated to only log an error when a response doesn't provide values for the context keys of ALL model rules it relates to. The error message will also be updated to reflect this.
|SR-C29307||369458||Reference tracker tracks references to the page list properties in non-auto-generated sections||In certain cases reference tracker would miss complex property references, especially when a primary page had nested embedded pages and page lists. This has been resolved by changing the underlying reference tracker implementation to be independent from the page structure. The new implementation is more robust and 100% compatible with DSM clipboard pages.|
|SR-C29360||370557||Improved error messaging and logging added to listener startup/stop||The message returned to the UI by com.pega.pegarules.management.internal.
system.operations.ListenerCommandExecutorOnRemoteNode#executeCommand was previously of the format "Failed to execute" + commandName + " on node %s". In order to make this error message more meaningful, the command name will return the simple name of the path rather than the full path. In addition, more comprehensive logging has been added to listener remote execution operations in case of errors.
|SR-C29541||374052||Password API repaired for refactoring locked rulesets||Due to recent changes in the ruleset password comparison API, entering the correct password failed after attempting to refactor some string in the application when one or more of the rulesets was locked. The logic for the password comparison has been corrected to resolve this.|
|SR-C29642||373082||Fixed harness rendering errors while using localization||When using a language pack, trying to save a work object generated an error due to an incomplete translation involving hidden values in a perform harness. This has been fixed by replacing the hidden fields in pyCaseHeaderButtons section with a pyHarnessHiddenValues section include.|
|SR-C29742||386203||Added check for JSON array when setting context for data transform||When incoming JSON for a data transform had a null property, the data transform failed with a Null Pointer Error. This was due to the system assuming the root context to be null, which works for JSON but not for an Array of JSONs. To correct this, a check for topLevelArray has been added to ensure the system has the correct context of the current JSON Object.|
|SR-C29885||370756||pxMatchScore handling modified to run with UDFs disabled||An activity was created to check for duplicates using "SeekCases" as part of process for the identifying them. This activity internally evaluates the case match rule to calculate the match score and runs a report definition that populates the duplicates. However, if UDFs were disabled in the environment, pxMatchScore was used internally and threw an error during the case match rule execution because pxMatchScore property was reading from the blob column. The resolve this, the setting of the pxMatchScore filter condition for the virtual RD in the pyDuplicateSearchCases has been removed from the activity and pxMatchScore will be set in the FUA instead.|
|SR-C29964||369856||Null check added for cpFilter||a Null Pointer Exception error involving pxRetrieveReportData activity has been corrected by adding a null check for cpFilter.|
|SR-C30037||373310||Currency codes updated||Currencycodes.xml has been updated to reflect the latest changes as per the following document:
|SR-C30049||373668||JAWS properly reads icon column in expand pane||When a grid is configured with Expandable rows master detail, with an icon for the "expand / collapse" icon per row, a column is reserved for the icon. However, when using JAWS table shortcuts, the column header reserved for the icon was read out as blank. This was due to the expand pane header not having the required aria attributes, and these have been added in the GenerateGridHTML function.|
|SR-C30268||370456||Swapped directory find logic for command line prpcUtils||When prpcUtils.sh was invoked using a 'sh' command, such as "sh prpcUtils.sh import",
the script execution failed with the error "mkdir: cannot create directory ‘prpcUtils.sh’: Not a directory" and "Build failed, Ant Process returned a non 0 value". This was traced to the script using parameter expansion to find the directory where the script resides, but the expansions were not working as expected when the command was executed in a new shell (sh <command>). To correct this, the script will use the 'dirname' command to find the full path to the directory.
|SR-C30344||372318||Activity pzCreatePage correctly uses parameter dataTransform||When trying to use the standard activity pzCreatePage to create a new page using Run Activity action on click of a button, the page was getting created but the data transform (pyDefault) that was passed as a parameter was not getting applied. This is because the Page-New step in that activity does not use the parameter dataTransform: due to development error, an extra parameter was added that wasn't supported. This extraneous parameter has bene removed, and the page-new method in pzCreatePage is now using the dataTransform parameter.|
|SR-C30347||371804||GridFilterRangeFields increased to allow date ranges of +/- 100 years||Previously, the date filter of columns in tables/grids only allowed navigation for date ranges of +/- 10 years by default. In order to allow more flexibility, the range set in the pzGridFilterRangeFields Section has been increased to support values +/- 100 years.|
|SR-C30554||370552||Template switch added to Case Worker Portal for PDF generation||PDF generation was not working in the Case Worker portal due to the template mode defaulting to always ON. Since this must be OFF when the PDF flow is present, a new 'ignoreTemplatization' parameter has been added to the HarnessUIBuilder.java class. This parameter must be passed from the flow and be combined with a call to pzSetUITemplateStatus after setting that flag.|
|SR-C30637||370285||Push notifications working for Pega Mobile Client 7.40.2||After upgrade, push notification were not working on Android and the error "You lack access required to execute @baseclass.pyRegisterPushNotificationsTokenAndCategories" appeared. This was traced to Pega Mobile Client (7.40.2 version) triggering requests with token registration when push notifications are disabled ( i.e.. senderID in Android is not set and push notifications are not enabled in provision profile in iOS). To resolve this, a check has been added for senderID value in NotificationsActivityPlugin.java in onEvent(AccountManagerEvent.OnOpen event) method, and the request will be triggered only when senderID is specified.|
|SR-C30659||373032||Excel values will not be rounded upon case import||When an Excel file was imported into a case using the MSOParseExcelFile activity, values from cells with formulas were being rounded off when parsed. This was due to a defect in the out-of-the-box function DCOXLParseSheetDoc which rounded off the value if a formula was present, and this rounding action has been removed.|
|Added null check for CurrentAssignmentPage||If a CurrentAssignmentPage was null on the first OpenAssignmentAction, the application would constantly spin. This has been fixed by properly initializing the currentAssignmentPage in the onHaveAssignment method instead of onHaveWorkObject of openAssignmentAction and by adding a null check to evaluate whether the object is needed and should be reinitialized.|
|SR-C30771||373256||Bulk process filtering on caseID fixed||The filter on Case ID in the Bulk Process Filter was not working after upgrade. This was caused by the on change not getting triggered on pyID field, resulting in the search not refreshing that field after adding the case id filter. This has now been updated to generate actions correctly.|
|SR-C30790||370354||Work Pages merged to preserve data during failed sync||An issue was seen where there was data loss when an offline case failed SYNC. When a sync issue happens while processing the actions, the case is moved to the configured error sync work basket or the default work basket. The last instance of the pyWorkPage of the failed case is kept as it will have all the data up to the point of the failed assignment. However, after the pyWorkPage diff changed, the system was sending only the changed data. That meant when a sync error happened only the pyWorkPage of the last failed assignment was saved and all the data submitted in the earlier actions was lost. The system has now been updated to merge all the pyWorkPages sent in the action corresponding to same Work Object via the new pzMergeClientWorkPages activity which will call the pzMoveToSyncWorkBasket activity.|
|SR-C30799||376199||XSL transform while opening clipboard fixed for WebSphere||While opening a clipboard from a user profile an exception was generated in the tracer.
This was traced to an XSL transform on a particular IBM WebSphere server resulting in conflicting JARs for the XLS transformation and has been resolved by modifying ProcessXSLT RUF to remove the setAttribute for 'http://javax.xml.XMLConstants/property/accessExternalDTD'.
|SR-C30808||371553||REST Integration Wizard logic modified to resolve Null Pointer Exception||When the sample request / response data for the REST Data Source Wizard contained a parameter that started with at least one character that was not valid for a Property name and the next two characters after the illegal character removal were "px" or "pz", then the system attempted to make a new Property record with a name that starts with one of the "reserved prefixes" (px, pz). That attempt was blocked. The illegal name was then also patterned over into rules related to the Property, causing them to be invalid due to their relationship with a nonexistent Property record. The Wizard was then forced to stop generating records and roll back the changes. To correct this issue, the "Property name cleaning" logic has been replaced with new logic that can handle the "illegal characters followed by px or pz" use-case.
When RuleGeneratorCommon is creating a new MappingPropertyInfo, it will call the new 2-argument flavor of RuleGeneratorUtils.normalizePropertyName(...).
This new normalization method performs the property-specific cleaning (removing prefixes) as the last step. RuleGeneratorCommon is also used to attempt to remove prefixes before all other formatting is performed.
|SR-C31086||371965||Scanner now supports hotfixes with only Rule-RuleSet-* instances||Previously, the Scanner bypassed Rule-RuleSet-* instances, causing an issue where a hotfix that contained only these instances generated an exception indicating an ambiguous status and the hotfix could not be installed. This has been corrected by modifying the Scanner to now consider all rules valid for scanning.|
|Handling added to clear dashboard Data pages and thread when switching activity||After publishing a dashboard to an application, everything worked as expected when directly logging into that application. However, if the user had multiple access groups and switched to another access group, the wrong dashboard was displayed and D_pxUserDashboardLoadList was not reloaded. This has been resolved by moving the D_pxUserDashboardLoadList Data page to Thread level and adding the new Data transform PZCLEARDASHBOARDDATAPAGES called from pzClearDataPagesBeforeSwitch. This will clear the dashboard Datapages and the thread when switching the activity.|
|SR-C3119||383017||Fixed CSRF token issue for enableWhitelistReferrer||An issue was found with Checking in / deleting a rule when the setting security/csrf/enableWhitelistReferrer was set to false. This was caused by a CSRF token issue, and has been fixed by comparing with it to the token of the parent thread if lookup by current thread fails.|
|SR-C31307||355606||Attachment saved to external storage retains new name||When files were saved in external web storage (configured via app definition "Integration & Security tab), an attachment name that was changed from the default was reverting to the default name when attached again. Handling has now been added to pzSaveToWebStorage to retain the override name for the file.|
|PageList properties for List assertion resolve to correct class||Errors indicating "pyStepPage can not be empty for List card" occurred when attempting to save Strategy related Test cases. This was traced to the system not not resolving to the correct class instance type when loading PageList properties for List assertion in strategy related Test cases, and has been corrected.|
|SR-C31617||373206||Tooltip display fixed for two similar sections on the same screen||A Tooltip was improperly displaying two similar sections on the same screen If the same section was included twice (similar sections), and if Smart Info was configured to one element, the tool tip was shown for the first element instead of the element action in which an action was done. This was caused by an element targeting error and has been corrected.|
|SR-C31733||371646||Column Populator utility documentation clarifies pxInsKey ordering||Due to confusion about the functioning of the Column Populator utility, comments have been added to the prpcUtils.properties file to clarify that the pzInsKey column contains strings and therefore uses lexicographical ordering and not numeric ordering.|
|SR-C31755||373526||Updated LinkAttachmentstoCase for Data-Corr-Email attachments||Data-Corr-Email attachments were not getting copied to Service Cases in NLP. This was due to the pxLinkAttachmentToCase activity attempting to read pyNote from the DataAttachPage when pyNote is blank for Corr attachments. To resolve this, pxLinkAttachmentToCase has been updated to use pyLabel if pyNote is empty.|
|SR-C31812||371890||Fixed Runtime Toolbar access issue with Japanese locale||The Runtime Toolbar in the Case Manager Portal screen could not be re-opened when using the Japanese locale unless the screen was reloaded by hitting the "F5" key. This was an issue with the localized value of Title not being properly handled for comparison when using the Google Chrome browser, and code has been added to resolve this.|
|SR-C32016||374775||Handling added for JSON generation when special characters are given in operator fullname||If an operator rule was saved with a special character (for example Horizontal Tab) in the full name field, it resulted in pyGetOperatorsForCurrentApplication producing an invalid JSON object. In order to correct this, the JSON created in step no 3 in pyGetOperatorsForCurrentApplication activity will use @(Pega-AppDefinition:Utilities).pzEscapeJSONSpecialCharacters() for .pyUserIdentifier (operator ID) and .pyUserName (Full Name).|
|SR-C32033||371520||Locking modifications and Hazelcast upgrade added to remove OOM error for advanced agents||Using advanced agents which have the option "Run this agent on only one node at a time" caused the system to take a key-based cluster-wide distributed lock on a distributed map, causing the node which had the distributed map to become unresponsive due to OOM. The subsequent OperationTimeoutException caused the agent to be terminated as per the functionality of agents. The resolution for this is in two parts: a tryLock() has been added to the Distributed Map Layer, and support has been added for Hazelcast enterprise edition EE 3.10 in place of v.3.8.|
|SR-C32153||366706||Autocomplete tags and screen mask corrected in Mobile||On mobile devices with full screen enabled and an autocomplete control configured with onchange -> refresh section, entering some value and pressing the Enter / Go button in mobile refreshed the section but the full screen mask was not properly removed and tags could not be added. To correct this, a check has been added.|
|SR-C32155||374359||Null check added for empty clipboard page in GetPopOverData||When first launching a screen which contains a repeat grid, the table definition contains a prim_page value like "TempSelectedCustomer". Clicking the filter icon on any column of the repeat grid then caused the pzGetPopOverData activity to be fired from the UI with the parameter preActivityPage and value "TempSelectedCustomer", but there was no such page in the Clipboard and an exception was generated. If the browser was refreshed and the same scenario run again, pzGetPopOverData activity was fired from the UI without the parameter preActivityPage and no issue was seen. To resolve the error on the first pass, a null check has been added to the pzGetPopOverData activity first step.|
|SR-C32269||377440||Section rendering error after tab switching fixed in Microsoft Internet Explorer||When using Microsoft Internet Explorer , clicking on a tab after expanding some collapsible layouts on a previous tab resulted in a 'cannot render section' error. This was traced to the handling for the event target in Microsoft Internet Explorer not resetting the thread back to the base-thread when the third tab was clicked, and has been fixed by modifying the resetExecutionThread method to take the activeElement into account when dealing with focusout in Microsoft Internet Explorer .|
|SR-C32295||372890||Emails sent from Service Request template created correctly||When an application was created from the 'Service Request' template via Pega Express, emails sent had a blank body. This did not happen with applications built from the Custom template. This was traced to the Send Email smart shape internally calling pzSendEmail which then calls SendSimpleEmail activity. This activity was available both in Work- and PegaSample, and as this case type class was inherited from PegaSample, it picked SendSimpleEmail from the PegaSample class and resulted in a dummy implementation. To fix this, SendSimpleEmail has been withdrawn from the PegaSample class so that same rule from Work- will be picked.|
|Decision Table evaluation logic repaired||A logic flaw was found when doing the division of nCondRowLimit with 1000. If nCondRowLimit was 30, i.e. 1000%30=10, 10 rows were missing when evaluating the decision table. The logic has now been modified to correctly evaluate the right row from the decision table.|
|SR-C3261||348618||Performance improvement for Stream API||
Some of the APIs from stream processing were creating unnecessary objects and causing higher memory consumption. The behavior has now been changed to optimize frequently used APIs to improve performance.
|SR-C32714||372496||Customizable pyHistoryMemo value added to pzCreateCaseFromInteractionCase||While performing triage when using an Email interaction case, the attachments are copied into the newly selected change stage and the audit shows an entry for each attachment, i.e. they have multiple entries for multiple attachments. In order to make the audit more informative, the field value "pyHistoryMemo" has been created and added to the pzCreateCaseFromInteractionCase activity to allow customized configuration for AuditNote.|
|SR-C32739||372485||Credentials sanitized when logging exception for invalid primary page name||Whenever an invalid primary page name was passed along with credentials in queryString, the credentials were logged without sanitizing or masking. Current standard behavior is that flows are run in an authenticated session that would not be passing this information, but this scenario was traced to legacy code for a very corner case that was not transitioned to the more secure method. The error information will now be properly sanitized on logging an exception.|
|SR-C32911||373513||Submit button no longer shows <u> tag when accessibility enabled||When a user was accessibility enabled and there was a custom filter section for a report, the Submit button in the pzRRDisplayCustomFilterSection section incorrectly showed "<u>S</u>ubmit" as its label. To correct this, the button has been updated to a new Auto-Generated button and script on click has been added.|
|SR-C32947||378777||Application Wizard works on application built using application type as framework||Trying to run the Application Wizard on an application built on a framework was failing. This happened only when the framework being used was also built by the Application Wizard and no changes were made to that application after creation. The root cause of this was 'pyAccessGroupForAdministrator' not being correctly populated on the framework application during its creation. Setting this property during the framework application creation has fixed the issue.|
|Enhanced allow/deny use for Alert logging||An enhancement has been added to allow Alert logging to all sources (remote and local) to utilize an allow list instead of a deny list for parameter page inserts by default. This ensures appropriate sensitive information security regardless of destination. Alert parameter page data is listed with allowed keywords by default for local and remote alerts. Previously, it was possible to set remote alerts to use allow list or deny list obfuscation. The code checked the deny list for the local alerts (file) and then decided if it needed to do the allow list as well. The new method checks if it needs to do allow elist (default) or dent list and then does the obfuscation only once.|
|SR-C33019||374880||Logic fixed for displaying Multi-Select control values||Multi-Select control was not showing all of the values once the existing values were de-selected. This was due to a missed use case in the logic designed to prevent a user from seeing selected values in the multiselect dropdown, and the loadResults method has been modified to fix the issue.|
|SR-C33163||374368||Customizable pyGridFilterRangeFields added to RD filters||The filter for date fields in RD uses Spinner for the calendar navigation by default. In order to allow customization such as using a dropdown instead, a new section named pyGridFilterRangeFields has been added and made available.|
|SR-C33338||375418||Custom controls work for date time filter windows||The default date time format was displayed in the Filter windows even though other column controls were configured. This was due to a faulty 'if' condition in pzGetGridColUniqueValues and has been fixed.|
|SR-C33532||374635||Lookups fixed for embedded property fields||In Import Wizard, the lookup value applied through the field mapping option was not getting populated into embedded properties of the import class. This prevented using the lookup for ContactRef (which is an embedded property) in Household Data Loader. This has been fixed by adding some translation to the property formatting and then populating the field mapping options with the modified target field.|
|SR-C33623||378007||Record limit removed for pzGetPropertiesForReports||If a site had over 2000 string type properties defined on their case type, not all matches were found in the Edit Report. This was due to the List View pzGetPropertiesForReports having a limit of 2000 records, and has been resolved by setting the maximum rows to retrieve from 2000 to 0, which removes the limitation entirely.|
|SR-C33672||375945||Field Values correctly localized in Rules Explorer||Rules Explorer was not showing localized Field Values. This was traced to an implementation error: in older versions of Pega, the instances list was shown by using the list view. In more recent versions, this list was moved to report definition and the localization was lost. This has been corrected.|
|Truncation added to handle creation of test case label >64 chars||Attempting to create a strategy-related test case failed if the test case label given was more than 64 characters. To better handle this limit, specific code has been added to form a test case label that will truncate it to 64 characters if the label of the test case exceeds that limit.|
|SR-C33742||373407||AggregationValue object modified to support aggregating records with multiple measurements||VBD Synchronization was failing with the exception "java.lang.IllegalArgumentException: Aggregation failed due to unexpected value type". This occurred when processing a specific sequence of IH Facts on the same day, in which IH Facts without measurements were followed by IH Facts with multiple measurements, such as:
1) Fact with dimension values "A,B,C" and without measurements
2) Fact with dimension values "D,E,F" and with multiple measurements (must be multiple)
3) Fact with dimension values "A,B,C" and with any of the measurements from 2.
To resolve this, the tracking of field count in each aggregate has been updated to handle multiple added measurements.
|SR-C33761||376121||pyFileSize changed to type Text||An error occurred when using an RD to fetch pyFileSize of all attachments uploaded from Pulse. This was traced to a type mis-match: while the property itself is a decimal, the activity was setting a string value with alphanumerals. To avoid this error, the pyFileSize property will be created with type as Text.|
|SR-C33768||378863||Fixed ESRI maps offline case causing unending sync||The Pega windows app on desktop was showing syncing all the time when logged in online and ESRI Maps was configured through the non-auto generated section on an offline case. This has been corrected.|
|SR-C33849||375408||Events properly stored in Stream Data Set||Changes made to the Stream commit log storage structure in a previous fix resulted in unintended loss of the events information. This has been corrected by updating the Stream commit log directory name.|
|SR-C34208||373283||Fixed unexpected grid tab key behavior change||After upgrade, tab key events configured on any text input field were not being performed and the browser focus shifted to the next editable element. This was an issue with the Grid eventtype being hardcoded as keyup, and it has been corrected so the eventtype is keydown.|
|SR-C34388||373481||New interface has been exposed to allow custom merge logic for putall||While removing an item from a pagelist within a work object in the client cache, pagelist.remove(index) is called to complete that process. After syncing to the server, the item unexpectedly returned to the page list. This was traced to the Item removed from PageList in Cache being re-added to PageList because 'putall' was not supported with this configuration. To resolve the issue, a new interface has been exposed to allow custom merge logic for putall.|
|SR-C34516||388567||Dynamic layout for pxDiscoverableItemsCount split to better handle individual 'when' conditions||After upgrade, each report definition was showing a huge space under the filter section when using dynamic layout in the pxDiscoverableItemsCount section. If the layout format was changed from inline to any other layout format, the space did not appear. This was an issue with the custom styling for the Inline format that led to the Discovery item in reports taking up space even though it was hidden. This has been resolved by breaking the dynamic layout into two dynamic layouts so the 'when' condition could be on the individual dynamic layouts. If nothing is displayed within it, the dynamic layout markup won't be included.|
|SR-C34567||375117||MSOParseExcelFile skips cell formula for Page List value||MSOParseExcelFile was reading the formula along with the data when mapping to page list values. In order to ensure only the cell content is mapped and not the formula, parse will skip if the nodename is of type formula.|
|SR-C34597||375837||ShowLogoffTimer displays properly in Microsoft Internet Explorer||The Log off time out warning pop-up was not displaying properly in Microsoft Internet Explorer and showed an unexpected scroll bar. This was due to legacy table-based markup structure that is no longer supported by Microsoft Internet Explorer , and it has been removed from ShowLogoffTimer.|
|SR-C34654||374524||XSD files sent to the correct shared path||XSD files were not sent to correct shared path. This was traced to the creation of the zip file missing XSD when getAllProperties is true, and has been fixed by adding logic to not skip the XSD when generateXSDForGetAllProperties DSS is enabled.|
|SR-C35027||377314||Subject field of file attachment expanded to 96 characters||Previously, the description text (Subject field) of a file attachment was limited to 64 characters. In order to support longer fields, the truncation at 64 characters has been removed, the property-set pyNote has been moved to Step 11, and the attachment name will be validated Database pyMemo column size (96 characters) and truncated if the length is more than db memo size.|
|SR-C35036||374126||AttachmentCategoriesToSend in CorrNew fixed||When calling CorrNew and passing a value to "AttachmentCategoriesToSend", the attachments in the provided category were not added to the email being sent. This was caused by a step-order error introduced when the activity was refactored, and has been corrected.|
|SR-C35144||376873||Mobile autocomplete control displays after being cleared||When displaying the autocomplete list in full screen on mobile devices, attempting to clear the auto complete field using the "x" icon caused the text in the field to be cleared, but the auto complete list then did not display and instead only the last selected value was displayed until at least one character was typed in. This has been fixed.|
|SR-C35187||379225||Fixed sync lock following Work Object open||On Pega Client for Windows, creating or opening any Work Object from WorkList caused the Sync to stop responding and the error "keepAliveSessionTimeout :: not implemented" appeared in the log. This was traced to actions not being properly unlocked upon "reset" from the server, and has been fixed.|
|SR-C35349||374606||Excel retains null fields as null instead of changing to 0||When exporting report data to Excel, any null numeric property values were being automatically changed to a ‘0’. This was caused by a faulty "if" check in Export to Excel, and has been fixed.|
|SR-C35440||375917||Special characters in DR description/title properly display||When trying to delegate the data type rule to the business users, special characters entered in the Description/Title of Delegated rule were not rendered properly in Edit mode. This was due to a missed use case for delegated view, causing labels with parameters from section parameters to be encoded for security. It has been resolved by updating DynamicLayoutCellTemplateMetaDataGeneratorImpl to send the value without encoding.|
|SR-C35448||377278||Disable condition correctly applies to checkboxes without captions||When a disable condition was used on a checkbox in a table grid based on some property, the disable was not triggered even though the properties in the expression changed. This happened when a checkbox was configured without any caption: if it became disabled, the disable attribute was not getting appended to the hidden input fields. If the checkbox was configured with a caption, the disable worked as expected. In order to ensure the disable condition works consistently, the code has been modified so that the generation of checkboxes in nontemplate mode will appropriately append 'disabled' to the hidden input in the checkbox.|
|SR-C35518||377458||Added handling for nested RDL in master of another RDL||After entering the master details of an RDL and then configuring an Add item that opened up a modal dialog, clicking close did not work. It was also not possible to add/delete rows of an RDL inside the master details. The issue was due to an RDL being inside the masterdetails DIV of another RDL, and special handling has been added for this scenario.|
|SR-C35518||377478||Class and context refinements added for Master details flow action||The Master details Flow Action was not rendered in the Repeating Dynamic layout when a row was clicked, and the error "FlowAction not available in cache" appeared. In the same RDL, opening Master details did not fetch the context. This issue was traced to the pxObjClass of the client cache page that was being added in the SolutionsUsed page list not being set. In offline, the data transform does not set the pxObjClass by itself. Additions were also made to ensure the flow action is being packaged in the correct context.|
|SR-C35518||377458||Fixed add/delete rows issue for RDL inside master||Attempting to add/delete rows in an RDL inside the master details was not working, and it was not possible to dismiss the master details after the attempt. This was due to the RDL being inside the masterdetails DIV of another RDL, and handling has been added for this scenario.|
|SR-C35530||376970||OperatorID page now created at system level||The Thread/Tab was missing the 'OperatorID' page when logged in using PRAuth. This was caused by the OperatorID page being created at the thread level instead of at the requestor level. To correct this, OperatorID has been modified to be created at system level.|
|SR-C35569||387727||Mobile login error message clarified for disabled operator||Login on mobile failed with a "Failed to authenticate" message for disabled operators. This was confusing. The authentication of mobile applications employs "SnapStart", but this does not handle authentication failures due to "disabled operator" - at least not in a manner that enables handling and producing custom authentication messages that will inform the device user as to the specifics of the failed login. In order to remove confusion, handling has been added to ensure the proper http error code and message is returned from the server after a mobile login request from a disabled operator.|
|SR-C35827||375732||FlowAction, Rule-File-Binary, and data transform using pre-loading so specification changes are maintained||After adding specifications to a flow action from the specifications tab, refreshing the flow action rule resulted in the added specifications not being shown in the UI. If the rule was saved, the specification updates were lost. To resolve this, the specifications tab is now defer-loaded with the pre-loading activity pzGetAssociatedSpecifications used to load the specification links of the rule.
The updated ruleforms using pre-loading are FlowAction, Rule-File-Binary, and data transform.
|SR-C35969||375783||Documentation updated to clarify how to use Tracer on Service Rules||Due to an error in the documentation where the table of contents was pointing to an older version of the file, the information about configuring the Tracer to examine Service Rules was not clear. The document reference has been updated to point to the correct version which reads:
Service rule tracing is only enabled in environments where the trace/cluster/ServiceRuleWatchMaxProductionLevel Dynamic System Settings is greater than or equal to the production level. By default, trace/cluster/ServiceRuleWatchMaxProductionLevel is set to 4, which means that the ability to trace service rules would not work in a production level 5 environment until trace/cluster/ServiceRuleWatchMaxProductionLevel is increased to 5.
|Non-standard JVM heap size argument removed and replaced with more generic max-mem||The IBM JVM was not honoring the MaxHeapSize property, causing installs/upgrade on Java 8 with the IBM JVM to fail unless an alternate max memory was provided. To resolve this, the usage of a non-standard heap size argument has been removed and replaced with a more generic max-mem present within the master for all JVMs to take advantage of. At the same time, the default memory and space requirements have been reduced as prpcServiceUtils now needs less than it previously did.|
|SR-C35993||385277||JAWS reads error messages only once||Error messages were being read twice with JAWS due to the title attribute with the error message as value being added to the dynamic error div, resulting in JAWS reading both the title and the value. To fix this, the title attribute has been removed from the span element of the dynamic error div for a Dynamic-Layout so error messages are read only once for the field level errors.|
|SR-C36020||376776||New px APIs added to support File Listener in Data Import Wizard||In order to provide px API for Data Import Wizard to Support File Listener, the following parameters have been added:
pzGetSourceHeaderList- to support delimiter
pzImportRecords - to keep import file after import
pzImportRecordsWrapper - to import synchronously
pyKeepFileAfterImport - new property
pyPerformImportSynchronously - new property
|SR-C36057||387665||Required field error message appears under multiple controls when using multiple multiselect||Error messages for multiple controls in a repeating dynamic layout displayed only for first control instead of the expected behavior of an error message displayed under all controls. The required error messages were not showing up when multiple multiselectlist control was being used due to a missing name attribute for multiselectlist control, and this has been added to correct the problem.|
|SR-C36091||377696||Stuck run detection improved to give information and stop bad jobs||When a run is in NEW state, attempting to trigger it caused the run to move into the INITIALIZING state and after some time back to the NEW state. Once that happens for the first time, it would continuously happen to the same run and force the creation of a new run. Investigation showed that in very specific situations a data flow run might take too long to initialize. That caused the system mechanism that detects runs stuck in a transitioning state to kick in and move it back to NEW state. Later that run would actually be initialized but its status would no longer be reported correctly, giving the impression that the run was always going from NEW->INTIALIZING->NEW. To prevent confusion, code has been to the stuck run detection that will add troubleshooting information and stop that run if it's in a state that was was not anticipated.|
|SR-C36306||389694||Handling added for double-click on previous step in TreeNavigation7||After configuring a screen flow navigation that utilized the TreeNavigation7 Section rule, double clicking on a previous step generated the error "Modal Dialog: Ajax Call Failure!".
On double click, the onclick on <li> tag was executed and throwing the callback failure alert which was not expected, causing the system to skip the execution of the "nodeExpandCollapse" function in TreeNavigation section. This has been fixed.
|SR-C36337||376557||Harness handling updated for PDF generation||If a PDF was generated using HTMLtoPDF activity with a section that consists of Required input fields, the asterisk symbol for the required field was displayed as text (required) in the PDF. This was caused by the harness not being properly passed to the child for the PDF generation, and has been fixed.|
|SR-C36340||386292||Fixed filter icon alignment for Microsoft Internet Explorer 11 collapsible layout grid||The Filter icon was placed at the top right corner instead of in parallel with the column header label when using Microsoft Internet Explorer 11 with a grid inside a collapsible layout if a height is given for the cell in the advanced properties. To fix this, the height will be taken from the cell when the offset height is 0.|
|SR-C36533||376349||Refresh of tab section retains focus||In a section with a tabbed layout containing several tabs, a refresh of the section shifted the focus to the first tab regardless of the current active tab. This has been fixed.|
|SR-C36622||379749||Smartinfo fires correctly when URL encryption is enabled||If Smartinfo was enabled, running a report definition worked as expected. If URL encryption was enabled, Smartinfo did not display. This has been corrected with an added check in pega_ui_smartinfo.js.|
|SR-C36692||377206||Corrected double-encoding of Japanese characters in My Team name||Creating a team from the case default portal (My Team tab) with a Japanese team name while using the Japanese locale would display correctly on the My Team list, but selecting the Japanese-named team generated a "not found" error message, and attempting to edit the team information resulted in an error and the data was not saved. This was an issue with the Japanese characters in the data-transform parameter being double-encoded, and has been fixed.|
|SR-C36705||376310||Filter indicator correctly updated for columns following virtual RD||The filter indicator color was not changing for columns after a hidden column in the RD was filtered; the results were displayed correctly, but the small filter icon was not updated with "filtered" styling (red color) but instead remained as "filter" styling (black color). This was due to the wrong column subscript getting generated for the column after a virtual RD, and has been fixed by modifying GenerategridHTML and GenerateCellContent to put the correct subscript in the filter criteria page.|
|SR-C36835||376391||Performance improvement for RetrieveReportData||Unnecessary processing on pyReportParamPageName in the activity pxRetrieveReportData was causing poor performance. This has been improved by adding a check to skip unnecessary operations in cases where the report definition is invoked from a Data page.|
|SR-C36874||382948||Target object handling updated for post-download anchor tags||Once an attachment was downloaded, clicking on anchor tags with href as "#" triggered a browser history popstate event which navigated the page to the Work List. This was due to the code fixing on an incorrect event object, and changes have been made to resolve to the correct target.|
|SR-C37168||378659||Check added to ensure autocomplete off is honored||Clicking on the Auto complete control in the Google Chrome browser automatically suggested values stored earlier. To fix this, a check has been added in order to handle browsers that do not honor the standard autocomplete value of "off".|
|SR-C37273||379523||Support added for creation of tags in local alphabets||In order to support the use of other alphabets to create tags in the KM application, validations of regular expressions have been moved from the pxCreateTag to a new activity called pyValidateTagName which can be overridden as needed.|
|SR-C37311||375813||Changed refreshSurvey to use pega.util.event to get the event object||An issue was seen where it was not possible to select an answer on a survey. This was due to Firefox not honoring 'window.event', and has been resolved by modifying refreshSurvey to use pega.util.event to get the event object instead of window.event.|
|SR-C37339||377590||Catch block added for EOF exception in Connect-REST||When running the data page with rest connector as source that invokes a Connect-REST with another service provider, the response was returned as empty. This was traced to an end-of-file (EOF) Exception generated when content encoding is gzip and chunked body is empty. To fix it, a catch block for EOF exception has been added to the copyToBuffer method so that it returns an empty byte array this case.|
|SR-C37748||379478||Connect-SOAP 'Request Only' call maps SOAP async call faults||When a failure occurs on a Connect-SOAP configured as 'Request Only' with asynchronous processing, the failure was not logged or copied to the clipboard. This was standard behavior for Request-Only, but did not account for asynchronous calls where the status code was not correct for failed calls. This has been updated to correctly register the failed calls.|
|SR-C37763||377796||UNIX JAR paths documentation correction||The documentation for prconfig/compiler/defaultPaths has been corrected as follows:
"For UNIX systems, separate the JAR files with a colon."
|Agent management made more resilient against DB connection errors||Intermittently after a database interruption occurred, agents would end up in a state where they did not run. When viewed via SMA they appeared to be running, but the next runtime was blank and the agent did not execute. Attempts to stop/restart an affected agent yielded an error, but restarting the system put the agents back into a operable state. This was a corner case caused by a DB connectivity issue where agents were first being stopped and then attempts to instantiate AgentNotification() also failed due to the DB connectivity issue. To resolve this, AgentNotification will be instantiated during AgentQueue creation itself so it will remain available. All exceptions /errors in AgentNotification will be logged.|
|SR-C38054||380396||Improved validation and handling for Cassandra data set flows||When using a Data flow which read from a file and wrote to a Cassandra data set, the successful records were not written to the Data set if there were any errors. In addition, when all records failed the run stat's '# Failed records' displayed the number of batches, not the actual number of records. This was caused by a condition where if serialization fails it throws a single exception for the whole batch instead of a batch exception, and by default there was a maximum of 250 records per batch. This has been corrected by setting the system to keep the failure threshold to 100,000 and validate that all the failed number of records is correct, then re-process the failed records and check if the dataflow still shows all the failure records.|
|SR-C38059||376811||Improved logging and resilience with S3 bucket configurations||The S3 bucket configuration through DSS did not handle error conditions well, leading to a situation where the engine would not start if the S3 bucket is not configured correctly (e.g., permission setup on the AWS side). The code has now been updated to add better logging around running a repository with DSS System, and startup is no longer stopped if a repository fails to register.|
|SR-C38060||385590||Timing resolved so pxDateTime control accepts Pega Date Time value on the first input||In Pega Mobile android client, pxDateTime that was displayed within a dateTime field using a calendar selector was throwing an error on the first encounter if the field value was already filled using the Pega DateTime format of "yyyymmddThhmmss.SSS zzz". The console error from the templating engine was: "The specified value "20180605T103556.398 CDT" does not conform to the required format. The format is "yyyy-MM-ddThh:mm" followed by optional ":ss" or ":ss.SSS". " This was traced to the handleNativeDate function in pzpega_control_datePicker.js file executing "pega.u.d.CalendarUtil.fireClientEvents(hiddenInput);" two times. Before firing the first event "onchangehandler" returned null, so the 'if' condition executed to true and fireClientEvents was again getting executed. Because there was no delay in between these executions, the second event was getting executed while the first event was still in progress, causing the DOM value of the property to not be properly set before validation was getting triggered during the second invocation. This has been resolved.|
|SR-C38087||386087||Join order fixed to improve Cache SQL Statement performance||The Pega Cache SQL Statement was taking much longer than normal to run when SQLServer 2012 was used. DBA Analysis of the issue showed that Full INDEX Scans were occurring, doubling/tripling the amount of time to respond to the PRPC instance. This was caused by an incorrect join order, and has been fixed.|
|SR-C38299||377521||Handling added for data flow thread hang||If there were errors on some partitions, the data flow was hanging. Handling has now been added for system failures in inputSource so the flow will complete and report errors.|
|SR-C38355||376510||"403 - Forbidden" error replaced with "404 - Not Found" for better security||Previously, invalid path information sent for a static content request resulted in a "403 - Forbidden" response that revealed the existence of the directory, even though access is not allowed. For better security, a "404 - Not Found" response status code will be issued for a forbidden resource.|
|SR-C38450||379292||StartupDelay parameter added to allow spacing threads to improve database performance||When starting a data flow with DBDataSet as source shape, all data flow nodes (threads) started hitting the Database at the same time, overloading the system and causing delays for other requests. To resolve this, a new RunOption has been added; pyStartupDelay will add a delay between each thread starting. For example, when setting the delay to 2 seconds, thread 1 will start immediately, thread 2 will start after 2 seconds, thread 3 after 4 seconds etc. In this fashion only one thread at the time will start hitting the DB in a distributed context.|
|SR-C38510||383350||Next >> buttons localized for French||Next >> buttons were not getting translated when using the French locale. This has been corrected by updating the pyButtonLabel parameter.|
|SR-C38824||383747||Fixed warning issue for opening a harness that's already open||When launching the harness using Harness action, there was no warning displayed when trying to open the harness which is already open. This was caused by an incorrect parameter being passed to the "showConflictDialog" method call, and has been corrected by modifying the pzpega_ui_dynamiccontainer.js file "display" method to pass "viewHost" variable instead of "hostName" as the first parameter to the "showConflictDialog" method call.|
|SR-C38825||374870||Corrected bulk actions 'select all' behavior||BulkActions:"Select All" was not considering records in all of the pages. This has been corrected.|
|SR-C38860||377053||Hotfix manager missing class handling improved||A missing class triggered a failure to open that class during hotfix scanning, resulting in an error within the hotfix manager installer which caused the schema changes to be bypassed automatically. This resulted in an error message being added to the running step page, and the activity running the scan handled the error by exiting the activity. This skipped the one remaining step in the activity - preparing the schema changes. Thus, schema changes were not installed. To correct this, during system scan error messages will be prevented on the step page as it can not be guaranteed that all instances will be available. The system also will no longer exit the activity on error as there is no specific error handling for the exit available.|
|SR-C38902||377561||Parameter added to support Hotfix manager access group||Previously, there was no provision for Hotfix Manager functionality to accept the access group as the parameter and run it in the access group context. In addition, Cloud customers were not able to specify a pega.username and pega.password. Attempting to do either of these resulted in an exception. In order to support these uses, a new access group parameter has been added to the prpcUtils.properties for manage hotfix functionality If an access group is provided that will be used; otherwise it will attempt to use PRPC:Administrators, then fallback to using the BATCH requestor’s AG (PRPC:Agents).|
|SR-C38931||382819||Corrected Listener open error when using ListenerManagement page||When clicking on any Listener on the ListenerManagement landing page, it displayed the following error page: "Unable to open instance - Possible causes may be (1) Rule may no longer exist. (2) Availability of the rule may be set to No/Draft, Blocked or Withdrawn. (3) Circumstance of the rule may be preventing access. (4) Current date is not within the date range specified in the rule. (5) Access group or role may not have the appropriate privileges to open the rule." However, the same rule could be opened from Records Explorer. Analysis found that the .pyListenerInsName property used to open the listener rule was blank in the pyListenersList in ListenerManagementPage; initialization of the mListenerInsName field has been added to correct this issue.|
|SR-C38965||378228||Hotfix Scanner updated to clarify the status of uncommitted but superseded hot fixes||The Hotfix Manager scanner identified any uncommitted but superseded hotfixes as committed even though they were not actually committed. This occurred if any part of a hotfix had been superseded and did not require the entire hotfix to be superseded. To clarify, superseded hot fixes means the system already has the hot fix installed in it. During import of new hot fixes, if it has any superseded hot fixes those hot fixes cannot be rolled back. This means if the system is scanned after the rollback, it considers all the superseded hot fixes as committed once as there is nothing to rollback. This is "as-is" behavior, but the way the information was presented was causing some confusion. In order to ensure the status is easy to understand, the metadata will be saved so that superseded but uncommitted hot fixes will not be shown as committed.|
|Mobile buttons revised to workaround iOS browser click bug||When using the iOS browser, buttons were getting stuck or frozen and requiring multiple clicks to execute. This was traced to an error in the iOS browser version 11.4 where click events are triggered with event.timeStamp as a negative number. To avoid this, the system will not rely on event.timestamp, but will instead get the current datetime and maintain it in prevEvent object.|
|SR-C3904||353053||JAWS able to read validation errors on child of modified element||After overriding some JS functions in UserWorkForm to prepend the field name to the validation message, JAWS was not reading out the validation errors. This occurred because JAWS was not able to read an alert from the child of a modified element, and a role alert has been added on the parent div to enable this use.|
|SR-C39148||379402||Custom field duplicates removed from rule autocomplete dropdown||After creating a key/value pair in the custom fields feature that is available in the "History" tab of the rule, the autocomplete displayed duplicate values if the same name was used in other section rule(SecD). In order to present a cleaner custom fields dropdown list, Embed-CustomFieldsList.pzGetCustomFieldValuesList will now remove the duplicate values.|
|SR-C39158||379163||Sorting works for calculated field grid column||Sorting was not working on a column when a date calculation function was given as a grid column sourced with a report definition. This has been fixed by adding the proper sort field in the DOM and correcting the check of pyFieldName in the gridSortpaginate activity.|
|SR-C39192||377615||pyshowFAButtons property populated on primary page||Buttons needed to finish an assignment or close a case were not visible in mobile offline. This was traced to the pyshowFAButtons property not being populated on pyWorkPage when the condition couldn't be triggered on client side, and has been fixed by modifying 'FlowActionHTML_Simple so it populates 'pyShowFAButtons' on the primary page.|
|SR-C3920||350474||HKT short code added to en_US locale for time conversions||When using the en_US locale, the time zone for "Asia/Hong_Kong " was displayed as "08:03 PM GMT+08:00" whereas for " America/New_York" it displayed as "07:07 AM EST". This was caused by there not being a time zone short code for Hong Kong in the en_US locale xml file, and this has been added so the time will be displayed as "07:07 PM HKT".|
|Interaction ID retains decimal integrity for external SOAP XML||Parse XML was incorrectly mapping numeric value to decimal property when the SOAP request was called from outside Pega. The SOAP XML contains a Pega DSM interaction ID, which is a long numeric value. During the handling the interaction ID is mapped to a decimal property, but the number lost precision and became incorrect. To correct this, the mapping has been made more precise so the integrity of the ID number is maintained.|
|SR-C39344||385447||updated archive name parameter method to ensure zip files correctly download||Multiple products could not be imported using the Product Migration command line utility, and the error "internal.archive.PRJarFile) ERROR - Unable to create PRJarFile ... (A file or directory in the path name does not exist.)" appeared. Instead of reading the archive name from PegaAccel_Management-Migrate-Target, the system was reading it from the PegaAccel-Management-Import where pxFileName was null in the DownloadZipFile activity. On analysis, it was found that first product zip file is downloaded and imported fine, but the error was received when downloading the second zip file to the target system. To correct this, the system will read the pxFileName from the myStepPage instead of pyWorkPage.|
|SR-C39372||385403||Corrected duplicate index records created on mobile||When creating cases on mobile, multiple duplicates were being created with the same time stamp due to a handling issue with the pzInskey of the case. This has been fixed.|
|SR-C39409||377586||Resolved commit error for import of blobless class data by removing unexposed properties||Import of blobless class data in to the system was failing because the system was incorrectly expecting properties related to px types, resulting in an error being thrown during commit for unexposed properties present in an external table. To resolve this, pzAddUpdatePageRecord and pzSavePageRecord have been modified to remove all unexposed properties before doing an Obj-Save.|
|SR-C39541||379148||Operator image upload persistence fixed||Sporadically, operator avatars uploaded were not successfully saved. The avatar would change on the ruleform, but after saving the avatar reverted to the default silhouette. Investigation showed this was linked to the InsKey generation, and the Data-Admin-Operator-ID.Validate activity has been updated to set the correct InsKey of the generated dci image to correct this.|
|SR-C39546||387806||Fixed Google Chrome report browser memory leak||A memory leak was seen when toggling from the report browser to a different screen in Google Chrome. This was due to an event listener holding onto a window in pzpega_browser7, and has been fixed.|
|SR-C39546||383651||Listeners added to explicitly unload windows to resolve OpenURLInWindow memory leak||Opening another domain URL's using the "openURLInWindow" API was causing a memory leak. This was traced to the beforeunload listener not being triggered by the browser, as it is a cross-site security issue. To resolve the leak, the system will handle cross domain windows by holding the window name instead of an object and ensuring it is closed during the window unload. For same domain windows, listeners have been put in place to add it to opened windows during onload and then remove it during window unload events.|
|SR-C39588||377514||Exception details and stack trace added to Bix -l||When running BIX with the -I option, it failed with the message "( internal.access.ExtractImpl) INFO - Could not open file for reading " and nothing further. In order to improve diagnostics, the system will print the exception details and stack trace.|
|SR-C39676||379470||Grid filtering "list only" option repaired||The Grid filtering "List Only" option was not working on a grid that displays a list of claims on two different screens, the range for date properties did not show up in the filter box, and the "Apply" button on the filter appeared to be disabled. If there was another column set to Filtering: "Auto", then the filter could be applied. Once a separate filter was applied, the original "List Only" filter could then be applied. This has been resolved with the addition of a typeOf check while calling Displayerrors function in csvalid.js.|
|SR-C39690||381877||New RUF added for deleting data type from CSV during import||After upgrade, attempting to use the import CSV functionality to delete caused the wizard to hang and log the error 'PRRuntimeException: Can't continue with file upload. Can't read File'. This was caused by the system using the pxHasSingleKey RUF in pzDeleteRecords to check whether or not the class has a single key, which does not work for this use case. In order to support this method, a new RUF(pxHasSingleKeyAndExposed) has been created which will check the class for single key and also will check whether it is exposed or not. This will result in executeSQLForBatchDelete API being skipped and pzCreatePagesAndImportInBatch will get called instead.|
|SR-C39747||383893||Added call to pyconvertedvalue to preserve number format in BIX extract filtering||When creating a BIX extract rule with a filter of integer property on LHS and a constant integer value of RHS which is of 8-9 digits such as "filter : salary = 100000000" , saving the extract rule converted this RHS value to 100,000,000 and the filter showed as : "salary = 100,000,000" .
In this scenario, running the extract rule generated an error in the log. This was traced to the system converting the filter value ( <pyfiltervalue> whose value is "100,000,000" ) to a number and causing a numberformat exception. This was a coding error that missed a call to supply <pyconvertedvalue>, and has been fixed.
|SR-C39791||379314||Group processing and StartDate issues resolved for Timeline controls||Two issues were seen in the Timeline control:
Issue 1: When a technician was selected who had no events, the Technician was not shown in Y-Axis (Groups were not being displayed). A blank screen was shown instead. This was caused by the a condition where an empty datasource caused createDataset to return without processing groups. This has been corrected by adding handling so the system will initialize dsArray with an empty value if needed to ensure the group related processing takes place.
Issue 2: The start range for Timeline was not respecting the StartDate given for the Events display. In this case, if either the start or end time was not available then neither was set. To resolve this, If an end date is not specified then it will be marked as the current date.
|SR-C39796||383047||Enhancement added to switch tab name localization when locale switches||When launching a Harness in a tab onclick of a link/button from a section, passing tab name as a localized field value was not working properly when switching between different locales. This was caused by the Tab name not getting updated on click on Launch harness, and has been corrected with the addition of a new parameter "bLocalize" for pzActionAppendValue to invoke getLocalizedTextForString if the parameter is true. This value will be passed as true when called from pzActionShowHarness newDocument case.|
|SR-C39815||381813||Font files updated to support Turkish characters in VBD||It was possible to use Turkish special characters in the labels of Business Issue and Groups, but VBD did not show these Turkish characters as in the screenshot. To enable this, a new set of font files with larger character sets has been added which includes the Latin-1 Supplement and Latin Extended A blocks to which the Turkish characters belong.|
|SR-C39879||384006||Automations work using property with JSON string||When using JSON to send complex data structures to an automation via a property, a special character ( ' ) used in the JSON string caused an error when trying to execute the automation from a flow action: "Uncaught SyntaxError: Unexpected end of JSON input". Analysis showed that if any relevant record had a single quote, the generated HTML of java tried to break the html data-automation-propData attribute, resulting in an exception. To fix this, the code has been updated to replace the single quote with ASCII HTML entity which will make the data-automation-propData attribute friendly.|
|SR-C3988||358537||Launched portal remains open when navigating back to originating portal||After logging into the 'Developer Portal' and then using the 'Launch' menu option to open the 'Manager' portal in a new tab, navigating to 'Manager' and changing the access role correctly caused the current tab to show the respective portal. However, after navigating back to the developer portal shown in first tab, the manager portal then closed and the developer portal was refreshed. This was a missed use case in the handling, and changes have been made in ApplicationSetup and RedirectAndRun activities to correct the issue.|
|SR-C39998||387496||Fixed incorrect report background color with Microsoft Internet Explorer 11||The background color of a report was gray instead of white when scrolled horizontally while using Microsoft Internet Explorer 11. This is a known issue with Microsoft Internet Explorer 11 when a flex layout is used inside a table: the harness width in flexresize is checking for 3000 width, and when it is more than 3000 there is a resize issue. If work area-based screen layouts are used instead of containers this issue is not seen. In order to handle the Microsoft Internet Explorer 11 issue, a flag has been added to disable the flexresize with Microsoft Internet Explorer 11.|
|SR-C40003||391481||Custom filter section submit button fixed||The Submit button in a Custom Filter section was not showing correctly in out-of-the-box report browsers. To resolve this, the pzRRDisplayCustomFilterSection harness has been updated with a new button control.|
|Corrected URL formation problem when using Tomcat||A blank screen was seen when trying to open Decision Table headers, and the color picker pop-up was blank when trying to choose a color for the skin. This was traced to an incorrect URL formed when using Tomcat, caused by the prweb/hash being appended twice in the URL. The root cause was unnecessary decoding of extURL in 'pzDisplayModalDialog' , and this has been fixed by adding the proper urlCrossScriptingFilter.|
|SR-C40033||379079||Fixed property initialization for Revision package import||The importing of Revision package was not working as expected due to an error in the Property Initialization that caused the Application version to not change on rollback. This has been resolved.|
|SR-C40033||379079||Import of revision package fixed||The importing of a Revision package was not working as expected, and the site was not able to import new revisions in revision management. This was an issue with incorrect property initialization causing a failure in the update of the access group when doing a rollback of the revision, and has been corrected by removing the Property Initialization in Activity pyRollOutToAllAGs.|
|SR-C40198||384917||Non-English characters allowed in MQ message||Connect-MQ was not allowing Russian characters for a message to the IBM MQ because non-English characters were not supported. To allow this use, the code has been updated to set headers first and then fall back to readChars method if an exception occurs.|
|SR-C40499||378119||REST mobile sync updated with exception handling and more flexible page parameter||Invoking REST service to do a mobile sync was failing with null pointer. Investigation showed this was caused by missing exception handling for scenarios where a hardcoded reference to pyworkpage in the function "pzHasOnlyClientPostProcessing" failed during sync. This has been corrected by modifying “pzHasOnlyClientPostProcessing” to add the needed handling as well as read the target page name from the parameter page and run the activity on it instead of using a hardcoded “pyWorkPage”.|
|SR-C40522||378880||Null checks added to avoid spam with bad headers creating multiple duplicate cases||Sporadically a spam email ended up creating hundreds of duplicate cases until it was removed from the inbox. This occurred when Auto Response was configured on the CITEmail listener and a case was created from the email: as the Listener failed to send out an auto response email due to the bad headers of the email, the message was not removed or marked as seen on mailbox and the Listener ended up processing it over and over. This has been resolved by adding null checks in handleStandardRequest method and sendResponseMessage method.|
|SR-C40574||383240||ValidateMaxAge parameter added for MFA OTP expiry||When trying to use the MFA feature via services, the max age was not honored. The Maximum age of a one-time password (OTP) token in seconds was given as '15' under security polices, but the system was allowing login to proceed without showing an expiry error when the OTP was input after the defined expiry time. To address this, the parameter ValidateMaxAge (Boolean) has been exposed as a parameter for sending OTP service to determine whether the token is short lived or long lived.|
|Removed cluster notification executed by the VBD client on start/stop||A cluster notification executed by the VBD client on start/stop can put unnecessary pressure on the Hazelcast cluster executor during node restarts. The system has now been modified to remove the loop during the cluster scan.|
|SR-C40587||383106||Custom CSS for hover preserved at runtime||Customer-defined CSS styles for the hover: state of a link control format in appSkin were being overridden in run time. An unexpected clipboard border page was being generated for links, and at generation of styles the system proceeded even if the value was empty or null. This auto-generated empty style came after the custom-defined styles, so the CSS parser assumed the latest style should override the custom style and would therefore remove it during parsing. This issue has been fixed with the addition of an empty value check so custom styles will be preserved.|
|SR-C40603||383184||Europe/Ulyanovsk time zone will be handled as Europe/Samara to maintain local datetime values||For some time zones, when a datetime value was provided it was changed to a default GMT value after a section refresh. This was caused by the Moment APIs utilized by Pega for time zone-based conversion on the client not including support for "Europe/Ulyanovsk". In order to work around this, if the operator time zone is "Europe/Ulyanovsk" it will be handled as "Europe/Samara" in the pzpega_ui_formatDateTime.js file.|
|SR-C40673||383958||Validation checks added to catch upgraded Application Rules with invalid characters||When a system has been upgraded from 7.2 to Pega 7.4, the Application Rule created in 7.2 can inherit characters that are invalid in Pega 7.4 such as ":". These invalid characters result in exceptions being thrown on every rule. In order to better handle this difference, the system will now validate on 'New' and 'Save As' according to the current standard of "starts with a letter and can contain letters, ampersands, numbers, underscores, and dashes".|
|SR-C40759||385658||Hover event works for modal text area||A Hover event was not working in modal dialog on a text area or text input. If a link was placed then the issue did not happen. This was traced to the console being unable to get the property showsmartinfo because it was of undefined or null reference, and the shouldIncludeSIScript method has been updated to include text input and text area in ControlsInfo to correct this.|
|SR-C40884||378655||Check added for button labels using keyboard access key markup||If a button label was configured with a keyboard shortcut in nontemplate mode, the action string was not getting generated properly. This was due to the button label using access key mark up, and has been fixed by adding a check.|
|SR-C41067||382608||Number type conversion from DSMClipboardPage matches platform page||The DSMClipboardPage implementation behaved differently than the platform page regarding converting numbers to decimal and when rounding took place. To correct this, the behavior of number type conversion from DSMClipboardPage has been aligned with the behavior from the platform page by calling an API provided by the platform.|
|SR-C41426||378692||Resolved survey userscript JS error on mobile logoff||A JS error was being generated from survey_ui_userscript_offline.js when logging out of the mobile application. This was caused by a missed null check for the QPREFPage before referencing property on it, and has been fixed.|
|SR-C41461||386651||DateTime control fixed for year selection with unlimited Date Range||After upgrade, there was a difference in behavior in the datetime control -> year range selection. With default configuration, it was possible to select a maximum of 10 years backwards and forwards, but if the Date Range option was not checked it was not possible to select any year. This has been corrected by implementing spinner functionality for an infinite number of years if the Date Range restriction is not used.|
|SR-C41540||378722||Filter indicator color repaired for frozen grid headers||The filter indicator color was not changing for columns when the header of grid was frozen. This has been corrected by updating GenerateGridHTML to generate the correct RDColumnName for freeze header grid columns.|
|SR-C41566||382974||Date Picker On Change properly triggered in Standard mode||A date selected from the date/calendar picker was not being reflected on the clipboard if there was an action - Post value (on change event) configured. When Legacy Mode was used, the clipboard was updated immediately, but when the standard mode was used the clipboard was not updated. This was traced to a non-auto-generated "Date" control not executing change events, and the function calls have been updated to correct this.|
|SR-C41775||380461||Autopopulate mapping corrected for property references created under previous system versions||After upgrade, the pzAutoPopulate information was missing when opening a work object which contained a property which referred to a data page. This caused the data page load to fail because the parameter (which was actually present on the page) did not get passed. Investigation found a backward compatibility issue that caused the autopopulation to fail in the new version: reference links were not built with the right parameter values during blob serialization because parameter information was stored in pzAutoPopulateMap (new) instead of pzAutopopulatedKeys (old). This has been corrected so the properties will be mapped appropriately.|
|SR-C42096||386832||Parent tree grid edit mode passed to generated children||Tree Grid was becoming editable when the child items were expanded. This was caused by the ReadOnly parameter not being passed when calling pzgetChildNodes, resulting in the edit mode of the parent section not being known when generating the child nodes. This has now been fixed so the edit mode will be passed.|
|SR-C42129||382150||Created-in version populated in class ruleform dropdown||In class rule form, the versions from the version dropdown were not visible after upgrade. This was due to the property pySPRuleSetName not being set on the client, and has been corrected by setting the section @baseclass.RuleFormMain and including the control pyRuleSetName_RF to populate the pySPRuleSetName.|
|SR-C42241||385882||Standard format min-height added to hold target positions||The Radio button was not being selected when clicked. Investigation showed that when the button was opened in a modal dialog the default focus was set to 'true', but clicking on it did not switch it to 'false' as expected unless it was clicked twice. This was due to a modal resize after the error message was set: since an error message pushes radio options up, the click was being fired outside of the radio option. It was possible to put in a text input with visibility as hidden to solve this height issue, but the code has now been updated to create a min-height as a standard format. This will ensure that the click is fired on the radio button even when an error message is shown.|
|SR-C42254||380800||Correct step pages set for openUrlInWindow configured inside an RDL row section||The step page when a Repeating Dynamic Layout is rendered was always the first element in the Page List. This meant that given a Page List with 3 entries: .ExamplePageList(1), .ExamplePageList(2), and .ExamplePageList(3), when the first Repeating Dynamic Layout was rendered it was expected that the step page would be .ExamplePageList(1), when the second Repeating Dynamic Layout was rendered the step page would be .ExamplePageList(2), and when the third Repeating Dynamic Layout was rendered the step page would be .ExamplePageList(3). In actuality, when the first Repeating Dynamic Layout was rendered the step page was .ExamplePageList(1), but when the second and third RDLs were rendered, the step page was also .ExamplePageList(1). This was traced to a missed use case: when openUrlInWindow was configured on a control inside the RDL row section with the "use page" setting, the pzPrimaryPage was incorrectly stamped, i.e., the step page of the first row is stamped on controls of all the rows. This has been fixed by making use of pzAuto.getUIComponentRuntime().generateActionTokenForStepPage() instead of tools.getStepPage().getReference().|
|SR-C42283||380088||Client library version will be cached for Apache use in building client-response headers||As an unintended consequence of refactoring the REST connect client code, an SQL query was being passed on every REST connect call to retrieve the version of the 3rd party client library being used for REST connectors (Apache HTTPClient 4.5.2) for insertion into the client user-agent string. The extensive use of REST connectors was driving up DB elapsed/CPU time, sometimes involving between 60-110K queries in a 60 min period. To correct this, the version info will be retrieved on the first use of ComponentsRESTClient and then be re-used for each subsequent call. This will make Apache avoid the code path that does the queries.|
|SR-C42418||385133||Enhancement added to allow multiselect input by clicking outside the area||Previously, the multi-select control would process, add, and set the value on 'enter key'. An enhancement has been added to allow setting the value in multi-select input even when the users click outside after entering a value, allowing multi-select to also work like a normal input text box. To do this, a flag has been added to not clear the multiselect value on blur.|
|SR-C42662||384508||Required flag set by passed value is maintained while toggling||When using a section where a radio button field was required based on the value of another field, it correctly showed the * indicator for required the first time but would hide it subsequent times. This was traced to client side required expressions not toggling properly for radio buttons due to class and data-class attributes missing null checks that resulted in setting null as the attribute value. This has been fixed by adding a check for the attribute value existence before toggling.|
|SR-C42732||386315||Addressed memory leak on non-optimized DSM clipboard||A memory leak was seen after setting DSM/clipboard/optimize to false and executing a DataFlow load test using regular clipboard pages. This has been addressed by disabling the inference engine on the input thread of the DataFlow.|
|SR-C4280||349923||Template fixed so JAWS reads menu name when an image is used||When using template mode, JAWS was reading the image src text for navigation menus configured with an image on them. This was caused by the role="link" aria-haspopup="true" being wrongly generated on the <img> tag, and has been fixed by updating the template file to generate the role only for an anchor tag and not on img.|
|SR-C42819||382453||Enhancement added to configure location for data import error CSV file||An enhancement has been added to allow the Data Import Error CSV file location configurable through the addition of the property pyErrorFileStorage. This property needs to be set before the input process is started and supports only filespec syntax. It should contain the fileStorage location like file://defaultstore:/ , file://amazons3:/, etc. The value can be set to any of the available repositories and the error file will be placed accordingly in the respective repository. This process is more flexible than DSS, and allows the site to configure different locations for different imports in the same application. If no value is passed to the import process, Defaultstore will be used.|
|SR-C4290||347477||Reduced redundant reads of work objects during CheckLockingMode||In analyzing captured Trace data, it was noted that there were several redundant reads of the work object, including within the pzCheckLockingMode activity. In order to avoid unnecessary opens of Work objects in pzCheckLockingMode, it has been modified to conditionally open the Work object/Cover object.|
|SR-C4302||353303||JAWS correctly reads date label only once||If a section was created with a date field and a label, JAWS read the Date label twice in calendar display mode. This was due to there being a <label> associated with the date-time control and then the aria-label was being added as part of the helper text implementation. To resolve this, the aria-label will be removed in non-template, and but in template only the label for the text in the aria-label attribute will be removed.|
|SR-C43094||381968||Fixed system repopulating emptied PageList in cache||While removing all items from a pagelist within a work object in the client cache, pagelist.remove(index) is called to perform the work After syncing to the server, all items unexpectedly returned to the page list. This was traced to the 'getDiffSnapshot' method in process_engine-js skipping empty array properties and not adding them to the diffSnapshot, causing the data to be restored during the sync merge process. To resolve this, if the updatedWorkPage is emptied, it will be set to an empty array. If a property of type array is found, the system will iterate over the updatedWorkPage and populate the pyWorkPage.|
|SR-C43333||385835||Purge/archive locking issue corrected||Updates have been made to resolve a locking release issue for the pzBatchPurgeArchive activity.|
|SR-C4350||348583||Copy/select works for WorkList/WorkBasket grid in Microsoft Internet Explorer||When trying to select any values present in Worklist and Workbaskets when using Microsoft Internet Explorer , the message ‘Transfer this assignment’ appeared. The selection worked correctly in Google Chrome. The root cause for this issue was traced to the different DOM structure generated in Microsoft Internet Explorer and Google Chrome, and it has been corrected by updating the non-autogenerated control to create consistency across browsers.|
|SR-C43718||388308||Repaired wrap text in first column of tree grid||The Wrap Text for the first column in a Tree Grid was not working. This was an error introduced during grid CSS optimization that caused white-space: normal to be overwritten by oflowDiv styles. The code for the sector has now been updated to ensure that white-space: normal style is applied for the first column of the tree-grid.|
|SR-C43831||383613||Updated data retained when form error is encountered during offline application validation||If a hard edit error message appeared during validation in the offline mobile app, changing the property value and syncing resulted in only the old data being retained and not the new. This was due to missing handling: when a form error was encountered on the page, diffSnapShot was updated with the recent changes but they were not added to the action queue. When the form error was corrected and resubmitted, only the new diff changes were sent to the action queue and the earlier changes were discarded. To correct this, the algorithm has been modified to perform the diffing for the workpage snapshot during record action, instead of during the mergeWorkAndForm.|
|SR-C43905||387467||Locale will be considered while validating imported decimals for the clipboard||When using a specific locale and importing decimal value in a format specific to that locale, the import wizard was throwing a bad decimal value error If 'skip validation' was unchecked during import. To resolve this, the locale will be considered in parsing the decimal value while populating the clipboard page prior to dictionary validation.|
|SR-C44194||383066||Cursor pointer corrected for non-interactive grid cells||When the mouse cursor was placed over any cell in a grid, the mouse changed to a pointer indicating an activity even when there was no activity to perform. This was an error introduced when the grid CSS was refactored and optimized: the hand cursor should only be used for interactive elements and causes confusion when displayed on a static table. The behavior has now been reset and will correctly detect whether actions are configured and display the proper cursor.|
|SR-C44375||387180||Check added for multiselect object type when using Microsoft Internet Explorer 11||Using the multi select control worked fine in Google Chrome but was throwing JS errors when used in Microsoft Internet Explorer 11 and causing the whole flow action to hang. Object.keys on a non-object throws error as per ES5, but on ES6 a non-object argument will be coerced to an object. This error was seen because the older version of Microsoft Internet Explorer still uses ES5. To better handle this, the system will check for the object type before using object.keys in pzpega_control_multiselect.js.|
|SR-C44701||389484||The flag internNsUris set to 1 to handle 3rd party XML parser cache access||Heavy thread contention was seen over an internal cache when using a third party stax XML parser. Because the parser interns namespace strings, which is a synchronized cache, quite a few threads were spending a significant amount of their time blocked. The flag internNsUris comes from a “config” object, and the config flag will be set to 1 to resolve the issue.|
|SR-C44707||384115||Leading/Trailing 0s retained in Export to Excel||Leading/trailing 0s were lost from text after export to Excel. This was traced to ReportUIField.getReturnObject treating the text type as number type if and only if the text property holds numeric content. To correct this, ReportUIField.getReturnObject has been modified to set the datatype to String if its a text type.|
|SR-C44806||385906||pxLOADPortNames properly passes ServiceQName||Changing the value of service name in create SOAP integration wizard was not returning list of operations. Analysis showed that in pxLOADPortNames activity(step3), the current ServiceQName was not passed to the wsdlParser object, resulting in a null pointer exception. Code has now been added to ensure ServiceQname is set as the current service in pxLoadPortNames activity.|
|SR-C45058||385602||Added menu scripts to ensure Operator menu shown when PortalHeader is saved to the application ruleset||The Operator menu was not working, after saving pyPortalHeader to application ruleset. The following error is observed in the console: "Uncaught TypeError: Cannot read property 'showContextMenu' of undefined". This was traced to the menu files not being downloaded because of a generation issue that occurred when only one control (non auto control) was used with menu actions inside a dynamic layout. When a autogenerated control was used like a button, it worked. This has been fixed by adding menu scripts for use when pyactions has a showmenu.|
|SR-C45147||388413||SOAP service encryption error fixed for Java 8||The error "Unable to initialize XML Cipher" appeared in the PegaRULES log when using Java 8 and trying to invoke Pega SOAP service from the SOAP UI with "Enable ws security" checked. To fix this, the webservices-rt-pega1.jar has been updated to use an overloaded constructor of XMLCipher that takes canonicalizer as the second argument.|
|SR-C4526||351611||Explicit validation call added to subtree expansion to update declare expression targets||When a declare expression changed a value in a tree grid, the tree grid element did not show the new value until the section was refreshed. This was an issue with declare expression targets not registering after subtree expand, and has been corrected by adding a call to the validation_init() API.|
|Improved XML security for POST request processing||Updates have been made to resolve a potential security issue involving missing XML validation when processing a POST request.|
|SR-C45276||383709||Placeholder set value shows in accessibility mode dropdown||When a drop down was configured with a placeholder in accessibility mode, the set value was not working. This was an issue with the handling of the onchange event in the accessibility framework, and code has been added to resolve this.|
|Cleanup added to DDS service shutdown||When prpcUtils is executed it starts DSM services in client mode when a DSM node (DDS) in the cluster is running. However, DSM threads do not shut down when the utility class completes, causing the Import task to hang. To prevent this, cleanup implementation has been added to the DDS service shutdown.|
|SR-C45602||384972||Avoid Generation flag will default to true for single case runs to avoid excessive data class hierarchy validation||System slowness was traced to an excessive number of calls to the DDS service “getClusteState()” method. This issue was caused by an unusual usage of class hierarchy, where XXX-Data-Customer class had data flow and activity defined, then an activity instantiated a child class (e.g. XXX-Data-Customer-NBA) and tried to load an instance of this class using the data flow browse by keys operation. In this case, data flow had to do additional validation to make sure all data sets used in the data flow are compatible with the child class, and it was this validation that caused the reported issue. To better handle this use case, by default the avoid generation flag will be set to true for single case runs.|
|SR-C45610||384507||Resolved screen flicker during busy indicator||When using the column layout in CPMPerformIncludes, the contents flickered and shifted to the left while the busy indicator was displayed (performing actions like interaction switch, service case closure etc.). This was caused by the column layout main getting resized while the sidebar is hidden, and a check has been added to pzpega_ui_doc_lifecycle that will avoid resizing in case of a hidden element.|
|SR-C45673||391239||Behavior changed to use latest metrics when when decisioning metrics cannot consolidate them||Component stats were not showing up on Select Designer Studio ->Decisioning ->Decisions -> Data Flows -> Real Time data flows. The shape metrics on a data flow run appeared to be reset and not processing any records anymore. The problem was that metrics from old nodes (which have become incompatible with the current data flow shapes) were merged in an indeterministic order which caused the old metrics to replace the new metrics on the data flow run progress page. This gave the impression that the data flow shapes were not processing any records anymore. The behavior has now been changed such that when the system merges metrics and cannot consolidate the metrics that are being merged, the latest updated metrics will prevail as opposed to the previous behavior of the 'second' metrics prevailing. In addition, whenever metrics are reset because the data flow has changed or metrics from old nodes cannot be added to the current metrics, a warning will be added to the run to explain the change in metrics of the shapes.|
|SR-C45786||384511||WO details saved to D_pyUserWorkList when finishing assignment offline||When using the mobile app in offline mode, creating a new case and submitting it while offline saved the details in the WO. However, when trying to display the cases which were submitted offline there were details that needed to be shown but that were not updated in the D_pyUserWorkList until after synchronization. This caused WorkList to not show the data updated in newAssignPage and pyWorkPage when moving to the worklist after finishing the case. Previously, the updateWorkJoinProperties method of AssignList_Utils was setting pyCompletedOffline to false by default when it was called from saveWorkAndAssignment method. To ensure the data needed is available, the system will put work and assignment properties into D_pyUSerWorkList item for every finishAssignment by calling updateWorkItemInAssignmentList from saveWorkAndAssignment.|
|SR-C45807||384867||pyLabel will be truncated at 64 characters in the pyAttachApprovalEmail activity||The pyAttachApprovalEmail activity was throwing the below error when trying to process an email response : "Trying to save an invalid page: page is not valid .pyLabel: "Incoming Email Message from [email protected]" is too long, maximum length allowed is 64"
This was due to the maximum length restriction on the field pyLabel: in step 2 of activity, the pyLabel was set to ""Incoming Email Message from " + Param.EmailFrom", and the pyLabel restriction of 64 characters generated the error while saving the rule. To handle this case, the pyLabel value will be truncated at 64 characters before saving the Data-Corr-Email instance.
|SR-C45809||386541||Age calculation declare expression fires correctly the first time the input changes||When using a Date control field with display mode as drop-down lists with a declare expression for calculating the age whenever input changes, the age was not being calculated the first time the field was changed. Subsequent changes worked as expected. If the display mode was textinput + calendar in that scenario, the declare expression fired every time. This was traced to the hidden input missing the onchange handler to trigger calculateExpressions, and has been corrected by attaching the validation function using validation_validateFromUIEvent in 2 methods: handleDPDropdowns and populateSubmitableField.|
|SR-C45846||391842||Improved handling for parsing multiple formats of DateTime||In order to further correct an issue with DateTime formats, the system will now use the parseAsDateTime and parseAsDate functions to properly handle the parsing of the date and date time values. The Pega format will be tried first, and if that doesn't work then the UTF formats will be used. If there is still an issue, the system will call back on the original parseAsXSDDateTime/Date which should catch all cases. An exception will no longer be thrown until after all parsing methods are tried.|
|SR-C46216||390637||how Subcase checkbox behavior corrected||When the Show Subcase checkbox in Audit tab was unchecked, the child case history was displayed when it should not have been. This was caused by the List view not being filtered out to remove sub case data when the checkbox was invoked; to correct it the system will call LV pyWorkAttachmentList to get attachments for the parent only in the initial load, then will call another LV pyCoverAllAttachmentList to get parent and child attachments if Show Subcase is checked.|
|SR-C46283||385488||Documentation update to clarify schema names should be all lower case||When installing onto a system with a PostgreSQL database, the install script failed if the schema names had capitals in them, showing "ERROR: schema "pegadata" does not exist". This was due to the mixed case schema name being altered to all lowercase, so calls to the database fail due to the mismatch. In order to clarify the input needed, the PostgreSQL topic in the documentation has been updated to say : “Enter the schema name in all lowercase letters. PostgreSQL requires that schema names are all lowercase. Enter the schema name only in lowercase letters without quotation marks, or the deployment might not be successful.”|
|SR-C46503||386009||Added null value handling for Date/Time||A null pointer exception when trying to Save an empty record into a Date/Time Field. To resolve this, empty string value handling has been added for the date/datetime/time property in both CSV and JSON files, and a more informative exception message has been added for situations when the date can not be parsed.|
|SR-C46720||386889||Back button in mobile screen flow retains entered data||When navigating to an earlier step using Back Button on ScreenFlow via Mobile App, data was lost. This was traced to a call mismatch: rather than using getElementsByName, the system was calling a function that used getElementByName. This caused an exception and resulted in the form not being properly merged with the work page, leading to data loss. To correct this, the getFormJSON method has been changed to properly use getElementsByName for this function.|
|SR-C46793||385886||Logoff from all portals in a Mashup fixed||The logoff command was not logging the user off from all of the mashup portals. This was due to homeurl not being stored properly in mashup use cases, and the logoff URL has been updated to correct this.|
|SR-C47022||388398||XSS protection added to TopHarness query string||When the topHarness query string parameter was provided with a request to Pega, its contents were written to the HTML stream without HTML-encoding the content, creating a Cross-Site Scripting vulnerability. To improve security, the “topHarness” value will be encoded using com.pega.pegarules.pub.util.StringUtils.crossScriptingFilter API in pzClientDynamicData.|
|SR-C47024||386882||Support added for specifying single or multiple custom directories for DDS||Previously, Pega always checked free space in a default location. This caused confusion and misleading Pega0085 alerts related to the expectation that free disk space for DDS would instead be checked in a directory specified via prconfig. The system has now been modified to check free space in one or more custom Cassandra data directories configured as comma separated strings in the following prconfig settings: dnode/cassandra_data_directory, dnode/yaml/data_file_directories. The above settings will use Disk health check. In the multiple directories setup, an alarm will be raised when the disk usage threshold is crossed on each disk. Support has also been added for backing up multiple data directories.|
|SR-C47580||386951||Assertion Type results count updated to allow input of filter class for validation||When using the assertion type result count and trying to validate a property in pxResults class, it was not possible to save the test case. This was due to the system trying to validate the class in a rule under test class and not pxResults class. To fix this, the AUT rule form has been updated to show the filter class filter class text box so that when no class is been populated the filter class can be entered to enable selecting the properties from this class inheritance.|
|SR-C47733||389568||Handling added to maintain grid size when resize is run in a hidden DOM||Grid layout height was getting set as 2px after opening a work item. This was traced to Grid height being reduced when the grid is in a hidden DOM and the resize handler was fired after a new tab was opened, making the grid content not visible. To correct this, a check has been added for contentHeight to avoid setting zero height when this code is run in hidden DOM.|
|SR-C47868||391533||Corrected code error in executeMBeanOperation||An null pointer exception was generated while trying start listeners from executeMBeanOperation. This was due to an error in the code related to String names in ListenerManagementAPI, and has been fixed.|
|SR-C48084||388816||Repaired Activate Feature in revision management||After creating a revision package jar and importing it into the environment, attempting to Activate the revision to the users resulted in the error message "There are changes from another session. Replaced with latest revision data." This issue was traced to an error in the pyActivateToAll activity from Pega-DecisionManager:07-10-31, and has been fixed.|
|SR-C48633||390528||Missing rules will be inserted into pr4_rule_vw table||On running ExposeCols from prpcutils, if pr4_rule_vw table was truncated or had some rules missing, then the records were not being updated. Logging indicated there were view rules which were present in pr4_rule_vw but not present in the actual class, causing a duplicate key exception when the system tried to insert the same rule again into the pr4_rule_vw table. Previously, ExposeCols functionality always updated the rule record and its corresponding Data-Rule-Summary record but would never insert a new rule or Data-Rule-Summary record. This meant that if the pr4_rule_vw table was truncated before running the column expose, none of the rows were getting updated as the table was empty. To resolve this, if the rule is missing in the pr4_rule_vw table, insert queries will be executed and the rule will be populated in the corresponding Data-Rule-Summary record.|
|SR-C49089||388092||File input handling added to trigger file browsing popup||When the 'Browse' icon received focus in the operator ID rule with tab navigation, pressing the 'Enter' key did not open the file browsing popup. This was due to the Enter event not working with file input, and a check has been added for file input in pzega_ui_events to allow it as an enter key event.|
|SR-C49097||389781||Added missing tooltips for JAWS to read "+" and other buttons in Operator ID and Access Group rules||A few buttons like "+", "Open", etc., were being read by JAWS as unnamed buttons in operator ID and Access Group rules. This was due to missing Tooltips, and has been corrected.|
|SR-C49124||391107||Resolved null stream error on mobile||When clicking on certain events quickly one after another on mobile, the error "Failed to load stream: null" appeared. Analysis showed ActionQueue has timeout logic which unblocks the Queue after 2 seconds. Due to this, the next action in the queue was executed before the first one was done and ended up modifying the variable of the first action. To resolve this, the timeout has been removed and pega.process.engine.ActionQueue.complete(); will be called as required.|
|SR-C49133||387543||Scheduletaskprocessor amended with exit activity to release locking||Scheduled guardrail reports were not emailed, and exception appeared regularly referencing "Error locking scheduled task : PX-ST-1 close scheduling window to release lock." Investigation showed the activity pzscheduledtaskprocessor was lacking an "Exit Activity" condition, and this issue has been resolved by updating the activity step to check for proper activity exit.|
|SR-C4920||347563||Grid Header checkbox behavior modified for consistency||Unexpected behavior was seen when clicking on the Checkbox present in Header: all other checkboxes changed their state (which was expected), but if the the Readonly checkbox was checked it was also changing the state the first time (which was not expected). After this first state change, the read-only checkboxes were not changing state (which is correct behavior).
Previously, the behavior of Select All / CheckAll checkboxes was as follows:
If the SelectAll / CheckAll checkbox is checked
- Individual checkboxes are checked only when they are NOT disabled
If the SelectAll / CheckAll checkbox is unchecked
- Individual checkboxes are unchecked irrespective of their DISABLED state
The behavior has now been changed as below:
If the SelectAll / CheckAll checkbox is checked
- Individual checkboxes are checked only when they are NOT disabled
If the SelectAll / CheckAll checkbox is unchecked
- Individual checkboxes are unchecked only when they are NOT disabled
|SR-C49274||388984||Expiry dates displayed in Authentication Service Rule SSO certificate||Inconsistent behavior was seen in the Authentication Service rule SSO certificate expiry information between Pega versions. Previously, the system displayed Expiration Dates on the Authentication Service rule form after selecting the signing/decryption certificate, whereas after upgrade the expiry dates were not getting displayed. This was an error resulting from enhancements made to support different keystore types (Upload, File Reference, URL Reference, Data Page source) and introduce Keystore cache: during these modifications the "pzGetCertificateExpiry" activity was not modified to get the certificate from Keystore Cache instead from DB. This has been fixed.|
|SR-C49837||388774||ListName now available as drop down option for Cassandra Connect method parameter||An enhancement added to allow the Cassandra Connector GET operation to return multiple rows by querying on clustering keys and/or secondary index was missing the ability to use pyListName as a result page parameter. This has been corrected.|
|SR-C49906||389638||Unreachable nodes kept on the services landing page for clarity||Trying to start or create and start a Capture Activity DF was failing with a timeout error because the services landing page did not display a node if it was not available on pr_sys_nodes table (which can be the case after cleanup or truncation of that table). This created conflicts on stream service since it acts different on different numbers of nodes being available. To fix this, the system has been modified from relying on the sys_status_nodes table to get information about unreachable nodes to instead now assume it used to be a service node if it's on the list of nodes. and keep the unreachable status.|
|SR-C5022||354557||Check added to Optimized Locking for assignmentkey||When two users tried to acquire an assignment at same time in a system using Optimistic locking, an assignment processing error occurred. This was traced to the assignment key validation not being done while checking for ValidAssignment. When Optimistic locking is used, a prompt is shown to the current user working on the assignment if another user opened and worked on the same assignment simultaneously. A refresh button is shown to resolve conflicts and show the review harness. Existing logic takes care of completion of an assignment, but in this case the assignment is the same but has moved from workbasket to worklist. On click of Refresh, 'RefreshOnConflicts" is checking with the existing change logic and since assignment still exists it was trying to preformAssignment with the old assignmentkey(workbasket) which is not valid. To correct this, a new condition has been added to RefreshOnConflicts in the Pega-ProcessEngine ruleset to check if existing assignment is valid or not. If it's not a valid assignment, the system will open the review harness rather than processing the assignment.|
|SR-C50325||390099||null pointer exception fixed for clearing table column filters||A NullPointerException was generated when clicking on the Clear Filter link after filtering a column in a table. This was traced to an error in the pzGetGridColUniqueValues step 4 'when' condition that caused it to always be false. This has been fixed.|
|SR-C5053||353680||Static assembly will exclude withdrawn rules||When performing the Agile Studio installation step of running the static assembly, there were 20 rules that failed to build. The log file showed a number of rules that were withdrawn that were being selected for assembly in ApplicationAssembly, and this was traced to the SQL query used to gather the rules not excluding rules with an availability of "Withdrawn" or "No". This has been corrected so withdrawn rules will not be selected.|
|SR-C50636||389298||JSON data flow export updated to not include pxObjClass||Previously, the Data set used to provide option to select which properties should be populated in the JSON file. This option was removed recently, but when Convert Shape was used in the data flow to populate only required properties, the pxObjClass was is always passed to the JSON file and caused an error with the consuming application which was not able to support it. To resolve this, the pxObjClass attribute will be excluded from JSON export for HDFS and File DS, and an option to exclude a set of properties was added to ClipboardPageJsonConverter.|
|SR-C50728||391340||Added handling to save page list properties of all text||After creating page list properties to display the text input on a case, the input data was not saved properly If all the page list properties were text. Investigation showed that instead of saving the entered input, the system was saving the last property value to all the fields from the pagelist because the "pyCellId" being generated was the same for all the cells in grid row. This has been corrected by setting the pyCellId to pyFieldId from the Embed-Field object and using the unique hash for pyFieldId that is set so that they match.|
|SR-C50990||391318||Bypass added to handle custom S3-compatible repositories||While saving a newly created S3-compatible custom Data-Repository rule instance, the exception "Save failed - Unknown Repository Type :Embed-Repository-Type-Custom-S3Compatible" exception was generated. This has been resolved with the addition of the proper bypasses so custom repositories are not registered the same way as standard ones.|
|SR-C51065||390587||Corrected unexpected date error for imported propositions||While importing a proposition with a specific start date and end date, even though the start and end dates are valid the error: "Start date should be prior to end date" appeared. This has been corrected with code that will convert the start and end dates before comparing them in pyPostCSVUpload activity.|
|SR-C5133||375547||Corrected Decision Data import handling||Import in Decision Data was modifying propositions at unexpected times:
Scenario 1: Export the Decision Data and Import the Decision Data without any modifications. In this case the updated by column was getting changed.
Scenario 2: Export the Decision Data, modify single record in the file and import the Decision Data. In this case the updated by column for all propositions was updated instead of updated by column for a particular row.
These have been fixed.
|SR-C51670||390540||Delta sync handling updated for cases in multiple workpools||When trying to open work item in mobile offline mode, cases that belonged to multiple workpools were causing delta sync issues. During deltasync, the system tries to package the work items and ASSIGN- by check running pzGetWorkObjDataFromAssignment RD. However, this RD runs only in the context of the current workgroup name set on the pxThread page. To correct this, the system will get all of the workpools from the worklist item page's pxRefObjKey and run the RD on each workpool to return the proper results.|
|SR-C5169||349818||Tabs maintain state when new RDL item added||Adding a new item to a repeating Dynamic layout switched all the currently selected tabs in an embedded Tab Layout Group to be the same as the last item. This was an issue with complex configuration RDL having another repeating layout (DLG) with an active 'when' based on repeating context property, and code has been added to handle the previous selected tab state and active when so tabs will retain integrity.|
|SR-C5215||357353||Added code to support Sybase DBs in report definition||Running a report definition that is connected to a Sybase database produced no results in the report browser. This was an issue with the column delimiter not working for Sybase; to resolve this, the code has been modified to rely on the database type rather than the getColumnDelimiter method.|
|SR-C5234||360596||openIfStale() AP updated to ensure aUnlockOnCommit flag is honored||Resolve- Pega-ProcessEngine:07-10-26 (Final out-of-the-box) was acquiring a lock on case but not releasing it later due to Opener not properly honoring the aUnlockOnCommit flag that was passed in via the openIfStale() API. This meant the the database value was always taking precedence over the passed-in flag. To correct this, the openIfStale API has been updated to remove a problematic "else" case. In addition, the system will check whether the lock is available in the map already: if it is, it will set unlockOnCommit to true, or otherwise, under all cases, honor the passed-in unlockOnCommit value.|
|SR-C53091||391230||AddOnly bulk import correctly does not check for existing records||When doing an extremely large bulk import using Addonly, the import API code was performing an existing record check when mapping pagelist properties. This was not the expected behavior, and has been corrected by updating the import java code.|
|SR-C5318||388898||Silverlight digital signature updated||Silverlight Prerequisites have been updated with the latest digital signature.|
|SR-C5347||352087||Catch added for trailing backslash in case pyLabel||Case pyLabel properties with a trailing backslash were failing to render in the UI. To correct this, a try catch and proper escaping have been added before the evaluation.|
|SR-C5569||356377||Fallback method added to handle non-Java SQL timestamps||After the pxCommitDateTime was added to a Business Intelligence Exchange (BIX) extract rule, the property was not extracted in the BIX output. This was traced to the getObject method returning a type of oracle.sql.timestamp when the system was expecting the getObject method to return a java.sql.timestamp. To handle Oracle or other databases that return a non-java SQL type, the resultset metadata will be used as a fallback method to return the java SQL datatype needed.|
|SR-C5608||351744||Configuration for Decision Analytics Settings can be saved||A change made to the default Database for analytics from "Decisioning > Infrastructure > Analytics Center Settings" was not getting saved due to the checkbox for posting the data being enabled which restricted the changes in the saved data. This has been resolved by unchecking the condition to refresh clipboard data on submit after editing the DB configuration.|
|SR-C56144||394014||Keep-alive HTTP headers support added||Long routing latencies to the stream tier were observed, and logging showed long times in the routing to the target of 50ms to 1 second. The Stream data set REST endpoint closed HTTP connections after every message, making it impossible to reuse connections and resulting in an overall slowdown of throughput of the system. To address this, keep-alive HTTP headers support has been added so clients can reuse connections and increase processing throughput.|
|SR-C6165||353439||Block trimming fixed for rules with '@'||While upgrading a rule from old version to new version some of the information was getting trimmed during parsing, resulting in a save-as error. This affected expression with syntax that included a leading '@' sign, including @(NPSPlusFW:NPSPlusUtilities).SIAppRateLookup(tools, myStepPage, .InquiryAmountCurrency, .InquiryAmountBaseCurr) is getting trimmed to .SIAppRateLookup(tools, myStepPage, .InquiryAmountCurrency, .InquiryAmountBaseCurr). This has been fixed by preventing the trimming of the block.|
|SR-C6360||358392||Performance improvements for hotfix installations||Hotfix installation was hanging at the 'Catalog.getRemovedJars' call, a performance issue which was traced to the string comparisons performed in order to identify the removable jars in a hotfix. Previously, the logic did not consider ignoring the comparison of already identified jars, resulting in running unnecessary comparisons. To improve performance, the system will cache the result of getRemovedJars for a specific product/version pair to help reduce unnecessary comparisons.|
|SR-C6567||352049||Enhancement added to customize Cassandra consistency level||Inconsistent results were seen when the Cassandra database was queried from the Connect-Cassandra integration connector ruleset. During the queries, data is collected from different systems and loaded into the Cassandra database. If there is a distributed architecture, there is a risk that not all replicas will receive all the insert/updates at the time of the data load for any number of reasons (node down, node overwhelmed, network, etc.).
With the default of consistency level 1, the Pega Cassandra query may hit a node that is missing the data requested. However, consistency level 2 forces Cassandra to read matching data from two nodes and in the background will perform a read repair on the node that is missing data. In order to enable the setting of a preferred consistency level for all connectors and for all operations, a new single DSS setting has been introduced:
|SR-C6572||363801||Updated DesignerStudioHotKeySupport to ensure Harness messages are preserved and displayed||If LiveUI was hidden on a manager portal, the generated Harness level messages were not shown on the screen. This was traced to pega.desktop.preferences.initKeyBoardPrefs being called on load, which was erasing the errors. To resolve this, pzDesignerStudioHotKeySupport.js has been updated to ensure the messages are displayed as expected.|
|SR-C6595||351217||Handling added for empty Dropdown placeholders||When a field value was referred for a place holder of a autocomplete, at runtime it varied whether the place holder or the property name was displayed. This was traced to the handling for an empty currentContext.getLocalizedValue; the actual value was being passed if there is no corresponding entry in the context tree. The system has now been modified to avoid a call to the pega.clientTools.getLocalizedTextForString API if the property name value is empty.|
|SR-C7090||352067||All date-time formats available on DateTime control||When attempting to create a new Control rule which will display DateTime in a selected Date Time format, the error "Cannot create format "DateTime-Short-Custom", default format is used" appeared. This was traced to the generateformat RUF calling an old FormatDateTime RUF that did not contain the code to handle different date time patterns. To correct this, the pzGenerateFormat API has been updated to call the latest FormatDateTime RUF with four arguments so that the respective code will be generated to handle different patterns.|
|SR-C7207||362303||Hidden grids will not be resized||Branches were disappearing after toggling the tabs if defer loading was enabled. This was caused by the resize grid action being triggered and resizing hidden grids. To fix this, the system will now only resize the height of the grid if it is not hidden.|
|SR-C7302||350399||Column borders properly aligned with header columns in grid||With fill set to 100% and fixed height, the column borders in repeating grids were misaligned with respect to column borders in the header. This was caused by the scroll header generation code kicking in even when the Grid’s layoutwrapperdiv doesn’t have a scroll, causing misalignments. This is now fixed.|
|SR-C7627||353279||Fixed grid table overlap in Pulse for Microsoft Internet Explorer||Grid Table was overlapping with the content on the right in the Pulse area when using Microsoft Internet Explorer . To resolve this, code has been added to handle grid flex resize code by modifying the harness width when using Microsoft Internet Explorer .|
|SR-C7680||360271||Fixed old errors being read by JAWS||An accessibility change made to move focus to the error section even with a "simple" refresh was resulting in JAWS reading out old error messages even after validation errors were corrected. This was due to the error table still being present on the DOM (just with a display set to none), and has been fixed with a new aria-hidden attribute that has been added to the error table and set to true when the table is hidden. When the table is displayed, then the aria-hidden attribute is set to false.|
|SR-C7762||350154||Commas removed from filter values to resolve validation errors||When using a Grid layout configured in a section rule, clicking the Filter option and entering a comma separated value in the "To" field in a decimal-type column resulted in an "Invalid numeric range" option message. No error was seen if comma separated values were entered in both the "To" and "From" fields. Because the checkRangeFilter() function in ui_grid.js uses parseFloat() API to extract the decimal content entered in the search boxes, decimals after commas are ignored and validation failed due to the fields not matching. This issue has been fixed by implicitly removing any commas entered by the user.|
|SR-C7849||352811||Fixed wizard REST connecter creation error||Attempting to create a REST Connector through the wizard was throwing a null pointer exception due to code which was setting Index twice for same name property class. This has been corrected.|
|SR-C8312||358397||Open URL in window maintains context||The on-click of a tablegrid where a Report definition is rendered on this grid was configured to open a URL in a window and call an activity named DisplayAlert. This worked fine if the DSS value DATA-ADMIN-SYSTEM-SETTINGS PEGA-ENGINE!PRCONFIG/INITIALIZATION/URLENCRYPTION/DEFAULT is false, but did not work if the DSS value was set to true. This was traced to the event infrastructure not resolving the Property references in the encoded URL context, and the pzpega_ui_events.js file has been modified to maintain the references.|
|SR-C8352||358657||Added aria support to read radio buttons||In order to ensure JAWS reads radio buttons, ' aria-required true' has been added to them.|
|SR-C8399||353551||Tab closing problem fixed for multi-node environments||An error in the code for pega.desktop.support was causing 'isSafeToAskParent' to be invoked even in non-mashup/IAC scenarios, leading to it returning "false" in multi-node environments where the port number was not one of 80 / 443. This in turn caused a failure to properly close a tab on the customer system. To correct this, the code for the pega.desktop.support.isSafeToAskParent call has been updated to skip it for non-mashup / gateway scenarios.|
|SR-C8725||351894||Check added to ensure pyRuleSetName is not empty||An extra condition has been added to the existing db-query which checks if a ruleset is locked to now also ensure pyRuleSetName is not empty. This will prevent a blank ruleset value from being passed in.|
|SR-C8735||356715||Updated log error for hotfix commitment fail||If no catalog file is found after committing hotfixes, the System Scan fails with no error message to the user even though the display of Committed/Uncommitted hotfixes is not updated properly. The message "Could not run System Scan - there is no Catalog on the system" appeared in the logs after the list of commits, but it was not clear what this indicated. The wording of the logged error has now been updated to clarify that the Committed/Uncommitted list of hotfixes has not been updated.|
|SR-C9001||353898||Column alias checks added for import||As a followup to a corrected issue for an export not including a column alias list, an import missing a column list alias has been fixed as well. The code will check for the presence of aliases, do a pattern match to check if aliases exist for view, and if they are found then aliases will be added for view generation during the import process.|
|SR-C9139||352594||XSS filtering added to searched filter values||ListViewHeader has been updated to apply XSS filtering to searched filter values.|
|SR-C9145||355278||DNode dataflow generation exception changed from warning to FAIL||The DataFlow-Execute generated code has been updated to create a PRRuntimeException in case of error so the activity step will change its status to FAIL instead of warning.|
|SR-C9313||355576||Data-schema-only upgrade fixed to include operator upgrade||After encountering issues accessing an application, Update Existing Applications had to be run from the wizard after upgrade even though it should have run by default when doing this type of upgrade. This was traced to an implementation error in the data-schema-only upgrade activity which accidentally omitted the operator upgrade step, and has been fixed.|
|SR-C9426||350602||BIX extract rules preserved during bulk check-in||BIX Extract rule filters were being stripped off on bulk check-in. This was due to the pyRDPage which was used for holding the filter conditions in the extract rule not being present in the thread performing bulk check in, and the issue has been corrected.|
|SR-C9536||354488||Check added to ensure fresh app data for delta sync||When the application data was updated on the web (server side), the changes were not reflected on the phone app (client side). When an application login and delta sync were performed on the mobile device, the changes made on the server side still did not show up. The changes made to the web application did show up if the mobile cache was cleared and a new login was started. This issue was traced to an implementation error where an editable data page once loaded on clipboard was always packaged as-is even when things had changed in the DB. To correct this, a check has been added to remove the stale datapage and fetch a fresh version when doing datapage packaging in pzDataSyncPackager.|
|SR-C973||349954||Move report shortcut shows consistent categories||When opening a Report in the Case Manager Portal, the Analyze Performance category is first in the out of the box implementation. However, when attempting to move one report from a different category, the Analyze Performance category was not shown in drop-down This was caused by different field values being used to display the category label in the browser and category dropdown, which led to them being localized differently in the display on the right ( "Analyze Performance") and the dropdown ("Performance analysis"). To correct this, the field values have been updated to make them consistently localized.|
|SR-C9791||350823||Code added to ensure unique IDs for control elements||In order to improve accessibility, code has been added to ensure unique IDs are generated for Radio buttons, checkboxes, and other controls. This also resolves an issue where the duplicate labels caused a click to fire on an unexpected harness element.|
|SR-C9804||350937||ResultCount methods updated to handle null results||Autocomplete controls were not working via mobile app. This was due to the Autocomplete control not rendering a list supplied by a data page, and was traced to the results of the datapage var resultCount = res.responseText.get("pxResultCount");being returned as null. In order to ensure the correct results, an alternate way of getting the pxResultCount has been added.|
|SR-C9887||354825||Reports list properly updated when switching applications||When switching applications, some of the report browser was displaying information from the first application. This was due to incomplete clearing of the data, and has been fixed by calling pzRBSetFilters in Data-Report-Browser!pzRBForceDataPageRefresh to reset the report browser when it is opened.|