Pega Infinity™ includes an industry-standard patch 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 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.)
Low-code Application Development
Case Management
8.4.5 Patch Resolved Issues for Case Management
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-147457 | 621708 | Elapsed time in Work History Table includes sub-flow | Elapsed times were not captured when an assignment was in a wait shape followed by a utility which set a ticket and moved the assignment to a sub-flow. Investigation showed that when flow execution is in a sub-flow and a ticket is raised, the assignment in sub-flow was removed but audit history was not captured. To handle this scenario, the functions pzCleanSplitForTicket and pzRemoveFlowForTicket have been added, and FlowMethodBody FUA has been modified to include pzCleanSplitForTicket instead of CleanSplit. | Case Management |
INC-149213 | 608519 | Email attachments properly displayed in mobile browsers | When attempting to use any mobile browser to open the email attachment of a work object, a blank HTML page appeared before the email attachment was shown. The blank page did not appear if the mobile browser was set to use "Desktop mode" or "PC mode". This has been resolved by updating the BAC registration method so that correspondence attachments are properly opened in all mobile browsers and HC apps for all channel types. An additional issue of a blank window appearing on IOS devices that was caused by correspondence attachments opening in a new window instead of opening in the current window has also been corrected. | Case Management |
INC-153801 | 625945 | Modified handling for updating SLA on Bulk Agent items | While transferring SLA-configured assignments to the work basket using the Bulk Agent in background processing, the assignment handle of the SLA item was not getting updated to the work basket assignment handle. The error "duplicate key value violates unique constraint" was logged. This was due to the system not being able to dequeue the SLA item while it was locked by the Queue Manager as part of the background bulk processing, preventing the assignment handle from being updated on the SLA item. To resolve this, the system will perform a direct database open of the SLA item so the assignment handle is updated. | Case Management |
INC-154778 | 620905 | Bulk actions filtering works in Spanish locale | Filtering by only case type did not return any results when using the Bulk Transfer functionality with the Spanish locale. Investigation showed that the filter value case type had a field value set, but the localized value was not being checked in the pzPostFilterOperation in step 1 'when' condition. This has been resolved. | Case Management |
INC-159334 | 626762 | Handling added for custom attachment method | When sending a correspondence using the standard SendSimpleEmail activity, choosing only one attachment from the multiple attachments in the work object by passing the pxLinkedRefTo property from the clipboard page to the AttachmentKeysToSend parameter instead of passing the value to the AttachmentCategoriesToSend parameter successfully sent the message and attached it to the work object. However, opening the correspondence attached to the work object showed the attached file as blank even though the attachment was present in the receiver’s email. Research showed that during the comparison of keys in place of pxLinkedRefTo, pzinskey was used. This caused the comparison to not register as true and the attachments display was skipped. This has been resolved by updating the Data-Corr-Email.Show Html rule to use the pxLinkedRefTo field to find the right attachment. The URL encryption was also updated to ensure the links are functional and attachments can be downloaded. | Case Management |
INC-159624 INC-172683 |
626187 652827 |
Check added to set class for inheritance if Work- is not present | Bulk Action transfer was not working for Assignments from Data class. Investigation showed that when the interest page class inheritance did not contain Work-, flow action pyTransferAssignment was not able to render as it is present in Work- layer. To resolve this, a check has been added to the pyGetRelevantActions so that if the interest page class inheritance doesn't contain Work-, the case class will be set from the workobj page. | Case Management |
INC-160078 | 628838 | Work object status correctly set to Resolved after refresh | When using the Refresh option from the Other Actions menu before submitting the flow action, the work object status was not updating to Resolved-Completed. Investigation showed that when performing the Refresh action, the RefreshOnConflicts activity created a Clipboard page named LatestWorkPage with a copy of the work object. This page was not removed after use, causing the Resolved-Completed status to be set on LatestWorkPage instead of pyWorkPage. To resolve this, a step has been added to RefreshOnConflicts to remove LatestWorkPage. | Case Management |
INC-161463 | 637999 | Case Dependency corrected for different access groups | Creating a queue item as part of the case dependency was not working as expected when the access groups of the dependent cases were different. Investigation showed that in this scenario, the logic was looping differently and the DependencyList page in pxCheckFlowDependencies was getting removed. To resolve this, the DependencyList page has been moved so it is processed inside the DependencyList.pxResults loop. | Case Management |
INC-162763 | 646111 | Case creation and Save As performance improvements | Performance improvements have been made to the getApplicationRuleSetList() function to avoid unnecessary and repetitive database calls. | Case Management |
INC-163154 | 638096 | Code updated for bulk actions buttons | After upgrade, hovering over the "Filter case" button in pzBullkUpdate and the "Create" and "Clear" buttons in pzBulkAddActions caused them to disappear. The warning "This button generates markup that was used to support the older browsers. It is recommended that you update it to the newer markup" was shown, and an update code button appeared. Some custom rules exhibited the same behavior initially, but worked as expected after updating the code and saving them. This has been resolved by updating the buttons in pzBulkUpdate and pzAddBulkActions with the latest UI technologies used for button control codes. | Case Management |
INC-163452 | 631831 | Validation correctly triggered when skipping flows | When using a screen flow which allowed users to navigate the flow freely, validation was not triggered on submission. In addition the server or client side validation was being cleared when the case used optimistic locking. Investigation showed that pzShowConflicts was called for optimistic locking on FinishAssignment, which was clearing off the messages and allowing the flow submission. To correct this, a check has been added to pzShowConflicts to check for defer errors in screenflow while clearing page messages. | Case Management |
INC-168167 | 643369 | Locking settings enabled for circumstanced case types | Optimistic locking options were not present for a circumstanced case type, and the option to select the "Lock parent case when an action is performed on this case" check box was not available. However, when the parent case type was enabled with optimistic locking, a circumstanced child case could inherit a lock from its parent. Because "Lock parent case when an action is performed on this case" was not enabled on the circumstanced child case type, trying to update the parent case from the child case and save the parent case resulted in a "Lock not held on parent" error. This was a missed use case, and has been resolved by enabling locking settings in Case Designer for circumstanced case types. | Case Management |
INC-170051 | 648089 | Check added for WorkParty property to catch changes | After configuring a send email shape to send email to work parties, proceeding through the flow without work parties and then triggering the send email shape and creating the Fix correspondence assignment worked as expected. If the work party details were later updated and the send email shape was triggered again for the Fix correspondence assignment, the error message "No role defined to work object" appeared. This was an issue with the handling of the email flow the second time through: PyCorrPage.pyCorrPartyRole did not have the work object party details which were added to the work object after the fix correspondence assignment was created, and SendSimpleEmail was not designed to handle the email that needs to be retried during the FixCorrespondence flow call. To resolve this, the system will check whether the pyWorkParty property exists prior to calling the PartyCorrPreferences HTML rule. | Case Management |
INC-171446 | 649616 | Updated logic for setting param.PrimaryPage in transfer | TransferAssignment was failing intermittently when doing routing either by background processing or manual transfer. Investigation showed this was caused by a null param.PrimaryPage value which resulted in a NullStepPage exception. This has been resolved by adding a Property-Set method just before calling the activity pxTransferAssignment. | Case Management |
INC-175630 | 653865 | Application selections only announced when visible | The elements of the application switcher were being announced by the NVDA screen reader even when toggled off, i.e. not visible. The issue was occurring because the focus was remaining at the search bar even after closing the app switcher window, and has been resolved by adding the necessary logic to switch the focus. | Case Management |
INC-176091 | 652122 | Busy indicator correctly resolves with Microsoft Internet Explorer upload | When using Microsoft Internet Explorer to upload documents, the busy indicator was not resolving after the file was attached. This was due to a missed use case in work done around the timing of the busy indicator when attaching multiple files, and has been resolved by modifying PzMultiFilePath to ensure the busy Indicator is removed when the file count is zero. | Case Management |
INC-177183 | 656492 | Refresh assignment checks updated | Additional privilege checks have been added to refresh assignment. | Case Management |
Cloud Services
There were no Resolved Issues for Cloud Services in 8.4.5
Conversational Channels
8.4.5 Resolved Issues for Conversational Channels
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-147654 | 642185 | Updates to displaying embedded images in cases | Sending an email with an embedded image to the email ID associated with the email listener successfully created the interaction case, but the embedded image was not displayed when the case was opened from the work-basket. A rule-not found exception was seen in the tracer for pyGetImageDisplay, the rule responsible for displaying the images in the ET pane. Investigation showed that when URLObfuscation was turned on, the decryption of the URL was not successful because "&" had been encoded to '& amp;'. This has been resolved by calling the activity pyGetImageForDisplay using URLMapping instead. An additional issue was seen with displaying images in the email interaction pane where the additional empty new lines moved the image outside the intended place. This was traced to a customization for the reply area which used the pyHighlightedMessage property and converted newlines to br tags even in HTML mode. To resolve this, pyHighlightedMessage has ben modified to convert newlines to br tags only if the mode is plain text. | Conversational Channels |
INC-152776 | 621242 | Check added for HTML and linefeed combined in email | In the Interaction right hand pane Email triage widget, additional line breaks were seen when displaying email message data that contained table tags. This was a missed use case for email which contains both HTML and '\n', which resulted in the system replacing '\n' with < / br >. This has been resolved by adding a check whether the content has HTML tags which will avoid the replacement. | Conversational Channels |
INC-157214 | 631598 | Mentioned user in Pulse appears correctly | When loading user names while using the "@" functionality in a Pulse post, adding or tagging the operator/user in Pulse by entering each letter brought up the list, but when using copy/paste it was not possible to select the desired value from the user.Suggestions list of operators/users. If by chance the user name was selected from the suggested list, the operator ID was added instead of the full name. This has been resolved. | Conversational Channels |
INC-160688 | 632228 | Skip topics from the attachments setting honored | Topic detection was happening for attachments even when it is disabled in the UI. This issue was traced to pyTopics which were not properly configured by selecting checkboxes in iNLP configuration for Email Channel, and has been resolved. | Conversational Channels |
INC-165188 | 635773 | Third-party links allowed to pass target attribute in anchor | Attempting to connect to Docusign, a third party application, via Email in an interaction portal was not working, and the error "account.docusign.com refused to connect" appeared. This was caused by the HTML data being sanitized so the attribute 'target' was not allowed to pass and the application could not open in a new tab. To resolve this, an update has been made that will allow the target attribute for an anchor tag. | Conversational Channels |
INC-170135 | 652523 | Rich HTML handling added for outbound email | The HTML content was visible in the received email when replying from the email pane in the existing email interaction. This has been resolved by adding logic to handle rich HTML for outbound email. | Conversational Channels |
INC-174475 | 650110 | Removed unnecessary commit in pyGetAttachmentsByCids | Attempting to reply to inbound emails generated the error "This action is not allowed as it is outside the current transaction". Investigation showed a commit was occurring for pygetattachmentsbycids even when there was no change in attachment, and this interfered with the subsequent transactions and resulted in the Transaction id mismatch issue. To resolve this, the commit has been removed and the system has been updated to save only when needed for backwards compatibility. | Conversational Channels |
INC-179722 | 659281 | Corrected race condition that caused JobScheduler error | A race condition between the pzInitializeQueueProcessors and pyPersistNodeState job schedulers that both run at platform's start was causing a null pointer exception with the error "com.pega.platform.executor.jobscheduler.scheduler.JobExecutionException: Activity execution failed with [PRRuntimeException]". This has been resolved by moving the QueueProcessor initialization process from JobScheduler to StartupTask. | Conversational Channels |
Data Integration
8.4.5 Resolved Issues for Data Integration
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-143622 | 602981 | Improved privacy for email listener alerts | To improve privacy, the customer 'from' address will be removed from PEGA0011 alerts for email listener processing. | Data Integration |
INC-143668 | 617487 | Performance improvements for Attachment Migration Utility | The Attachment Migration Utility was showing a zero count for attachments in the Pega Database. This was traced to the underlying report definition that retrieves data for the Attachment Migration Utility timing out, and has been resolved by updating the activities to improve performance for applications having a large number of attachments without customization. | Data Integration |
INC-145802 | 636322 | Oracle temporary space explicitly freed after writing LOBs | Oracle temporary space used to write the LOB was not freed up after writing records to Log-Service-File when using OJDBC8 or OJDBC10 versions and the table involved had inline BLOB storage such as small blob tables like Log-service-file (2-4kB blobs). This did not occur when using OJDBC7, but investigation with Oracle could not determine why the older version did not have this issue. This issue has been resolved by explicitly freeing the LOB space with a call to free() / freeTemporary() , a utility for LOB objects that was introduced in JDBC 4. | Data Integration |
INC-150610 | 627425 | Argument number exception handled for SERVICES-PAL log configuration | An issue with being unable to configure the SERVICES-PAL log file has been resolved by adding handling for an unlogged "wrong number of arguments" exception. | Data Integration |
INC-152057 | 621208 | S3 attachment migration handles LInk-Attachment with multiple instances | After S3 attachment migration, some attachments were intermittently not opening and displaying an error relating to being unable to load the file. Investigation showed that the attachments that failed to open did not have a pxStorageType tag in the XML of the work item. After the migration is done, the corresponding Data-WorkAttach-File and Link-Attachment instances are updated to point them to the repository. In this case, multiple LInk-Attachment instances were pointing to the same Data-WorkAttach-File instances, so only one Link-Attachment was updated and all of the other instances pointing to the same Data-WorkAttach-File instance were rendered unusable. While there was a workaround of manually updating the storage type in the database, this has been resolved by updating "pzgetattachmentcontent","pzupdatesourcereferences", and "pzuploadcontenttoexternalstorage" to check whether attachment is already migrated or not using the boolean parameter "isAttachmentAlreadyMigrated" to ensure all of the other Link-Attachment instances for a particular attachment are updated. If a migration was done and all Data-WorkAttach-File instances are pointing to a repository with some Link-Attachment instances not updated, those will be updated by running the migration again. | Data Integration |
INC-153014 | 625695 | Handling added for missing archival class definitions | Handling has been added to avoid suspending the archival process when a class definition no longer exists in the system. If the system does not find a class corresponding to a configured case type, the exception generated will be logged and processing will continue with the next case type. | Data Integration |
INC-154026 | 631040 | Resolved exception from expanding deserialized Data Page | When using a data page backed by a report definition where the data page data type was Rule- and the virtual page data type was Rule-Obj-Property, serializing and deserializing the data page and then expanding the deserialized data page generated the exception "the reference .pzInsKey is not valid. Reason: .pzInsKey is mapped to class Rule-Obj-Property, which is not the primary class of the list: Rule-; must specify a group name in mapping". The issue occurred only if "Run on Data Page" on the data page was checked and "Report on descendant class instances" on the report definition was unchecked, and has been resolved by updating the runLoadActivity() of DeclarativePageDirectoryImpl to skip setting pyObjClass for the report definition if it already present, i.e. if already set by the loader activity. | Data Integration |
INC-155294 | 626661 | Enhancement added for attachment size handling with Kafka | Attempting to send an email attachment larger than 2 MB resulted in the error "Caused by: org.apache.kafka.common.errors.RecordTooLargeException: The message is 8101592 bytes when serialized which is larger than the maximum request size you have configured with the max.request.size configuration." This has been resolved by updating the Stream SPI size to 2.0.5-14 to support custom producer configurations. The settings can be passed as environment parameters, for example 'Dstream.producer.max.request.size=500990'. | Data Integration |
INC-155573 | 617516 | Email Listener updated to handle double quotes | The From field in Requestdata was blank for emails that had a FROM address that contained double quotes, causing them to not be read by the email listener. This has been resolved by modifying the regex pattern to accept double quotes, square brackets, and any ASCII characters between quotes. | Data Integration |
INC-156178 | 637676 | IOException logging changed to warn | JBoss error messages related to "Exception occurred while closing the Stream" were appearing as a side effect of load on the system or network issues. As this is not a functional concern, the logging for these exceptions has been changed so they will only be shown if warn is enabled. | Data Integration |
INC-156758 | 629936 | ExpandStream called before Page-Merge-Into to ensure correct merge | The Page-Merge-Into method was not merging the source page into the target page when the use case was run without tracer, but merged properly when run with tracer. This was traced to an intermittent issue with expanding properties, and has been resolved by calling expandStream on the source property if it is unknown prior to checking if the source and target properties are merge compatible. | Data Integration |
INC-158018 | 633372 | Archiving updated to include pxobjclass in CTE column list | After enabling the case archival feature on a casetype, cases were getting stuck in the Archive-Ready state while being archived, and a 'column not found' error was seen. Investigation showed that the generated SQL statement used to retrieve the resolved case instances used a common table expression (CTE) whose columns were inskey, insclass, and parentinskey, and the query that referenced the CTE was attempting to compare the column pxobjclass when pxobjclass did not exist in the CTE's column list. To resolve this, the CTE column list has been updated to pzinskey, pxobjclass, and parentinskey to prevent the 'column not found error' from occurring, and the query that referenced the CTE was also updated to use the correct column names and aliases. | Data Integration |
INC-159143 | 628921 | Methods updated to prevent rounding of JSON response decimals | When using a REST connector for an outside service, precision numbers in the JSON response were being rounded or truncated when parsed for the DataSource page. For example, a JSON message with a value like 6045.900000000000000001 became rounded to 6045.9. This happened in both methods used for fast and non-fast processing, and has been resolved by treating the decimal value as a string and then creating a BigDecimal object out of it to avoid truncation in the fast processing scenario, and by adding mapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); for the non-fast processing scenario. | Data Integration |
INC-159879 INC-170883 INC-161952 |
627829 649997 645674 |
Race condition resolved for input/output pipe streams | Writing to S3 using file data set was failing with the error "Exception occurred while uploading file". The system was relying on PipedInputStream for getting the data from the file while uploading, which needs to be connected to PipedOutputStream which holds the data to be uploaded. Investigation showed a race condition was occurring where for some use cases the reading of inputStream was happening before the connection of I/P and O/P streams, resulting in a "Pipe not connected" error. This has been resolved. | Data Integration |
INC-161645 | 634637 | Java Bean import updated to handling differences in Java 7 and Java 8 | The behavior of the java bean Introspector class is inconsistent across different versions of the JDK when detecting indexed properties built off of java.util.List objects, causing Java Bean import to generate differently in Java 7 and Java 8. This has been resolved by updating PRIndexedPropertyDescriptor to better handle this JDK difference by resolving indexed read and write methods manually using simple reflection. | Data Integration |
INC-161838 | 631912 | GRS support added to Display name and Reply to for SendEmailNotification | After upgrade, it was not possible to send email notifications when using a Datapage property in the email account rule. Investigation showed that there was a custom activity being used to call the SendEmailNotification activity and set the pyNotifyAccountName value as email account name by enabling Pass current parameter page, and the custom call was not functioning due to the SendEmailNotification activity being completely refactored in recent versions of the platform where GRS support (which was not a documented feature) was removed. For better backwards compatibility, this issue has been resolved by adding GRS support to Display name (pyFromFullName) and Reply to (pyReplyTo). | Data Integration |
INC-162198 | 628702 | Tracelist cleared to address parser exception in REST Service | In a requestor pool of mixed types, HTTP and REST, the alert data was not initialized properly if there was a parse exception due to invalid data in the incoming payload. For example, last_input, first_activity, and last_step could all be left over from the prior HTTP service request. This was caused by the system pulling in seemingly unrelated activities for the "Last activity called" in the stack trace of a service when a single alert was created by two different service types which were sharing the same package, and has been resolved by explicitly clearing the tracelist for the service to prevent inaccurate information being reported in the logs. | Data Integration |
INC-162217 | 635888 | Default sorting with Pagination, Data Page and Report Definition corrected | After configuring a section with the table sourced from a data page and personalizing the table with the pagination and sort-by features available in a report definition, the table content sourced with the data page was not sorting the data. This has been resolved by updating the pxRetrieveReportDefinition activity so that the sort order for queryable data pages will not be reset for a first-time request. | Data Integration |
INC-162987 | 640145 | Cross site scripting protections updated for SOAP WSDL | Cross site scripting protections have been updated for reading WSDL nodes. | Data Integration |
INC-163292 | 635837 | Portlet service deprecated | Portlet authentication services have been removed from the standard installation package. | Data Integration |
INC-163863 | 632424 | Monthly agents run correctly on non-English locales | Nodes with non-English locales were not starting when using an Agent with a monthly execution pattern. This was due to incorrect handling of the user locale, and has been resolved. | Data Integration |
INC-163985 | 635144 | Class mapped to CustomerData is incrementally indexed as expected | When using a class which mapped to customerdata, instances that were added/updated were not automatically getting indexed unless a full reindex was performed. If the class mapping was changed from customerdata to pegadata then the incremental indexing was done. To resolve this, the UpdateProcessor class that resolves CustomerData to the correct database name has been updated to use PegaData. ConfigurationMapImpl contains the resolution mapping and a call is made to ConfigurationMapImpl to retrieve the correct database name. | Data Integration |
INC-164021 | 638637 | Java object type removed from pyStream to resolve GetFile class error | It was not possible to perform Property-Set on pyStream(java.io.InputStream) to assign it with another object of type(returned by pxGetFile Rule-Utility-Function). This was caused by a strongly typed java.io.stream in the pyStream property creating conflict at runtime with S3WrapperInputStream from the D_GetNewFile call, and has been fixed by removing the java object type from pyStream. | Data Integration |
INC-164308 | 634408 | UseNoCacheHeaders default expiration set to "0" | When the prconfig/HTTP/UseNoCacheHeaders/default was set true it used the value "Expires: Thu, 01 Dec 1994 16:00:00 GMT". This has been updated to the more commonly used setting "0". | Data Integration |
INC-164472 | 635111 | Performance improvements for archiving and purging | Archiving and purging jobs were not working in Prod. Investigation showed this was caused by the system timing out. To resolve this, improvements have been made to purging by batching the deletions and refactoring the Where condition to simplify the complex expression queries that determine the cases to be archived. | Data Integration |
INC-164526 | 641165 | Unneeded ShowContext rules removed | The following unused rules are obsolete and have been withdrawn: RULE-OBJ-ACTIVITY SYSTEM-REQUESTOR-CONTEXT SHOWCONTEXTMANAGER RULE-OBJ-HTML SYSTEM-REQUESTOR-CONTEXT REQUESTORCONTEXTMANAGER |
Data Integration |
INC-166631 | 637020 | Default for 'database/oracle/allowOptimization' set to false in patches | Recent patches contained an Oracle query optimizer implemented to prevent performance problems and other known Oracle bugs from impacting environments. However, while these changes were well intentioned, they either required providing additional database privileges or adding some configuration changes to provide the information needed in lieu of the privileges. This does not conform to the expected patch experience. To remedy this issue, the optimizations have been switched to being disabled by default in this release so that the behavior on upgrade is the same as prior to the applied patch release. If Oracle performance issues are seen, it is possible to enable the optimizations and provide either the needed privileges or configuration to make use of them. Please note the default remains 'enabled' for Pega 8.6. | Data Integration |
INC-167141 INC-168959 |
643510 643514 |
Updated nextRunTime to handle report scheduled during daylight savings time change | A job scheduled to run at 2AM every night executed continuously during the Daylight-Savings Time change between 1AM and 2AM EST. This has been resolved by updating nextRunTime so that it will not shift the execution time by the daylight saving time offset if the following nextRunTime is not in daylight time. | Data Integration |
INC-169518 | 649157 | Email address parsing logic updated | Email listener functionality for case creation and email notifications was not working as expected after update due to a difference in the the service email rule request header properties (pyInboundEmail.pyFrom & .pyInboundEmail.pyFromDisplayName) clipboard values. This has been resolved by updating the parsing logic for the email addresses to look for an InternetAddress object and then fallback to a regex match. | Data Integration |
INC-169764 | 645806 | Decision table query performance improvements | Severe latency was seen after upgrade, and it was not possible to save business rule changes. This was traced to an issue with the decision rule being treated as a custom rule, and has been resolved by inserting a check. In addition, optimization has been added for queries on the pr_sys_decchg table. | Data Integration |
INC-170551 | 656561 | Rule Assembly update for pxTextInput and pxDisplayText | After the application restart, multiple rule assembly alerts were seen for pxTextInput and pxDisplayText . During first access, Assembly is done and container is cached in VTable; investigation showed that in this case, the Load class without the package name had a class not found issue, and then subsequent access tried to use the container from cache and assembly was not done. To prevent this, an update has been made to perform the class lookup using the package name and class name. | Data Integration |
INC-170669 | 651811 | Handling added for RuleNotFound exception | If a declare rule was run on a redux page and the highest ruleset version was withdrawn, a RuleNotFound exception was thrown and step status was set with the message "Failed to find a 'RULE-DECLARE-EXPRESSIONS' ...". This has been resolved by updating the system to avoid throwing a RuleNotFound exception if the candidate list is empty for the declare expression. | Data Integration |
INC-170950 | 652330 | Handling added for datetime set by relative reference | When initializing a datetime property contained within .pxPages() in a data transform rule, if the property being set applied to @baseclass it was initialized as decimal string while all other properties were handled as normal GMT-based Pega date time strings. Investigation showed that the decimal value was set when the target page was given by a relative reference like .pxPages(TEXT) which was also defined on Pages & Classes. This has been resolved with an update to detect relative reference as page name in Pages & Classes tab and fall back to the old assembler. | Data Integration |
INC-171230 | 650333 | MSGraph email listener enhancements | Attachments with .eml /.msg extensions were treated as FileAttachments by the MS Graph API and generating a classcastexception. To resolve this, a check has been added to identify the attachment along with content type so .eml will be correctly recognized. In addition, the MSGraph email listener functionality related to converting from Graph to MIME message has been enhanced around the 'TO' and 'CC' recipients in a MIME message and for parsing nested attachments in Item attachment for addition to MsgraphMessage. | Data Integration |
INC-172546 | 652878 | Resolved classcast exception with assembled HTML controls | A classcast exception was being generated on login. Investigation showed the Static Assembler was unexpectedly using a different Assembler to assemble the Html control rule. Standard behavior is that StreamBuilderAssembler assembles controls of type StreamBuilder and ControlAssemblerForVTable assembles controls of type ControlBuilder. In this case, static assembly for HTML controls using VTable was performed using StreamBuilderAssembler, causing a classcast exception when using VTable because the instance of the generated.html class was incorrectly inheriting from StreamBuilder (the parent class of ControlBuilder) instead of ControlBuilder which is the specified interface in the generated.html Java code. This has been resolved by updating the system to skip rules of type 'Rule-HTML-Property'(control) during Static Assembly. | Data Integration |
INC-172675 | 649454 | Configuration added for extending queue processor timeout | Alerts for queue processor (QP) items which took more than 15 minutes to run could result in the system marking the node as 'unhealthy'. In environments with Pega Health Check enabled, this would shut down the node gracefully. It was not possible to change this default as it was hardcoded. In order to support systems that may have custom processes that run beyond 15 minutes, a a new setting has been exposed that allows configuration of the interval after which a node with long-running queue processor is marked as unhealthy and is restarted. By default this remains 900000 milliseconds / 900 seconds / 15 minutes, but it may be adjusted up to 24 hours to avoid premature node shutdown. The stale thread detection mechanism will take that setting into account and use the provided value or default to 15 minutes if the value was not provided. In addition, the threshold's units in the UI have been changed from ms to seconds. | Data Integration |
INC-172692 | 650614 | InsID will be derived from handle if null for upgrade | Upgrade from Pega 7.2.x to Pega 8.4.x failed with a null pointer exception in the “Upgrade Context” target. This was traced to a rule where the pxInsID was null. To resolve this, an update has been made to derive the InsID from handle when needed. | Data Integration |
INC-174296 | 650755 | Delayed JS/DF initialization failures will trigger alert | In order to ensure better cluster monitoring, a PEGA0102 alert has been added for job registration failure that will be triggered if there are startup issues. The logging will include the JOB_NAME for improved troubleshooting. | Data Integration |
INC-175205 | 652529 | Agent restart made more resilient | During a timeout outage, agents intermittently encountered a NoClassDefFound error and were disabled. After the database connection was restored, the agents were not automatically restarting. This has been resolved by making the code more resilient to errors; agent will be restarted when a temporary issue is detected, and the restart will be immune to most exceptions. | Data Integration |
INC-179861 | 658948 | AES call to mbean disabled | Under certain conditions, the AESRemote 'push memory' agent call to the legacy memory management mbean caused unexpected behavior in declarative rules for work running in data flows and queue processors. This has been resolved at this time by overriding the push memory usage agent activity to skip mbean and connect REST. | Data Integration |
INC-180207 | 659097 | Corrected race condition that caused JobScheduler error | A race condition between the pzInitializeQueueProcessors and pyPersistNodeState job schedulers that both run at platform's start was causing a null pointer exception with the error "com.pega.platform.executor.jobscheduler.scheduler.JobExecutionException: Activity execution failed with [PRRuntimeException]". This has been resolved by moving the QueueProcessor initialization process from JobScheduler to StartupTask. | Data Integration |
Decision Management
8.4.5 Resolved Issues for Decision Management
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-150395 | 625068 | Tokenizer updated to handle commas | The Text Analyzer was not working as expected in cases where the number was combined with a comma (,) with it but was working when a space was used between the number and the comma. This was traced to the tokenizer not correctly processing and splitting the input text when there was a special character before or after the token. This has been resolved by updating the tokenizer logic. | Decision Management |
INC-150873 | 612896 | Performance improvement for saving ADM model rule | Saving an ADM model rule generated a heap dump. The stack trace from the heap dump showed a thread consuming the maximum memory (4.7 GB of memory). Configurations on all factories are updated when a model rule is saved, but at the time of development it was not expected that there would be a lot of factories in a Dev environment so the system was loading all existing factories simultaneously into memory and updating configurations on them. To improve performance, an update has been made which will now sequentially load factories and update the configuration. | Decision Management |
INC-156818 | 628465 | Materialization uses time limit boundary for query | After turning on Materialization for pyIHSummary and OfferOutcomesForPast45Days datasets, an SQL query was taking an excessive amount of time and causing multiple alerts in the logs. Investigation traced the issue to database partitioning, specifically that running a query where the pyOutcomeTime range spanned multiple partitions was causing the indexes for all partitions in the range to be opened. To resolve this, the query has been updated with a DSS to support a partition size of min(pxOutcomeTime) to limit the time range to querying day by day, or hour by hour, or any other chronology unit specified. If there are no records for the current limit, then it will look at the next partition. This should prevent the query from needing to open more than 1 or 2 partitions. | Decision Management |
INC-157357 | 636711 | Hazelcast remote execution not called from synchronized context | After navigating to the Admin Studio portal to view the nodes, the portal was temporarily freezing. Investigation of the thread dump revealed this was caused by a DDS pulse sending a remote execution call to all nodes to update logger settings even though the site was not using DDS. This has been resolved by updating the system to avoid calling Hazelcast remote execution from a synchronized context. | Decision Management |
INC-157629 | 626632 | Duplicate key exception resolved for adaptive model | During the model snapshot update, a DuplicateKeyException was generated while trying to insert a record in to the predictor table. This did not affect the model's learning, but did appear ion the model monitoring report. This was traced to a local scenario of having the same outcome values defined on the model with different cases (Accept and accept). All predictors used in an Adaptive model are inserted into the model monitoring tables as a part of the monitoring job: because the monitoring tables are not case sensitive, this lead to a unique constraint exception since there were multiple IH predictors with the same name. To resolve this, validation has been added which will skip adding duplicates from new responses. | Decision Management |
INC-158686 INC-159216 |
628552 638931 |
DSS added to create consistent handling of longform datetime | After upgrade, a difference in handling related to datetime value was seen. For example, EmailSchedRunEndDate is a date type property holding the value "20201016T000000.000 GMT"; in Pega v7.4, a substring function was used to move the extra characters from the date field ex. EmailSchedRunStartDate = @substring(.EmailSchedRunStartDate,0,8), but in Pega v8.4 and higher the long datetime value ( "20201016T000000.000 GMT") was still being used for the date field. This long value was then truncated to 2020101+ when saving to the database, causing errors in later steps. However, research found that if there is a call @toDate function before this step for any other field, the correct date value was set for EmailSchedRunStartDate. While ClipboardPages separate Dates and DateTimes, internally, in Java, both have a time component. The implementation of DSMClipboardPage made no difference for serialization and appended the time component for pure Date properties. To create consistent handling, an update has been made to optionally set the correct behavior after setting the Dynamic System Setting by way of "Pega-DecisionEngine dsm/clipboard/correctDateFormat -> true". This setting would only take effect after a restart of Pega, and the default is false in order to not disrupt any application inadvertently relying on this behavior. | Decision Management |
INC-158813 | 629484 | Updated report handling for simulations using database output | When running a simulation with a database table as the output destination, the pxObjClass property was not populating with a value in the results. This caused sub-reports to not be populated with data. Investigation showed that issue happened when the simulation output destination database table was inferred as an external table due to not having an exposed column for pzinskey. To resolve this, the pxObjClass and pxCreateDateTime properties, which were added to simulation output destination tables for compatibility with Report browser, will not be added to those tables when they are created. Instead, to address compatibility issues of simulation output destination classes with Report browse in the Customer Decision Hub, the pyDefaultSummaryReport has been brought up into the Data-Decision-StrategyExecution-ResultOutput class from the @baseclass. | Decision Management |
INC-159105 | 628790 | Refactored resultset iteration to resolve idle alert | Some data flow pulse tasks were executing other database queries while iterating a resultset, leading to an alert being logged indicating "Database pid [29226] in state [idle in transaction] for 15195 ms, the threshold is 5000 ms" because of the amount of time the database was being held open. This has been resolved by refactoring the tasks to make sure they don't do heavy input/output work while iterating over the resultset. | Decision Management |
INC-159332 | 629617 | Logic updated for finding 'Last' in Interaction History | The 'LastReponseDate' and 'LastInteractionId' in the Interaction History summary data set were null. Investigation showed that reusing the ESM component in the aggregation dataset caused any assumptions made during the optimization of ESM to not be true anymore. To resolve this, the logic of the Last aggregation has been modified to not rely on a Last event which might not be stored in-state (such as optimization), but rather to use the list of events which is always stored. | Decision Management |
INC-160277 | 628158 | Implementation updated to ensure consistent compareDatesByDays results | When using compareDatesByDays in a filter shape within a strategy, the results of the expression were different between the expression test and the strategy test run. This was traced to a difference in handling that became visible after upgrade; giving a negative number for the numberOfDays parameter worked differently in v7.4 than in v8.4. The SSA implementation of compareDatesByDays always worked with the absolute difference in days between dates, whereas the Java function in Pega used in expressions did not, and would compare negative differences as well. To restore the expected behavior, the SSA implementation has been adjusted to not work with absolute differences, and tests have been added to ensure equal results for the Java function in Pega and the SSA implementation. | Decision Management |
INC-165513 | 645684 | Queue Processors made more robust | After upgrade, multiple queue processors were not running as expected. Attempting to restart them generated an error. Investigation showed that the real time data flow runs were not picking up or accepting assignments because the local node was under the impression it was still processing data. In this case, the need to synchronize the state of multiple threads caused the queue processors to become stuck in an initializing state due to a race condition that caused the data flow engine to think this run still had threads running when all threads were already stopped. To resolve this, the callback handling has been simplified and made more robust. In addition, in some cases the data flow leader node would believe the service nodes did not accept assignments even when they did. This occurred if many runs and nodes were involved, and was traced to an implicit limit on the NativeSQL query used to read the data to see which assignments were accepted. To resolve this, the key-value store in the Service Registry has been modified to allow a query of more than 500 entries at once. | Decision Management |
INC-165704 | 639503 | VBD data flow timeout increased and made configurable | Intermittent VBD timeouts were seen when writing records to MSK even though no errors were reported on the MSK side. Analysis showed that while batch data flows retry when a timeout occurs, real time data flows do not retry and the configuration to wait up to 10 seconds for an acknowledgement may not be sufficient depending on the system conditions. This has been resolved by increasing the default timeout to 20 seconds and adding a configurable timeout "vbd/streamPublishTimeoutMillis" to allow a customized setting. | Decision Management |
INC-167334 | 639316 | GRS support added for Kafka Key password | An enhancement has been added to support using GRS to set values for the Kafka Key password dynamically. | Decision Management |
INC-169125 | 642399 | Nodes resume correctly after DDS restart | A corner case issue in VBD's code for handling a DDS session was preventing the nodes from recovering correctly after a system shutdown. As part of the process for an event which fires if all DDS nodes are taken down or as part of a switch from embedded to external Cassandra, VBD's cache is invalidated and then re-initialized once new VBD API calls are received or on the VBD service pulse. In this case, the invalidation of the cache did not complete due to logic in the VBD code that can lead to executing a Cassandra query that will not work in the case of all DDS nodes being down. This has been resolved by modifying the handling of a session change event to eliminate inadvertent Cassandra queries so the invalidation can complete correctly and continue the re-initialization process. | Decision Management |
INC-169544 | 649540 | Enhancement for MaxEnt modeling data | An enhancement has been added to create output for the model coefficients, the term frequency, and the inverse term frequency for use in maximum entropy modeling. For MRM processes, every Maximum Entropy (Maxent) based topic model will contain two additional stats resources. These resources can be used to validate and replicate running of topic model outside of Pega. The resources are: 1) Term Frequency file – A CSV file with all words used for training and their cumulative frequency across training set. File name format – TRAINING_DATA_TERM_FREQUENCY_< RandomNumber >.csv olumns – Word, Count 2) Coefficient file – A CSV file with all features (words, taxonomy matches and category matches) and model learnt weights for each topic across training set. File name format – MAXENT_COEFFICIENT_VALUE.csv Columns – Feature, < TopicName1 >, < TopicName2 > ,…, < TopicNameK > |
Decision Management |
INC-170721 | 658961 | Stricter criteria set for reusing an SSAExecutionContext | After a Strategy was configured with an existing Proposition Filter and the Explain Results box was unchecked, executing the strategy resulted in the error "Stack is empty, cannot pop any more frames". Investigation showed that the SSAExecutionContext object was reused across the two criteria evaluation in Proposition Filter rule: this works well as long as the input is the same across the two evaluations. However, the SSAExecutionContext object also stashed a reference to a PublicAPI object which became stale in the second evaluation and caused the empty stack issue for the given scenario. This has been resolved by providing stricter criteria in deciding when an SSAExecutionContext can be reused or not in the case of Proposition Filter rule. | Decision Management |
INC-171594 | 656185 | Spell check correctly applied to email body | Spell check was not being applied to email body for text analysis in Email Channel. This has been resolved to work irrespective of case. | Decision Management |
INC-173859 | 652640 | Corrected compilation error for Decision Data component in Strategy | After upgrade, a Decision data component defined in Strategy generated an assembly error when looking for class properties. This was traced to the use of "applies to" Instead of SR class, and has been resolved. | Decision Management |
INC-174550 | 658394 | Alternative pyLabel source for Auto-generated Proposition Filter added as fall back | After using save-as to move an offer/action rule containing eligibility criteria into a new ruleset /branch, the criteria disappeared. Proposition Filter has an explicit dependency on relevant records, and in this scenario investigation revealed all of the relevant records had been previously deliberately deleted. Using save-as on auto-generated CDH rules like actions is also not a best practice. To better handle unexpected actions like these and avoid the hard dependency on Relevant Records, when creating the Proposition Filter via the programatic API the system will fall back to reading the label from the sourcePage if is not possible to get the label from Relevant Record. | Decision Management |
INC-175207 | 655556 | Added handling for DSM Services stuck in leaving status after database outage | During a database outage, the heartbeat would fail and DSM services would eventually try to enter safe mode and stop. As the first step they would try to change the state to LEAVING, but because the database was down saving the LEAVING state failed and the exception was not handled correctly. This resulted in the rest of the stop operation logic not being executed and the service being stuck in LEAVING. To resolve this, an update h as been made to ensure the service goes to LEAVING_FAILED if anything fails during the stop operation including when setting state to LEAVING_FAILED. The state LEAVING_FAILED will get flushed to the database eventually when it comes back up. This will allow the aggregation service to start from the LEAVING_FAILED state and recover by itself after a database outage | Decision Management |
INC-175707 | 655349 | Multi-level strategy gives correct rules during Batch run | When using a nested page structure with multi-level strategies that loop through each page and process the customer, a customer with two linked customers A and B had the results of A overridden by B during Batch Processing while single case canvas testing showed the correct results. This was caused by the DSM clipboard page method of carrying the parent page info not supporting the re-use of pages, and has been resolved by adding an enhancement that will sanitize the strategy stage processor to ensure the correct page reference is used. | Decision Management |
Low-Code Application Development
8.4.5 Resolved Issues for Low-Code Application Development
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-146098 | 633721 | Keyboard shortcuts work in Decision Trees | Keyboard short cuts in Decision Trees used to copy/paste by holding ctrl button in Decision Trees were not working. This was an unintended side effect related to changing non-auto grid to an auto-generated hierarchical table to make the Decision tree rule form multi-browser compatible, and has been resolved by adding cut/copy/paste/insert-after/insert-before functionality to the decision tree context menu. | Low-code app development |
INC-151662 | 626575 | Handling added for application which includes production ruleset | When creating the Email channel or Webchat channel, the Text Analyzer and its respective class (Data-Decision-Request-MCP-WebChat-xxxxx) was being saved in the ruleset of the built-on application while there were rulesets open in the top application. This was a missed use case, and has been resolved by updating the logic to account for the scenario where an application includes a production ruleset. |
Low-code app development |
INC-153697 | 625982 | Dragon successfully navigates to user profile icon | Attempting to navigate to the user profile icon when using Dragon software was not working. This is an issue with how Dragon interacts with the "< i >" element operator icon, and has been resolved by replacing "< i >" with a button and appropriate aria label. | Low-code app development |
INC-155401 | 630447 | Circumstance Definition rules save correctly | After upgrade, attempting to save any circumstance definition that used multiple "or" conditions consistently failed during conflict detection. This was an inadvertent side effect of work done to resolve an out of memory error and has been resolved by modifying the Rule-Declare-!testConsistency java step: "int numRows = numOrs;" to"int numRows = numSubRows;". |
Low-code app development |
INC-159238 | 624302 | Handling added for identical property and page names in test case recording | When trying to record a test case, the error "WrongModeException: The property PostProsSnapOfWorkpage.Name was of mode String while com.pega.pegarules.data.internal.clipboard.ClipboardPropertyImpl.getPageValue() was expecting Page mode" was generated. This was an edge case caused by property and page names being the same on the "PostProsSanpOfWorkPage" page, and has been resolved by accessing the page with the full path so it has the proper prefix. | Low-code app development |
INC-161609 | 628996 | Unneeded configuration window close icon removed | JAWS was not reading the configuration window close icon. This was an outdated control that should have previously been removed from this section, and has now been withdrawn. | Low-code app development |
INC-162881 | 636991 | Decision Table check-in warnings supported for large tables | After adding an empty row in the middle of Decision Table rows and checking in, the Decision table rule's CheckIn form shows a functionality warning about a conflict in decision table ("This rule contains 1 logic conflict(s). Click the 'Show Conflicts' button for more details."). However, this behavior did not occur as expected if the decision table had more than 500 cells in it, and has now been resolved. | Low-code app development |
INC-163970 | 636135 | Expression Builder updated for special character handling | If a modulo operator (%) was used in expression builder, the expression showed the correct value when it was submitted (closed) but on reopen the expression was changed and not calculated correctly. If the expression was not reopened then it calculated the value properly. This issue was traced to a server call to pzEvaluatePegaExpression which treated certain values as containing special characters, and has been resolved by updating the handling for this scenario. | Low-code app development |
INC-164439 | 657996 | Setting added to customize using blank Map values | After upgrade to from Pega 6 to Pega 8 some of the Map Value rules were not working. This was due to the handling for blank default values which was changed in Pega 7. In order to support backwards compatibility, a new 'when' rule has been added which allows customizing whether or not blank values are allowed for the Map value default columns. pyAllowBlankValues will default to "false". | Low-code app development |
INC-164854 | 638432 | Scenario test case works for Radio Button control | After creating a scenario test case using Pega Scenario testing capability, selecting a radio button and navigating to the screen worked as expected to complete a case and save the scenario testing test case in a ruleset, but running the scenario test case became stuck and showed an error message in radio button area indicating "Error-"Value cannot be blank" even though it captured the No/Yes value from the radio button selection. Investigation showed the Scenario test failed only when there were multiple radio button controls with visibility 'when' conditions and refresh section actions configured, and the test passed if there were no dependencies of a radio button control with another. Previously, the click was happening on div and the change happened on the input radio element, i.e input type="radio": in that configuration, the click on div was not firing the click on the radio button. This has been resolved by modifying the logic to do the click on the correct radio button. | Low-code app development |
INC-164944 | 636289 | Logic updated to handle decision trees over 64k | An exception was thrown when decision trees reached the 64K size limit. This has been resolved by modifying the logic in the DecisiontableMethodBody RUF where the split size nPropRowLimit is based on the number of columns. | Low-code app development |
INC-168094 | 642625 | Security updated for help URL infrastructure | Cross site scripting protections have been added to the help URL infrastructure. | Low-code app development |
INC-168914 | 659658 | Updates added against Cross-site Scripting | Cross-site Scripting (XSS) protections have been updated for the UI. | Low-code app development |
INC-169203 | 646099 | Robotics Desktop Automation correctly runs on subsequent tabs | When using Customer Service (CRM) to call Robotics Desktop Automation (RDA) from a data page, closing the first interaction tab after the RDA automation was completed resulted in the automation not being triggered for the second tab. If the first tab was not closed, the automation on the second worked as expected. Investigation showed the attachOnUnload was unregistering the client actions for all the open tabs and the attachOnLoad was not being called on reload. This has been resolved by updating attachOnLoad so it is now called with InvokeOnReload as 'true' to register client action for the tab in focus. | Low-code app development |
INC-174468 | 650945 | Delegated rules search considers localized text | The search / filter box used to look for particular delegated rules on the configuration tab did not consider localization via field values, where the on screen name and description of the delegated rule was localized. This resulted in the search text being compared against the original text (.pyAdviceText and .pyDescription) used for the name and description at the time the rule was delegated, but not with the localized text that actually appeared on the screen. This has been resolved by updating the pzPopulateDelegations activity to filter by localized values of pyAdviceText and pyDescription. | Low-code app development |
INC-178070 | 658424 | Browser invocation allowed for UnlockOperator | Attempting to unlock an operator who was locked out due to security policies was failing. This was an unintended side effect of security work performed earlier, and has been resolved by reenabling 'Allow invocation from browser ' for pzUnlockOperator. This activity requires an authentication check with privilege protection. | Low-code app development |
Mobile
8.4.5 Resolved Issues for Mobile
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-153805 | 627966 | Mobile app language remains consistent after data sync | When using a Field Service Mobile App where the locale of all workers was set to nl_NL, the UI was intermittently flipping from NL to EN and and back again. This was traced to the locale of the requestor (field worker) being lost during synchronization of the mobile app data to the server, causing the UI to fall back to the default value of EN. This has been resolved by ensuring the requestor always uses the chosen locale for the operator. | Mobile |
INC-155640 | 622977 | Mobile logging updated for data page required parameters | After upgrade, the number of warnings increased substantially in the mobile app log file for D_Pages, specifying "Required parameter X for data page X cannot be blank." This was traced to the forced logging related to missing required parameters for Parameterized DataPages during DeltaSyncs. In order to increase the value of the logging, the process has been moved from being called before packaging the Data Page to being printed later in packaging code and set to warn only about any unsupported data page configuration with required parameters. | Mobile |
INC-155752 | 622770 | Hidden Question pages and answers will be saved to DB | After a question page was shown and some values were entered, going back to the question and reverting an option caused the question page to not be visible, but the answer values persisted in the clipboard and were eventually saved into the database. This was a missed use case for Question page smart shapes, and has been resolved by updating the pzSetQuestionPageParams data transform so that whenever a question page is evaluated to either to show/hide, when the question page visibility is set to false and the pyClearAnswerValuesWhenQPHidden 'when' rule is overridden, the corresponding values will be wiped from the clipboard and only the required values will be saved to the database. However, please note this is not supported for branching logic and visibility conditions should be used instead. | Mobile |
INC-157217 | 631968 | Field Service mobile refresh timing updated | A configuration in the Field Service mobile app used to select and map data from a modal section to a wrapper section used "pega.fsm.mobileutil.reloadSection" to refresh the wrapper section and make the data visible after the mapping. If the refresh was performed after the initial login, the refresh was done on only a portion of the screen and resulted in incorrect data being shown to the user. However, continuing to fill in the section and then saving and reopening the task displayed the correct results. The issue was reproducible only on the first attempt after clearing cache/date: subsequent uses refreshed properly. This was traced to the timing of the configured actions, which caused the refreshSection action to be triggered before the runDataTransform action execution was completed. This has been resolved by adding code that will pause the action queue until the runDataTransform action completed. | Mobile |
INC-157317 | 620572 | Signature Capture supported in repeating dynamic layouts | An enhancement has been added which supports using Signature Capture on forms in repeating dynamic layouts. | Mobile |
INC-157532 | 631714 | Corrected runtime name length check for custom fields to resolve logged error | The error "Notification_MobilePush.Action ERROR - Can't parse JSON string to map" was being frequently logged. Investigation showed that in the Step8 activity in pySendNofication from Pega-Notification-MobilePush class, setting @String.length(customFields)>0 where customFields was a local value caused the runtime length check on customFields to fail. To resolve this, the Step8 activity in pySendNofication from Pega-Notification-MobilePush class has been modified from using @String.length(customFields)>0 to use @String.length(Local.customFields)>0. | Mobile |
INC-157696 | 623883 | Able to add message to Pulse when it includes "@." | Messages that contained the "@." character, like "@.com", "@.es" or "personas@..." were not being added in Pega Pulse. This has been resolved by setting the workid prefix in pyDefault of PegaSocial-Group and adding a check to see if the mentioned item starts with a workid prefix before doing an obj-browse. | Mobile |
INC-160275 | 628102 | Unchecked Include descendant classes in pyFeedUserDetails report definition | After upgrade from Pega 7.4. to Pega 8.4, the use of a custom class 'XX-Data-OperatorLoginDetails' which pattern-inherits from Data-Admin-Operator-ID was causing the error "Union not applied because properties [pyImageFileName, pyEmailAddress, pyUseLocale, pyDefaultTimeZone] are not optimized in Data-OperatorLoginDetails”. This happened when the case manager portal was launched and the report definition pyFeedUserDetails (introduced in newer releases) was running by default, and was due to the presence of a few unoptimized properties when the report definition had "Report on Descendant classes" - include all descendant classes, checked by default. To resolve this, the checkbox to Include descendant classes in pyFeedUserDetails is now set as unchecked by default. | Mobile |
INC-160295 | 635007 | Null check added for pzinskey in CSLoadSelectedArticle | In step 5 of CSLoadSelectedArticle, there is a call to pzGetAssociatedTags. Step 1 of pzGetAssociatedTags is an Obj-Browse with MaxRecords set to 100000000, and there is logic to retrieve records where pxLinkedRefFrom = Primary.pzInsKey. If Primary.pzInsKey is null, then the Obj-Browse will fetch all of the records. In order to prevent an unnecessary flood of results, a when condition has been added in the CSLoadSelectedArticle rule to check pzInskey so that when the context is empty the system will not call the pzGetAssociatedTags and return the entire record set. | Mobile |
INC-161398 | 639852 | DataSync SynchronizationResponseStreamer logging enhancements | The PegaRULES log contained "Response page does not match request, will generate failure response" errors even though no functional impact was observed. In order to enhance troubleshooting, additional DEBUG logs have been to DataSyncHandler, SynchronizationResponseStreamer is now logged on INFO level and contains more detail, and the error message has been modified to "Cannot prepare continuation response because offline package was stale. Will generate reset schedule response." to be more informative. | Mobile |
INC-168935 | 645396 | CalendarGadget updated to display events in Saudi locale | When using the pxCalendar section with the locale setting ar_SA, the calendar was correctly converted to a Saudi calendar but the events which were showing in the English version of the calendar were not showing up in in the Saudi Calendar. This was caused by the CalendarGadget page not populating properly due to the localized Hijri calendar failing a datetime check that was looking for a Gregorian calendar with time in GMT format, and has been resolved by updating the when rule "pzShouldDisplayEvent " to use the proper function for the localized calendar. | Mobile |
Project Delivery
There were no Resolved Issues for Project Delivery in 8.4.5
Reporting
8.4.5 Resolved Issues for Reporting
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-151185 | 618729 | OptimizeForLargeResults flag set in BasicListSpecification to avoid OOM | As soon as dedicated indexing started for a data type, the JVM heap occupation went beyond 99 and eventually caused a system crash due to an out of memory error. This was traced to the use of the BasicListSpecification API for retrieving results from the database always having the autocommit mode on, which loaded all instances for indexing into memory and interfered with PostgreSQL's cursors (query encapsulation). This has been resolved by adding an OptimizeForLargeResults flag that will be set to on in the BasicListSpecification activity before fetching the keys from the database. | Reporting |
INC-151293 | 630345 | Out of memory condition resolved for BIX extraction | A node was going down automatically during execution of a BIX Extract rule when working with old objects. Investigation showed this was related to an out of memory error: the work object had nested page lists, and when one of the page lists contained a propertylist which contained more records, the system was trying to add entries to the LinkedList if any properties were missing the reference during extraction. Because LinkedList allowed duplicates, it filled with enough errors to cause the out of memory condition. To resolve this, LinkedList has been replaced with LinkedHasSet, which does not allow duplicates. | Reporting |
INC-152108 | 622371 | Logic updated for exporting customized multi-column report definition | While attempting to perform an export to Excel for the results of a report definition which had two custom functions for two columns, the error "PRRuntimeException: Section 'pzRDExportWrapper' execution error on page '' of class 'Rule-Obj-Report-Definition'. : The Reference .pyTextValue(2) is not valid. " was logged. The export worked if either one of the columns was removed or if "Display values across columns" in the column settings was unchecked. This has been resolved by updating the logic in PivotTableDataGridGenerator for rowheaders to handle using DisplayValuesacrossColumns with FunctionAliases when not checked on in sequence. | Reporting |
INC-157974 | 621963 | Summary Report collapsible sections made accessible | In order to improve accessibility, the rules 'RRDataSummaryGeneration' and 'pzDisplayGroupNodeVertical' have been updated so the clickable expand icons in summary reports will append the value of the current group when setting the text "Click to expand or collapse". This will allow JAWS to uniquely identify exactly what will be expanded or collapsed. | Reporting |
INC-158473 | 626275 | BLOB decryption API updated for greater flexibility | A BIX extraction issue occurred after the class had enabled BLOB Encryption. The errors indicated the BLOB had been persisted in an incorrect stage, causing the extraction of the single item to never complete even though some CSV file was created. This was traced to the API used to read the encrypted BLOB, DatabaseUtilsCommonImpl.getStreamBytes, which had the limitation of decrypting only when a Site-specific cipher existed. To resolve this, the system has been modified to use a different API which works for all encryption modes, PageDatabaseMapperImpl.getStreamBytes(). | Reporting |
INC-158874 | 625383 | Zero value parameter handling added to Trend Reporting | After converting the Summary Views to a Report Definition, the Chart reporting functionality was not working in the Report Definition drill-down reports; whole records present were being fetched instead of only the graph chart count. Investigation showed that one of the parameters in the FilterBy was missing, and that pxSLAAgeTimeliness used 0 instead of null, causing the system to consider all records. This has been resolved by using the "reporting/useNullForUnqualifiedRecords" DSS setting to handle the 0 value and ensure all parameters are present. | Reporting |
INC-159399 | 626766 | Report styles color contrast enhanced for accessibility | In order to improve accessibility, pzReportBrowserStyles has been updated to change the report creation info color to #00000 to enhance the contrast. | Reporting |
INC-159759 | 629623 | Report title displayed for empty widget charts | Per design if there is no data to be rendered in the chart from a report added in a Widget in any portal, a static image is displayed saying "No Data to Display". However, if there were multiple reports in the Widget it caused confusion on which report was not being displayed because the image did not show the title of the report. To resolve this, an enhancement has been added to modify pzRRChartDiv to display the report Title even when there is no data in it. | Reporting |
INC-160178 | 632895 | Local time used for report filters | The date format in the filter condition of the report was being displayed in GMT format rather than the Local time Format. This has been corrected. | Reporting |
INC-160608 | 648634 | Added handling for missing deleted/report shortcut for drilldown | Whenever “Report Details” for a drilldown report without category was clicked, a Flow Action Error was generated. This was due to a missing Report shortcut normally stored in the Report Definition, and has been resolved by modifying pzPreProcessReportDetails to handle the edge case of a shortcut not present/deleted for a drill-down report. | Reporting |
INC-160825 | 629368 | Search landing page performance improved | Performance improvements have been made for the Pega Platform search landing page by implementing timeouts for all requests to ElasticSearch when executing PegaIndexAdminImpl.getIndicesInfo() and changing all requests for single index to requests for all indexes. In addition, SearchUtils.areDummyDocumentsPresent() has been modified to get all 'dummy documents' in case there are duplicate dummy documents in the ElasticSearch indexes. | Reporting |
INC-162649 | 639396 | DSS added for handling missing attachments | When an S3 repository was configured as storage, some cases were not coming up in search and exception errors were seen in logs for a deleted attachment after every system restart/re-indexing of the search. Investigation showed these case objects were in the broken queue for pyFTSIncrementalIndexer due to a null pointer error encountered when indexing the attachment, and that the attachments were available in the repository but could not be read from the attachment repository during indexing. To resolve this, a new DSS setting has been added which allows selecting one of two behaviors: - Pega-SearchEngine indexing/distributed/fail_on_missing_attachment_file = true : broken item is generated, but with a meaningful error message. This is the default behavior - Pega-SearchEngine indexing/distributed/fail_on_missing_attachment_file = false: case is indexed, but without the problematic attachment. Error message is printed out to the logs. |
Reporting |
INC-163173 | 650172 | Datatype import updated to handle null value | After upgrade, attempting to import CSV files in Data type using the import option provided was not working. This was traced to the AccessPolicy Filter value being set to null in the filterLogic, and has been resolved by modifying the 'if' condition in the NativeSQLSecurityPolicyHelper file to handle an empty value in the logic string of an access control policy condition for a datatype class. | Reporting |
INC-169055 | 646673 | Performance improvements for database queries and archiving | In order to improve the performance of database queries, repetitive unnecessary database calls have been removed, archival queries have been simplified, and diagnostic metrics were added. Optional batch requestors have been added to all archival services with their own DSS settings to allow processing more cases in parallel. It is recommended to create 2 additional indexes to help with the archival process. The indexes will be on: pegadata.pr_metadata (pyisparent, pyobjclass, pyarchivestatus) INCLUDE (pyinskey); pegadata.pr_metadata (pyisparent, pyarchivestatus) INCLUDE (pyinskey); |
Reporting |
INC-169856 | 649458 | Personalized table sort order limited | After implementing a personalized table, the query started adding more 'order by' sorts, causing system impact. This was traced to the pzPopulateSortOrder activity Implementation having different constants assumed for the same purpose (999 in one place and 99999 in another), and has been resolved by updating the logic in step 1 and step 2 to disregard sort orders higher than 999. | Reporting |
INC-174756 | 650672 | Queue processor correctly moves items to Broken Items | When an exception occurred while Queue Processor processed an item, he queue item was not moved to Broken Items. The error " inconsistent datatypes: expected - got CLOB DatabaseException caused by prior exception" was generated. This has been resolved by modifying the NativeSQL builder and NativeSQLBatchExecutor to allow the batch of queries to be retried. Additional changes were also added for Oracle databases to identify the correct column types. | Reporting |
INC-175622 | 652278 | Screen reader announces report names | An update has been made to pyReportBrowserItem to ensure names of the reports on the report browser are read correctly. | Reporting |
Security
8.4.5 Resolved Issues for Security
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-150317 | 625881 | Certificate updates handled across nodes | An SSL handshake exception was occurring when running a Connect-REST call automatically from the flow as a background process on a background processing node. The same Connect-REST worked fine when run manually. The exception detailed the issue as "SSLHandshakeException: java.security.cert.CertificateException: None of the TrustManagers allowed for trust of the SSL certificate(s) provided by the remote server to which this client attempted a connection." This was traced to a pulse change scenario where the reloading of the certificates was not happening on all the nodes after adding a new certificate or deleting a certificate. This has ben resolved by adding the DATA-ADMIN-SECURITY-CERTIFICATE class into the UpdatesCacheUtils.java class. | Security |
INC-155276 | 622815 | Null check added for step page | After creating and adding new Access Roles and application 'Access When' to the privileges instead of Production level, during run time the error "runtime.IndeterminateConditionalException: Trying to evaluate Rule-Access-When conditions L:IsProdAccess when there is no page to evaluate them against" appeared for the specific privileges. This was traced to a missed use case where the system falls back to the step page if the page for evaluating the 'when' condition is null, which did not account for scenarios where the step page can be null. To resolve this, a null check has been added which will fetch the primary page if the step page for the access 'when' condition is null. | Security |
INC-155813 | 629504 | SAML SSO redirects to correct URL when application and authentication aliases match | Whenever there was a match in the authentication service alias and the application alias, the application alias was replaced with empty after logoff instead of making the authentication service alias empty. For example, given an authentication service with the alias XYZ ("login with XYZ" alias option) and an application name XYZMyOps, the application alias was being changed from XYZMyOps to appMyOps after logoff. As a result, a blue screen error resulted when clicking on button "login with XYZ" again because it redirected to appMyOps, which didn't exist. This has been resolved by removing authservicealias and modifying AuthServiceAliasHelper.adjustPathIfAuthServiceAliasPresent() to change the method for calculating the pathinfo to string tokenizing. | Security |
INC-156647 | 626292 | Improved disconnected requestor cleanup for FieldService | A large number of requestors from FieldService with the status as 'Disconnected' were accumulating and causing performance issues. This was traced to the requestors not getting passivated due to users not logging out and new requestors being created for the same users next time, and was caused by the value of the DSS Initialization/PersistRequestor being set as "OnTimeout". When the DSS prconfig/timeout/browser/default is not configured, the default browser requestor timeout is 60 minutes. In this scenario, requestors were not passivating as the requestor passivation timeout was set to the refresh token lifetime for mobile users, which was very large and overwrote the DSS value. This has been resolved by removing the code which set the passivation timeout to the OAuth2 refresh token lifetime. | Security |
INC-158720 | 633990 | Handling added for obfuscation stale requestor error | When an environment was configured with URL encryption (initialization/UREncryption) set to true and the Authentication Service OPENID had a POST authentication activity which set pyAuthenticationPolicyResult to false, a blue screen error was seen with the exception "Obfuscation cannot be performed with a null or blank key". This was traced to the system trying to fetch the secureFeaturesForURLTampering property from staleRequestorrequestor object when the object had already been destroyed. This has been resolved by adding additional handling for the staleRequestorError. | Security |
INC-161260 | 634050 | Enhanced logging for CBAC policies | Additional logs have been added to assist in easier debugging of any configuration issues with CBAC policies. | Security |
INC-163226 | 632964 | Alert resolved for query parameter in non-standard format | A failure status occurred during refresh of an optimized grid section. Investigation showed this was caused by a parameterized datapage being used as a source for a section that passed a query parameter in a non-standard format. There was no functional impact, and the alert has been resolved by setting the system to call StreamParameter extraction only if the rejectTamperedRequests DSS is explicitly set to true. | Security |
INC-169186 | 655539 | Disconnect button availability extended | A case was not refreshing when the disconnect button was selected while using the standard section for authorization grant type authentication. This was traced to a query executed to find a div with attribute pzInsHandle, but that attribute was not applicable in the user portal. To support this use, the query has been extended to be applicable for user portal (attribute data-ui-meta) and Dev Studio landing page. | Security |
INC-170423 | 648982 | Added catch for SAML WebSSO duplicate key exception | After logging in from SSO, closing the Pega window and opening it again resulted in the error "Unable to process the SAML WebSSO request : Violation of PRIMARY KEY constraint. Cannot insert duplicate key in object." This has been resolved by updating the session index handling and adding a catch for the duplicate key exception. | Security |
INC-171838 | 651438 | Added mail/telephone link to allowed CSP child frame | After upgrade from v8.3 to v8.5, clicking on the mail / telephone link in the out of the box case participants gadget generated the Content Security Policy error "This content is blocked. Contact the site owner to fix the issue." Examination of the browser dev-tools console indicated the object refused to frame because it violated the Content Security Policy directive: "frame-src *". This behavior was specific to the Google Chrome browser, and has been resolved by adding code so the mailto: and tel: will be added to the frame-src when Data is selected under Child Frame-Source option. Unchecking the Data checkbox for Child Frame-Source on the policy landing page will remove these from allowed actions under CSP. | Security |
INC-171875 | 653894 | Skip restored for browser request CSRF token | Many SECU0008 alerts were seen in the production logs. This was the result of a CSRF token check on requests without pyActivity or pyStream, and has been resolved by restoring a conditional skip of the check as those other browser requests do not contain a CSRF token. | Security |
System Administration
8.4.5 Resolved Issues for System Administration
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-153138 | 625567 | Database primary keys generated as NONCLUSTERED for imports | When a primary key was defined for a table and the table was exported and then imported, the primary key was generated as CLUSTERED. This resulted in an MS SQL Cluster Index violation because all Pega-shipped tables generated during installs/upgrades have a PK constraint index with NONCLUSTERED index type as it allows for a longer key. This was a missed use case, and has been resolved by updating the system such that when importing with MS SQL database, the primary key index is made NONCLUSTERED all the time so it will be consistent with the base platform. | System Administration |
INC-154042 | 621259 | Pega Catalog custom upload control modified | Attempting to upload a catalog.zip file caused the system to hang and thread dumps were seen in the logs. Investigation traced the issue to the custom control used to upload the catalog, which was posting the entire content in form data rather than sending a multi-part request. The control contained both legacy code which used form.submit() and encoding along with new code that used SafeURL and sent an async request. With this, encoding could not be set to multi-part in case of an AJAX request. To resolve this, the catalog upload control has been modified to use the appropriate legacy code that performs form.submit() and sets the encoding properly. | System Administration |
INC-157196 | 629296 | Deprecated service package features now require authentication | Authentication has been added to deprecated features of the standard service package to improve security. If issues are encountered during product migration, please use the Deployment Manager. | System Administration |
INC-158519 | 625078 | Filter considers all instances pages during deployment | During package deployment, attempting to use Filter to skip some of the instances only displayed the result of the current active page instead of all pages. This was an unintended consequence of previous work, and has been resolved by adding the logic to strip quotes in the value and adding the "Pagination activity manages filtering" checkbox by default. | System Administration |
INC-159834 | 632247 | StackOverFlow logging improved | Enhanced diagnostic logging information has been added to help find issues when StackOverFlow errors occur. | System Administration |
INC-160288 | 626066 | Kerberos handling updated for database remap | After upgrade from Pega v7.2 to Pega v8.4, using Kerberos authentication was failing during the remap task. Investigation showed that null username and password values were being passed to SchemaAssignmentUtility along with the flags as arguments, causing the utility to misinterpret the arguments. As arguments should be populated only when flags and values are available and not null, an update has been made which will set the username and password flags only if they are not null in the Remap database tables target. | System Administration |
INC-161984 | 638855 | Web Tier busy threads released on timeout | Tomcat Web Tier Busy Threads were not being correctly released, causing stability and performance problems that included health check pings not receiving a thread to service the request so the node was marked as bad, users were quiesced, and the node replaced. Investigation showed the 'put' on the blocking queue did not time out when the queue was full and waited indefinitely, keeping the thread blocked. To resolve this, the system will use 'offer' on the blocking queue instead of 'put' to force thread release on timeout. In addition, debug logs have been added to understand when the offer (or Put) does not succeed and the state of the queue that is causing this issue; the debug logs for class com.pega.pegarules.session.internal.serverpush.RoboticAutomationImpl should be enabled only if the thread busy issue is observed and for limited time window while actively debugging. | System Administration |
INC-162262 | 654955 | Query added to find time zone for MSSQL database | The exception "com.microsoft.sqlserver.jdbc.SQLServerException: xp_regread() returned error 5, 'Access is denied.'" was generated when the AES agent PushDBSizeInfo was being run. This was traced to the GetDBInfo activity trying to retrieve the time zone of the MSSQL database by executing a query that used a Microsoft SQL routine to read the windows registry to get the current time zone. The error was not due to security within the SQL Server, but instead was caused by Microsoft Windows security related to the permissions on the registry keys for the users under which specific SQL Server processes were running. To resolve this, an update has been made to call a different query which will get the time zone for the SQL Server. | System Administration |
INC-171587 | 651026 | Resolved Push Node Daily Information exception | The "Push Nodes Info Daily" agent was generating an exception on each of the nodes. This has been resolved by enhancing the PegaAESRemote code to handle the exception and get the node info locally, then push it to the console when it is not able to get it via the cluster management API. | System Administration |
User Experience
8.4.5 Resolved Issues for User Experience
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-144778 | 619614 | Performance improvements for Ajax tab switching | When using a 360-view of members in a portal implemented with an Ajax container that showed information in multiple tabs, tab switching was taking a lot of time even though the data was already in the memory. Updates have been made to improve performance. | User Experience |
INC-144951 | 601977 | Updated specificity for custom-format inputs | After upgrade, custom formatting for a link control was not working in the skin or during runtime. This was an issue where identical format names used for links and text components caused selectors from the text area to take precedence over link styles, and has been resolved by updating styles to increase specificity for inputs instead of links. | User Experience |
INC-150072 | 621293 | Section Include error handling updated | When trying to add or include a section in the design template mode of a section rule or during run time of the application, the error "java.lang.StringIndexOutOfBoundsException: String index out of range: -1" was generated. Investigation showed this was originating from the SectionIncludeForm_Post activity of the class Rule-File-Form, and was traced to a system error related to the 'if' condition which verifies the circular reference of the section being newly added. Because this was a system error and not one generated by Pega, there was no handling for it. To resolve this, the sectionincludepost activity in rule-form class has been updated to determine the source and properly handle the error messages. | User Experience |
INC-152283 | 626397 | Added handling for switching table context in a section | After configuring multiple tables in a section with row-editing on master-detail, opening the detail section of one of the tables and clicking inside it and then trying to open the details of another table generated the error "Can not render section'. The section would render correctly if the browser was refreshed. Investigation showed this was due to the new section opening in the wrong context, and the system has been updated to support this use case. | User Experience |
INC-153163 | 615113 | Header present in timeout modal window | After upgrade, the header was missing in the session timeout modal dialog when using the pzDisplayModalDialog FlowAction with the pzDisplayModalDialog HTML Rule. This was traced to the title value fetched from HTML not being set for use in the onload function of iframe, and has been resolved by ensuring it is handled by the pzDisplayModalDialog HTML rule. | User Experience |
INC-153318 | 621363 | Check added to match time zone for Time Picker | Time picker popup was showing minus 5 hours from the actual value in the time input field, though the value was updated correctly in the clipboard. The console error "Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist." was seen. This only happened when using the non-template mode of the Datetime control and configuring it with TimeOfDay property with the combination of Allow text entry as "No" and onchange event as Refresh-Section. The issue was not seen if Allow text entry was "Yes" from the presentation tab or if the event action "Refresh-section" was removed. This was caused by the markup process using the operator time zone to format the value but the default time zone (GMT) for the data-value. This has been resolved by adding a check in non-template mode so the value markup will be generated using defaultTimeZone. | User Experience |
INC-153643 | 621713 | Dynamic layout group text area correctly rendered as editable for page list type | A text area configured in one section with Edit Options set to 'Auto' had the text area field appear as Read Only at runtime. The section included an embedded sub-section where a Dynamic Layout Group (Tab) was configured with Source set to "Property", and the text area correctly appeared as editable in the wrapper section if the Dynamic Layout Group (Tab) was removed from the sub-section. This was caused by the section content for the dynamic layout group not being handled for page list type, and has been resolved. | User Experience |
INC-154824 | 620921 | Check added for hidden field during validation | When using custom validation for a future date, after certain steps the message "value cannot be blank" was displayed even though there was a value in the date control. This was traced to the validation also being performed on a hidden field, and has been resolved by adding a condition in pega_validators to check for hidden fields when running the validation. | User Experience |
INC-154860 | 626098 | Corrected extra space from harness child elements | After upgrade from v7 to v8, extra space was seen at the bottom of harness content. This was caused by the header and footer heights being included two times while calculating mashup height, and has been resolved by updating the postMashupHeight method to skip including the header and footer height while iterating child elements for harness-content-workarea-view. | User Experience |
INC-154977 | 622802 | Added hidden field validation for offline app | An enhancement has been added to handle the usecase of offline apps needing to validate hidden fields. This will be handled through the new flag "pega.u.d.validateHiddenFieldsInOffline". | User Experience |
INC-155070 INC-167747 INC-167599 INC-165277 INC-164892 INC-157367 |
637578 646577 648281 645170 636538 637945 |
PDF generation corrected | Issues with PDF generation have been resolved by upgrading the PD4ML libraries to version 4.0.9fx5. | User Experience |
INC-155406 | 638702 | Clipboard security updated | Security has been enhanced for clipboard properties by restricting registration for readonly properties. | User Experience |
INC-155855 | 620575 | Safe check added to modal window pop-up cancel | On click of a link to add items to the rows by selecting the page list from pop-up window, clicking on the cancel button generated a node name undefined error after which clicking the link would not open the pop-up window at all. This was traced to the pre-processing activity in the flow action used to copy page list from one page to other, and has been resolved with the addition of a safe check. | User Experience |
INC-156826 | 625436 | Logic updated for adding new child/sibling to hierarchical paginated tree/grid | When using a hierarchical table with pagination enabled, navigating to the last page and attempting to add a new child or sibling produced unexpected results. Navigating to the last row, selecting child, and clicking 'add sibling' caused a new row to be added. Adding a child caused the child elements to be added on top instead of at the bottom. This was a missed use case for adding a child/sibling when using a paginated tree/tree grid, and has been resolved. | User Experience |
INC-156912 | 627485 | Updated accessibility for Rich Text Editor navigation in a modal dialog | When navigating through a Rich Text Editor while in a modal dialog, it was expected that once focus was brought to the RTE Toolbar (Alt+F10), pressing Escape on the keyboard would bring the focus back into the RTE text area and the cursor would appear. However, when this Rich Text Editor was within a modal dialog, pressing Escape closed the modal dialog entirely. This has been resolved by updating the code to stop the Escape key event propagation from the RTE toolbar when in a modal dialog. | User Experience |
INC-156992 | 628622 | Corrected custom portal JUMP condition | After upgrading Pega from 8.3 to 8.4, a custom portal was not correctly rendering the stream although the activity was getting executed and the clipboard had all the necessary data. This was traced to a syntax error in work done earlier that placed the JUMP condition (.pyDesktopType=="Custom") in ShowDesktop at the pzPopulateRequestor call step, and has been corrected. | User Experience |
INC-157041 | 626308 | Performance improvements for email listener processing | Email processing was taking an excessive amount of time when a very large number of email listeners were running. Performance has been improved by updating the implementation of pzGetChannelByName to use obj-browse instead instead of looping through channels. | User Experience |
INC-157353 | 624009 | Handling added for autoclose of assignment in tabbed MDC | After configuring an Ajax container in a section using tabs and max doc defined as 8 with 'doClose' set after processing has been completed, finishing the assignment caused the work item tab to stop working. Checking the console showed a script error was being thrown. Investigation showed that when the doClose action was triggered and tried to find the activeTabs in MDC, the target element being fired was null. This has been resolved by adding a condition for the doClose to handle the combination of autoclose and tabbed MDC that will close the current Ajax container div before proceeding. | User Experience |
INC-157404 | 630692 | Adaptive Model report information exports correctly | Clicking export to Excel or PDF in the Prediction Studio Adaptive Model report was not working. Investigation showed the first double quote of the propositionName was getting replaced from & quot ; to "", which resulted in an error while performing openUrlWindow action. This has been resolved by adding a new helper handler, while creating context menu using Handlebars. | User Experience |
INC-157448 | 638922 | Latitude and longitude populated for CreateWork history | After enabling geo location in the casetype rule, when the case was created using the Create menu option from either Dev studio or Manager portal the Latitude and longitude values were set on the pxRequestor page and were available in the Case Audit history in the Map control. When the same case was created using CreateWork action configured on a button, it did not log the latitude and longitude values in the case Audit history. Investigation showed this was caused by a 'when' condition in the AddWorkHistory activity which checks the requestor page for latitude value and which had a null value when a createWork action was used to create the case. To correct this, the template metadata of the form will be populated with latitude and longitude values from pxRequestor page to be used in the latitude and longitude hidden fields. | User Experience |
INC-157662 | 631997 | Accessibility updates added for images and icon controls | In order to improve accessibility, aria-hidden has been added to button and link controls for decorative images, and the alt attribute will be generated by the icon control only when the icon source is Image. The icon control has also been updated to set accessibility roles based the following: if actions are configured -> role=button if no actions are configured -> role=img if type is url/phone/email -> role=link |
User Experience |
INC-157699 | 624595 | Customer 360 Tabs load in Mozilla Firefox browser | After upgrade from v8.1 to v8.4, the layout group's tab content was not loading as expected in the customer 360 view when using the Mozilla Firefox browser. Investigation showed this was due to the “role” attribute being removed from the header div by the on-hover showSmart tip action configured on the dynamic layout tabs. This has been resolved by updating the system to use data-role along with the role tab. | User Experience |
INC-157737 | 631686 | Added ability to support multiple domains for users | Previously, the DSS setting MultiTenant/CrossTenant/DomainName supported just a single domain. In order to support multiple domains for internal and external users, an enhancement has been adde so that given two domain values provided as comma-separated values in “MultiTenant/CrossTenant/DomainName” DSS setting, pzSetCrossTenantDomain will determine the correct domain value using pxRequestor.pxReqServer. | User Experience |
INC-157795 | 624670 | DateTime dropdown control will retain entry on validation error | For a Date Time control with display mode as dropdownlist, choosing just a month or a day from the dropdown and refreshing the section resulted in an invalid date validation and the field being set to the current date. Choosing the date from the calendar icon or filling in all three drop downs worked as expected. This has been resolved by updating the datetime control so that if a dropdown mode with property as type DATE has a validation error on refresh action, the user-entered data will show in the dropdown instead of the current date/time. | User Experience |
INC-157860 | 633945 | Corrected error message display in right-to-left locales | When using the standard report definition view in the Arabic (ar_AR) locale, error messages for a filter condition were displayed with an incorrect extended horizontal scroll bar with white space. This was traced to the legacy popover styling causing an issue with locales that display text from right to left, and has been resolved by setting the default overlay left to 0PX for these locales. | User Experience |
INC-157957 | 624207 | Autocomplete correctly sets null values in clipboard | When using an autocomplete control with display configuration "In a List", if a property value was null then the value of the property in the clipboard was set as “undefined”. This was due to the pzGetACData activity returning only properties with values and excluding empty properties, causing setProperty to use "undefined" when a property value was not found in the response. To resolve this, a condition has been added to the processAdditionalProperties method to replace an undefined value with an empty string. | User Experience |
INC-158129 | 635304 | Left navigation expansion made accessible for tab/keyboard actions | The left navigation "aside" DOM element did not expand if reached with the keyboard tab actions, but did with mouse hover. This has been resolved by updating the selectors for focus within left nav and updating the script to collapse the menu pyAutoCollapseLists section. | User Experience |
INC-158605 | 628571 | Improved performance for Repeat grid display | After upgrade from Pega v7.2 to Pega v8.4, the Repeat grid was taking significantly longer to display the results. This was traced to changes made relating to BAC security that resulted in pzGridOpenAction trying to open each record to find the relevant pzInsHandle. Because this call is not actually required for Data- items, an update has been made to avoid this and improve performance. | User Experience |
INC-158974 | 631271 | Messages cleared from WorkPage so "load more" link works as expected | After being migrated, a link button script for "load more" in a repeating dynamic layer was not rendering more data on the UI if there was an error in pyworkpage. Refreshing the UI to clear the error and clicking the "load more" link then displayed the new set of Data. If no error occurred on pyworkpage, then clicking the "load more" worked the first time. This was traced to the success handler ignoring the response if there were errors on pyWorkPage, and has been resolved by updating the pzinvokerdlpreprocessing activity to add 'Page-Clear-Messages' as the first step. | User Experience |
INC-159008 INC-168050 |
634766 640133 |
Resolved unregistered request for Dev Studio clipboard viewer | After upgrade, running a report in Dev Studio and then clicking to start the tracer or clipboard did not open, but instead generated the error "Unregistered request encountered." This has been resolved by adding a pySecureFeatures check in step1. | User Experience |
INC-160130 | 630959 | MultiSelect control corrected for Google Chrome on Tablets | It was not possible to expand the multiSelect control dropdown in Google Chrome on tablets. The search worked if text was typed into it. This was due to the method isMobilePhone returning true for both mobile and tablet, causing the system thought it was mobile and stopped the normal behavior. This has been resolved by adding a regular expression check in the pzpega_control_multiselect isMobilehone() method to check if it a tablet. The isMobilePhone() method will return false if the device is tablet so the dropdown appears as expected. | User Experience |
INC-160294 INC-162054 |
640650 633081 |
Updated context switch handling for event fired on modal | A modal window thread became inactive after switching out from a modal window to another tab and returning back. This was traced to the submit modal being called on the OpenPortal thread, and has been resolved by updating the harnessContextSwitchHandler method to update the current context when an event is fired on a modal. | User Experience |
INC-160379 | 633675 | Closed case preview display corrected | Hovering over the Preview of a closed case in Cosmos User Portal was showing as blank instead of displaying the details, and clicking on it caused the screen to freeze. The case preview of an open case worked as expected, as did opening the preview of a closed case after looking at the preview of an open case. This was traced to an error in the HTML code for the anchor tag in the pyOperatorInfo control, and has been corrected. | User Experience |
INC-160497 | 627713 | Able to add missing headers from App Studio | A missing header in pyActionArea and pyActionAreaheader could not be added from App Studio. This was due to the sections not being built using design templates, and has been resolved by updating the section to be editable in runtime. | User Experience |
INC-160500 | 627266 | Cosmos App Studio icons have helper text | Enhancements have been made for accessibility by adding Helper text to icons in the Cosmos theme for App Studio. | User Experience |
INC-160843 | 631726 | Performance improvements for multiple visibility expressions in repeating structures | After upgrade, performance degradation was seen and PEGA0069 alerts appeared frequently. Investigation traced this to performance issues with the expression evaluation on the client when there were multiple visibility expressions in the repeating structures. To resolve this, updates have been made to the pzpega_ui_ExpressionEvaluator.js to reduce the number of calls to _getCtxElement( ) in side loops. | User Experience |
INC-161430 | 627719 | Accessibility Component/Widget role added to pyCaseErrorSection | Page level errors were not accessible due to the error section being wrapped inside a dynamic layout whose contents were not readable. This has been resolved by updating dynamic layouts to use the correct accessibility roles. | User Experience |
INC-161682 | 642604 | Context check updated for Delegated Data Type error message | Once error messages for some auto set by declare expression appeared on the delegated Data Type editing screen, they persisted even after these errors were fixed. This was traced to the pega.ctx.harnessID and body's harness-id not being in sync, and has been resolved by updating root contexts to look for the error. | User Experience |
INC-161757 | 630689 | CKEditor correctly formats copy and paste | Formatted text from Micrtosoft Word was not retaining its format when pasted into the rich text editor. This was caused by the inch to px and pt to px conversions not happening properly for margins, and has been resolved by adding a margin fix for nested bullets and lists. | User Experience |
INC-161937 | 640262 | VMWare workspace One Mobile support added | Support has been added for the VMWare workspace One Mobile app by updating the BrowserUtilsRuntime file to add the necessary user agent. | User Experience |
INC-161999 | 632208 | Correct operator time zone passed for offline mobile case | After selecting a date on the UI for a date only property and submitting it, the date was automatically incremented to the next day when using the mobile offline app. No increment was seen in the mobile browser. This was traced to the operator time zone being overridden for date and date range properties in an offline case, and has been resolved by ensuring the correct operator time zone is passed when working offline. | User Experience |
INC-162122 | 633065 | Create modal is accessible when creating case from Create menu | After creating a new case in the Cosmos User Portal, the “Create” screen Modal Dialog opened but focus did not move to any element within the modal dialog but instead stayed on the “Create” button on the left side menu of the User Portal. It required approximately 50 tabs to reach any actionable element within the modal dialog. Investigation showed that the create modal launched the section in an AJAX container that looked like a modal, but the focus was not being correctly set on the first element. This has been resolved by ensuring there is a focusable element when launching an AJAX container. | User Experience |
INC-162692 | 629635 | Added primary portal navigation role | While in the User portal, Accessibility inspector displayed the warning "Primary Portal navigation may be missing a navigation role." This role has now been added to pzPortalNavigation. | User Experience |
INC-163198 | 637795 | Performance improvements for research path interaction | Research path interaction driver composite loading was taking an excessive amount of time due to RULE-HTML-SECTION @BASECLASS ERRORLIST being called multiple times. This has been resolved by changing the ErrorList Section to guard the getMessagesMapByEntryHandle API call with a condition "if (ClipboardPage.getMessageCountAll > 0)". | User Experience |
INC-163341 | 637297 | Discard functionality in dirty check confirm corrected | Clicking on the Discard functionality in the dirty check confirm on popup closed the item rather than launching the expected work flow. This was traced to gDirtyOverride being returned as false instead of null in the explorerFormIsDirty function. To resolve this, the logic used to for gDirtyOverride on a native alert close for dirty handling has been removed. | User Experience |
INC-163544 | 639298 | Accessibility corrected for Cosmos user portal left navigation panel | It was not possible to see the focused control label in the left pane of the Cosmos user portal because it was not expanding when its control received focus from tabbing. Investigation showed the class acting as a polyfill for :focus-within was applied only on the observed element when using Microsoft Explorer 11, and this has been resolved by updating the CSS selectors and ensuring the class is applied to every parent element down the DOM tree. | User Experience |
INC-163596 | 636234 | Checkboxes receive correct focus with accessibility | It was necessary to click the tab twice in order to check the checkbox in the filter popup. This has been corrected by adding a check in the firstfocuselement method so the focus is placed correctly over input type elements. | User Experience |
INC-164311 | 635784 | Correct datetime target property used | When using a declare expression for a datetime property to get its value from another datetime property, attempting to change the source datetime later resulted in the error "28-mar-2021 is not a valid date/time value". This occurred when the source datetime property had display readonly formatting, and was traced to the formatted value being sent in the callGetTargets API instead of the selected date value, which caused the function to be returned as empty because there was no target property in the same page before submission. To correct this, a check has been added which will get the value from data-value instead of element.value and will skip callGettragets if the target is empty. | User Experience |
INC-164631 | 641441 | Updated Ajax container close to resolve intermittent portal freeze | The portal was intermittently freezing after the "+" icon was clicked to create a new case from the Create menu. This was traced to the Ajax container not closing after creation of the create modal, and has been resolved. | User Experience |
INC-164924 | 639010 | Serbia added to country codes list | The CountryCode for Serbia (SRB) has been added to the existing country codes. | User Experience |
INC-165363 | 635076 | Dirty Check Warnings added for decimal fields | Dirty Check Warnings have now been added for decimal fields by adding the required logic to the isContainerDirty API in pzpega_ui_doc_dirtyhandling js file. | User Experience |
INC-165567 | 643379 | Window reference added for custom tab handling | After configuring a tab layout in the portal harness rule to get tab view, launching the portal from Designer Studio and opening the tabs worked as expected, but opening the portal using end user operator and performing any operation in a tab resulted in the error "Uncaught ReferenceError: gIsCustomTabHeaderEnabled is not defined". This was caused by a reference property that was not being referred properly, and has been resolved by using gIsCustomTabHeaderEnabled from the window reference to handle the undefined scenario. | User Experience |
INC-165964 | 656815 | Harness context set for modal dialog on interaction portal | An AddDelete refresh condition on a page list property was not triggering a ReloadSection as expected. This was a special use case in the interaction portal where a modal dialog was opened but the harness context was not set properly, and has been resolved by ensuring the harness context is correct. | User Experience |
INC-166168 | 643922 | Leading space will be trimmed from date string | A given value in the date calendar icon was reverting back to the current date. This was traced to an imported list of date strings in different formats that included a leading space. To handle this, code changes have been made that will trim the extra space in the date when processDate method is called. | User Experience |
INC-166444 | 642030 | FlexModalTemplate Modal window size consistent | The FlexModalTemplate modal window size was changing on second click. This was a missed use case for dirty dialog CSS implementation, and has been resolved by moving the CSS necessary into the isDirtyDialogOpen if condition. | User Experience |
INC-166706 | 647477 | Handling added for Rich Text Editor base tag in email | Clicking on an email interaction case from the worklist was not opening the case. This was traced to a base tag present in Rich Text Editor content which impacted security protections, and handling has been added to remove this tag. | User Experience |
INC-167379 | 640577 | Unescape function added to CSR portal layout template rule | When older sections previously used by the CSR portal were carried forward into more recent versions and were 'saved as' in the application ruleset, the error "Uncaught TypeError: pega.util.Dom.unescapeHTML is not a function" appeared. Dashboard loading took an excessive amount of time or didn't load at all, and no actions were working on the dashboard screen and tabs. This was traced to there being an older implementation of pega.util.Dom.unescapeHTML in pzpega_ui_template_layout_header, and this issue has been resolved by adding a custom unescape function in the rule itself so that it doesn't fail in cases where the dependent rule is not able to load the standard unescapeHTML utility. | User Experience |
INC-168426 | 648079 | Corrected popup placement | SmartInfoContainer element top and left dynamic values were incorrectly calculated for popups. This was caused by the Cosmos application style overriding the platform style, and has been resolved by removing the Cosmos styling and using platform CSS for the tooltips and guided tour elements. | User Experience |
INC-168695 | 643014 | String conversion logic updated for toFixed function | The toFixed function of pzpega_ui_formatNumber.js was incorrectly converting a string while formatting the value. This potentially caused the UI to hang until manually refreshed. To resolve this, the logic has been updated to convert the string to a number before calling toFixed(). | User Experience |
INC-169866 | 653550 | View content type updated to FIELD | After upgrade table grids were not visible in the UI for some operators while other operators with the same access group were able to see the same table with the result rows. Investigation showed that the personalized view stored in 8.1.x did not have a content type set, causing all of the columns to be hidden after upgrade to 8.4+ due to the personal view not matching with the design time view. To resolve this, the content type has been updated to FIELD for views. | User Experience |
INC-171352 | 653693 | Focus set correctly on the modal window in theme-Cosmos | in theme-Cosmos with touch enabled, clicking on a button to open a modal window set the focus on the background instead of in the modal window, forcing tabbing through the full page to reach the modal window. This was traced to the templates not using the pzModalCancel control which has the necessary container_close for the modal dialog close icon, and has been resolved by adding a check to set the focus correctly. | User Experience |
INC-171449 | 649931 | Added null check for expression ID in Disable-When-Condition | A Radio Button was not disabled despite a 'when' rule if a Data Page was used as the List source in the Radio buttons control and the property was passed as a parameter of the data page. Investigation showed that the expression ID for the Disable-When-Condition was present, but there were no expressions to evaluate. This has been resolved by adding a null check to verify if expressionResults is an empty object. | User Experience |
INC-172178 | 655023 | TransID updated to trim spaces | While preparing newTransID from a response, special characters slipped into "newTransID" param value and generated an error. This has been resolved by updating the system to trim spaces from newTransID. | User Experience |
INC-173345 | 655040 | Check added for empty geolocation values | Latency issues were traced to Geolocation-related errors in the log files. To improve performance, changes have been added to check for empty pyLatitude and pyLongitude before adding in the postdata of an async request. | User Experience |
INC-174020 | 650890 | Performance improved for Directed Web Access (DWA) | Slowness when using a Directed Web Access (DWA) link has been resolved by refining the code of the PZPEGA_UI_DOC_EVENTSCONDITIONSCHAINING script to improve performance. | User Experience |
INC-175990 | 652087 | Browser check added to ensure on-click event trigger | Clicking Submit from the screen after opening the case from the worklist did not trigger the click event action when using Microsoft Internet Explorer 11. This was due to a change in that browser, and has been resolved by adding a check. | User Experience |
INC-176734 | 655179 | Invalid manual time value stops progress and displays error | When an invalid time was manually entered, eg. 11, the system previously remained in an error state until the time was corrected. Post-update, the current time of the user's session / browser was populated into the time field when an invalid time was entered. Although the error still displayed, the current time was saved and the user could continue. This has been resolved by adding a condition to show the entered time value and not continue if the entered time value is invalid. | User Experience |
INC-176971 | 655218 | Web Mashup works from nested iframe | Web Mashup was failing with the error "Browser cookies must be enabled for PRPC Internet Application Composer to function" when it was configured within a nested iframe setup. This has been resolved by adding a cookie check and the appropriate handling for this usecase. | User Experience |
INC-177206 | 655631 | Date Time control accepts custom length | The date time control was ignoring custom length and expanding the field to the layout width. This was an inadvertent side effect of work done around the visibility of the date picker icon for non-templated layouts, and has been resolved by ensuring the date picker will render with a custom width configured in design time. | User Experience |