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.2 Patch Resolved Issues for Case Management
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-102005 | 556731 | Child case ID prefix preserved | When configuring a case as a child case in App Studio, the case ID prefix was cleared out of the field on the Settings tab for the case type. Investigation showed that when the child case was added to the parent case in App studio, pzaddcasetypetoapp was called but the parent activities did not pass the CaseID parameter of the child case type. This caused the CaseID prefix of the child to be null and displayed as blank in the Settings and Application. This has been corrected by ensuring the system will get and set the parameter value. | Case Management |
INC-119754 | 561523 | Corrected 'when' rule context for GetCaseDetails | The Pega REST API Get Method /cases{CaseID} failed if the Child Case was set with Manual instantiation using a 'when' rule. This was traced to the 'when' rule being resolved using @baseclass instead of the class of the case type, and has been resolved by updating the pzGetCaseDetails activity to evaluate the 'when' rule on the case page. | Case Management |
INC-120608 INC-128087 INC-129982 |
573001 572452 574393 |
Temporary case creation from Cosmos resolved | Creating a temporary case in Cosmos Portal was not working. Investigation showed that the pySkipCreateHarness and pyCreatesTemporaryObject properties were not populating properly on the D_StartingFlows data page, which was traced to the way openSelectedColumns API handles non-exposed columns. To resolve this, the system has been updated to use the openEngine API for opening starting flows if the pySkipNewHarness or pyCreatesTemporaryObject property values are null. | Case Management |
INC-121435 | 563877 | Handling added for null requiredskillcount on assignment | If the property pxRequiredSkillCount was blank on an assignment when moved to a workbasket, it was never presented for Get Next Work. To resolve this, handling has been added which will change the null to 0 so the assignment is properly queued. | Case Management |
INC-127077 | 564109 | Busy indicator appears when uploading via Select | After upgrade, the “loading symbol” (busy indicator) was not appearing while uploading large attachments using the Select button. This was a missed use case in recent changes to related to AsyncUpload, and has been resolved. | Case Management |
INC-128921 | 571866 | Updated End User portal Cross-site scripting handling | Additional Cross-site scripting handling has been added to the End User portal. | Case Management |
INC-130326 | 571522 | Added handling for apostrophe in Pulse username | The User Name in Pulse notifications was displayed with symbols if the username has special characters in it, for example the apostrophe in "O'Hara" was showing as ' in any notification. This was a side effect of work done to improve security, and has been resolved by using org.apache.commons.lang.StringEscapeUtils.unescapeHtml to unescape HTML characters in the pzDisplayGadgetMessage control. | Case Management |
INC-131025 | 573113 | CheckStorageForDuplicateFiles validation added | When two files were attached to case, attempting to delete one file and download the other one resulted in the error "Unable to get file from repository. There was a problem setting/connecting the file path or repository”, and an exception related to "There was an issue creating stream for the file.: Cannot find S3 object at Container" was generated. As repositories are not allowing file versioning, validation was not happening when multiple files with the same file name were uploaded. To resolve this, an enhancement has been made to perform validation in the pzCheckStorageForDuplicateFiles activity. | Case Management |
INC-131151 | 572834 | Resolved empty body for Reject email | When using the pzEmailActions Section in Correspondence for Approve/ Reject functionality via email, there was no reply body in the email for Reject Option. This was due to the flow action for the Reject email being different than that of the Approve email, and has been resolved. | Case Management |
INC-131296 | 569578 | Updated duplicate file name handling for drag and drop | When files with the same name were attached with drag and drop, the files were being overridden and became visible to non-authorized users. This has been resolved by using the AppendUniqueIdToFileName parameter when using the pzMultiFilePath control which will append a unique ID to the fileName and pass it in the request along with the file data. | Case Management |
INC-131385 | 573456 | Swagger APIs updated | The Swagger File APIs have been updated to ensure swagger document files generated meet specifications for editor.swagger.io . | Case Management |
SR-D72456 | 561119 | Added duplicate page handling for Bulk actions | Trying to resolve cases using Bulk Actions and Bulk Resolve resulted in the exception "Trying to save an invalid page. The cover open count is incorrect; it is -1". This was traced to duplicate pages available on the clipboard with same the insHandle. To resolve this, the pzUpdateAndDeleteAssignments activity has been updated to check for duplicate pages, then pick the right page which is not being served by the findPageByHandle engine API. | Case Management |
SR-D85664 | 559012 | Added handling for flow Status values over 32 characters | After upgrade, flows were throwing exceptions due to the 32 character limit for the Status field, causing issues for flows where the status on the case is determined dynamically based on value from expression builder. To resolve this, the limit has been removed on the property and a validate rule has been added that will only use the 32 character limit to check static plain text. | Case Management |
SR-D87898 | 552590 | SaveAttachment Activity in Data-WorkAttach-URL updated | A 'when' condition was not properly evaluated for Activity SaveAttachment (CL:Data-WorkAttach-URL ), causing the Next assignment screen to not be displayed. This has been resolved by modifying the handling of Page Names used as activity parameters to remove the use of the specific PageName "pyAttachmentPage" in the operation and make it generic to Primary in the SaveAttachment Activity of CL: Data-WorkAttach-URL. | Case Management |
SR-D92352 | 553618 | Completed onChange will reset FileInput value to null | When attaching a file using the "Select File" button, it was not possible to attach the same file after deleting it. Re-attaching the file worked as expected when using Drag and Drop. Investigation showed that the onchange event occurred only when the value of an element was changed, so in this case trying to attach the same file did not change the value of the element and did not fire the onchange. To resolve this, the value of FileInput in pzMultiFilePath Control will be set to null at the end of the onChange event so that an onChange event will be triggered next time even if the same file is added. | Case Management |
SR-D96254 | 555277 | ViewID parameter passed as part of DX API response payload for all application levels | When application level was set to '5' (Production), the DX API was configured to skip passing 'ViewID' parameter as part of response payload. This only applied to application level '5' and not to other levels. In order to support enhanced customization, the system has been modified to not consider production level and always pass 'viewID' parameter as part of DX API response payload. | Case Management |
SR-D97673 | 561504 | Assignment opens correctly in tabbed AJAX container | When opening a case in review mode and then clicking the assignment link, the assignment opened in a new browser window instead of opening in the tabbed AJAX container. This was due to the AJAX container being stateless: directly opening the assignment with href replaced the entire document. To resolve this, the "pega.desktop.openassignmnet" API will be used. | Case Management |
SR-D98336 | 558994 | V1 DX API response now includes "Label" or "Header Title" | When FlatList was opted to 'Full', the GET and PUT calls made to get the JSON response for an action did not return the header object information of that group. This has now been modified so the labels are returned in the V1 API response. | Case Management |
Cloud Services
There were no Resolved Issues for Cloud Services in 8.4.2
Conversational Channels
8.4.2 Resolved Issues for Conversational Channels
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-127591 | 564820 | isAuthenticated checks trimmed for Performance Improvement | In order to improve performance, a duplicate check of pxIsRepositoryAuthenticated has been removed from the Function Rule. | Conversational Channels |
INC-127859 | 564621 | Email image retrieval switched to Lazy Load | In email, multiple images being loaded at once resulted in a performance impact. To resolve this, the fetching of inline images has been modified to use Lazy Load optimization which will retrieve file content from S3 storage on a need basis. | Conversational Channels |
INC-127891 | 564728 | Added check for redirects when getting images from S3 | When retrieving images from S3 storage, a 303 redirect status response code was shown. Investigation showed that using a public URL caused the redirects, and this has been resolved by adding an AG hash while fetching images via an activity. | Conversational Channels |
INC-128164 | 567430 | Resolved CommitError when trying to send email | An error related to email was intermittently encountered while working on a case. This was traced to a local setting for Rule-ObJ class that set a read-only privilege, which appeared to have conflicted with the expected permissions around email template saving. This was an unexpected use case, and has been resolved. | Conversational Channels |
SR-D87188 | 551351 | Mentioned user in Pulse correctly converted to hyperlink | In the Interaction portal, mentioning a user in Pulse using @ was not converting the name to the user name with hyperlink for Email Interactions. @ mentions were working as as expected in Phone Interactions. This problem was introduced as part of using OWASP to sanitize HTML user input in Rich Text support, and was due to OWASP converting @ to an HTML entity. To resolve this, the @ will be excepted from HTML conversion. | Conversational Channels |
SR-D87412 | 563229 | Support added for multi-language email parsing | Parsing an email body for different languages was causing performance issues. To resolve this, an enhancement has been added to support email IVA in seven languages; to use this, override the Work-Channel-Triage.pyParseReplyMail activity and add the required languages in the given parameter. | Conversational Channels |
SR-D92688 | 551342 | Optional feature to improve pxETReport performance | Poor performance was seen when using pxETReport. This was caused by the system loading the recent cases widget by looking up all the ET cases within last 30 days, opening each ET case to check if it is from the same pyFrom email address, and then if yes, opening its related service case. On a complex system, this was potentially a slow process. To improve performance, the "Related cases" feature can now be disabled through an overridable 'when' rule. | Conversational Channels |
SR-D93031 | 555677 | Calendar fields maintained after refresh | Calendar fields were not displaying in PegaChat after the browser was refreshed. This has been resolved. | Conversational Channels |
Data Integration
8.4.2 Resolved Issues for Data Integration
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-112001 INC-132531 |
556978 572826 |
Corrected REST resource parameter mapping | After upgrading, the PUT rest service was not working correctly. This was traced to a handling issue in the value calculation for a new variable(offset) recently introduced to keep track of next resource parameter in order to replace it with the runtime token and collect resource parameters and their respective runtime values. This has been resolved by updating the system to recalculate the value of offset as soon as the design time resource parameter token is replaced with the runtime token. | Data Integration |
INC-118926 INC-126082 INC-125458 |
563808 563443 562536 |
ArtifactoryStorage URL construction with port updated | After configuring a repository as a JFROG artifactory with a ruleform that provided a URL / port number and repository name, test connectivity worked as expected, but deploying the codeset using pipeline or importing the codeset using the import functionality generated the error "Unable to construct artifactory url due to invalid file path". The root cause of the issue was traced to the ArtifactoryStorage java class, which did not accept the port number in the format provided due to changes in the API. If there was no portNumber in the URL, the issue did not occur. To resolve this, the constructor has been changed to properly build the URI per https://docs.oracle.com/javase/8/docs/api/java/net/URI.html. |
Data Integration |
INC-119646 | 563696 | RemovePrivateBlockedAndWithdrawnRAQs updated to avoid exception | If the method removePrivateBlockedAndWithdrawnRAQs() (present on the AgentRuleUtils.java class) had both the "ignore personal rulesets containing checked out files" and "ignore "Blocked or Withdrawn agent" conditions set, raqsItr.remove(); ran twice and resulted in a java.lang.IllegalStateException. This could lead to undesired outcomes such as agents not showing up properly. To correct this, the code has been refactored to avoid running raqsItr.remove(); more than the necessary number of times. | Data Integration |
INC-119678 | 564202 | Improved timing for node tracing termination | The tracer stopped tracing after tracing a certain number of events. This was due to communication timing issues for tracer events from one node to another node in a multi-node cluster environment, caused by the Tracer Client using the pzMaxEvent property which limited the maximum number of events fetched at a time to 200. Any leftover Events should have been fetched in the next request, but when the consuming node's service ended after the 200 events, the system removed the service requester entry from the distributed Map and disabled remote node tracing as part of cleanup of the service execution. To resolve this, an update has been made so the node tracing will not be terminated until the service execution ends and there are no more events to process. | Data Integration |
INC-119725 | 561752 | WSDL consumption via XSD corrected | When trying to consume a WSDL from a given URL with XSD, the error "Rule evaluation failed : Canceling rule evaluation, Unrecognized type name 'Name'" was generated. The same WSDL was easily consumed in SOAP UI. This was due to a case mismatch. When processing schema files, RuleGeneratorXSD calls XSDUtils.getStringType to retrieve and validate the type of incoming attributes. To do so, XSDUtils compares the type provided against a static list of attribute types, XSDConstants.java. Because XSDConstants.java is hardcoded to match against the lowercase "name" instead of the standard uppercase "Name", the type was not recognized and the error was thrown. While there was a workaround of replacing "xs:Name" with "xs:string" in the local schema files, this has been resolved by updating XSD_TYPE_NAME to equal "Name" in XSDConstants.java. | Data Integration |
INC-120223 INC-121249 INC-122076 INC-134171 |
565749 570419 569820 576432 |
Enhancements added to S3 repository implementation | The following changes have been made to avoid redundant/unnecessary S3 SDK calls to look-up metadata for files/folders related to integrated S3 Repository API implementation: 1) Provided storage/AWSSDK/enableSDKMetrics DASS to enable AWS SDK metrics for S3 repositories system-wide to troubleshoot performance issues 2) Added timers for Pega platform repository APIs. To see these timers in Pega application log, set log level to WARN for the log category pxIntegration.Repository.S3 and set log level to DEBUG for the logger com.amazonaws.latency 3) Optimized FileS3Adapter.getMetadata() by avoiding object-metadata lookup for directories and caching rootpath directory metadata for 5 mins 4) Handled exceptions while uploading file to S3 bucket and convey appropriate error message to RepositoryManager.createFile() API consumer 5) Refined DEBUG logging and introduced new loggers to emit stacktraces 6) Enhanced RepositoryManager.initCache() and FileStorageManager.registerStorageClasses() to maintain non-overridable repositories (that are initialized based on DASS/DNode settings on node start-up) and to prohibit overriding the same. |
Data Integration |
INC-120326 INC-133173 INC-120326 |
567450 573443 564438 |
Landing page refresh modified to avoid frequent reloads | Approximately every two weeks, clients were able to login but it was not possible to work as the landing page refreshed constantly until all of the nodes were rebooted and the issue was cleared. Investigation indicated the frequent reloads were related to the cacheing of the operator details, and this has been resolved by updating the datapage reload strategy based on 'when' so frequent reloads will be avoided. | Data Integration |
INC-120356 INC-131416 SR-D83424 SR-D91894 SR-D94689 |
560225 575453 552724 557222 555423 |
Class Loader cache values wrapped with WeakReference for improved cleanup | Out Of Memory exceptions due to Metaspace were observed on Web tier instances running with a max Metaspace size of 2GB. Investigation showed that in PRClassLoaderDB, mLoaderCache values were wrapped with a SoftReference. To resolve this, the Class Loader cache values will be wrapped with a WeakReference, allowing the cache to free memory when it is no longer needed. JVM options has also been added to switch types of References being used if there is a preference. | Data Integration |
INC-120600 | 565200 | Handling added to avoid primary key exception in pxExtractDataWithArgs | While running the activity pxExtractDataWithArgs with -c, the "Error while getting the sequenceNumberERROR: duplicate key value violates unique constraint pr_log_pk" occurred if both Parent and Child classes were pointing to different table and extraction started from the child class. In this case, because the Parent and Child classes were pointing to different tables while extracting with the -c option, the class list order caused a primary key constraint violation exception while generating the process sequence number. To resolve this, while adding the classes to the instance map, the order will be changed to parent followed by child classes. | Data Integration |
INC-121394 INC-96275 |
561514 553404 |
Attachment Migration tool updated for improved node crash handling | During attachment migration from PegaDB to the S3 repository, a stream node crashed and left queue items in the queue. When the node restarted, these items were migrated successfully to S3. However, a manual restart of the attachment migration tool then ended up duplicating the items already successfully migrated. As part of handling the duplicate attachments, files with 0 bytes were created in S3 and the zero byte link was updated to the Data-WorkAttach-File instance. In order to handle this scenario, an enhancement has been added that will skip migrating attachments already migrated to repository or those having an empty attachment name. | Data Integration |
INC-121474 | 561064 | Handling added for SAP WSDL with names containing unexpected characters | When running the Create SAP Integration Wizard and importing SAP WSDL, import failed with the error "The Flow Action post-processing activity pxGenerateRules failed: The reference ORDERS.ORDERS05._-GLB_-OGTORDERS05_04 is not valid. Reason: unexpected character". This was due to the operation name containing the "-" character, and handling has now been added to normalize operation names to match Pega standards. | Data Integration |
INC-125136 | 575999 | Topic name prefix support added for Kafka | An enhancement has been added to support the use of site-specific standards for the naming of queues. This can be used to add clarification between Kafka Topics created by Pega and those created for internal topics when using a shared Kafka Cluster. This is done using the new setting: <env name=”services/stream/name/pattern” value=”prefix{stream.name}postfix”/> . As an example, if tenant.name is resolved into "myco" and the environment into "prod1", value="{tenant.name}-{environment}-{stream.name}" will result in stream myco-prod1-{stream.name} By default, when stream.provider = EXTERNAL, the default will be “pega-{stream.name}” . |
Data Integration |
INC-125193 | 561461 | Processed in last hour generated correctly | After upgrade, the 'Processed in last hour' for pyFTSIncrementalIndexer (or any other queue processor) did not show the totals processed. This was traced to an error in a declare expression rule, and has been corrected. | Data Integration |
INC-125480 | 562490 | Resolved Agile Workbench video recording timeout | Using the Record Video option thru Agile Workbench to create an Agile Studio item was either taking an excessively long time to finish or was hanging. Research showed that this scenario could arise when the input parameter value crossed more than 50 characters and triggered the interaction threshold for an alert, and has been resolved by updating the system so that query parameters with size more than 50 are not encoded and added to alert logs. | Data Integration |
INC-126556 INC-126556 |
555466 564032 |
Declaratives disabled during startup | Declaratives firing before the engine is fully up can lead to null pointer errors. In order to avoid this condition, declaratives will be disabled during startup so that unnecessary operations can be avoided and system can be started faster. | Data Integration |
INC-126662 SR-D94258 |
561315 560796 |
Thread context updated to supply steppage | After upgrade, Server Startup was failing with the error "PEGA Rules Server not available". Investigation traced this to missing steppage information while invoking Rule-Utility-Function (from declare trigger when rule) during startup, which was caused by the thread calling the declare trigger, which was different from the thread running WhenRule, not being properly initialized during startup. To resolve this, the thread context has been changed to gThread, which contains the necessary steppage information. | Data Integration |
INC-126857 SR-D95626 |
564596 563585 |
Added handling for download of attachment with special characters | If the name of an uploaded attachment contained a non-ascii character, the upload was successful but the downloaded file had the wrong name without any suffix. This was an issue on WAS or JBoss servers where filenames contained non-ascii characters, and the filename parameter in the content disposition header also contained these characters. To resolve this, the filename parameter in the content disposition header will be encoded as well along with the filename* parameter to handle non-ascii characters in the filename. | Data Integration |
INC-127229 | 568097 | HTTPClient updated to match Apache's ConnectionRequestTimeout changes | Connect Rest services were not timing out at the expected 60 second mark, but were instead running for 120 or even 200 seconds. This bug arose as a result of Apache's refactoring of their HTTPClient in version 4.3. This refactoring split ConnectionTimeout into two variables, ConnectionTimeout and ConnectionRequestTimeout, in order to give users more granular control over client timeout behavior. The implementations of HTTPClient have now been amended so that all HTTP Client configurations set ConnectionRequestTimeout appropriately. | Data Integration |
INC-127635 | 570057 | Handling added for BIX count mismatch in manifest and extracted CSV data | A mismatch in the counts in the manifest file when compared to the data extracted in the CSV files was traced to a corrupted or wrong pzinskey in the source database. If the BLOB is corrupted while extracting to output type and manifest type to CSV, an invalidstream exception was generated and resulted in the manifest file and extracted CSV file total instance count mismatch. This has been resolved by adding handling to balance the counts. | Data Integration |
INC-127775 | 567263 | Added handling to resolve missing Pega 7 schema objects error on upgrade | After upgrade, running post-upgrade activities reported the index table 'pr4_rule_vw_idx1' was listed as missing in the PEGA_RULES schema even though the index was present on pr4_vw_idx1. This was caused by formatting differences between Pega 7 and Pega 8.4 intended to make the columns unique. The pxObjClass column was removed from that index in 8.4 but this made it equivalent to the vw_updateDateTime index. As a result the code that performs the DDL upgrade ignored the new definition for pr4_rule_vw_idx1 because vw_updateDateTime already existed. It was safe to ignore this 'missing' index as the correct form exists as vw_updateDateTime, but to avoid issues the pXObjClass column has been added back to index pr4_rule_vw_idx1, but as a second column in the index. | Data Integration |
INC-127804 | 566400 | DASS switch added for use with older Connect Rest passing encoded inputs | As of Pega 8.2, an EmbedURL configuration in the REST connector was made available to provide flexibility to choose URL-encoding on an as-needed basis. In order to support connectors created prior to Pega 8.2, a configuration has been added to support usecases that pass encoded inputs to the connector execution. This is available by way of a connect/DisablePathDecoding DASS switch in the REST connector resource path parameters handling. | Data Integration |
INC-128213 SR-D83329 SR-D85940 |
563896 546660 548334 |
AWS S3 client SDK upgraded | The com.amazonaws group has been updated to version 1.11.740 . | Data Integration |
INC-128654 | 567410 | Queue processor handling updated | After upgrade, the queue processors were not processing all the items in the queue, however the value under the 'number of items processed in the last hour' in the Admin studio showed the value was equal to the total number of items in the queue. This was traced to the an incorrect offset kept by the queue processor in the data table (Data-QueueProcessor-Run-Partition). Because the incoming messages from Kafka have a lower offset than the one kept by the queue processor, messages were treated as duplicates and not processed. This has been resolved by adding a partitions-validation mechanism on QP startup. To assist in proper handling, any messages identified as potentially already processed will be moved to the broken messages queue. | Data Integration |
INC-129143 INC-121359 |
565392 571027 |
Resolved sync error for offline workorder | After logging on to the mobile app and then switching to off-line mode before opening a workorder from the worklist and processing the full workorder from end to end in offline mode, reconnecting resulted in the work order being moved to the [email protected] work basket with “Sync-Failed” status. Investigation showed that this was a caused by the DateTime properties being an empty string or null despite being created with a valid string. This was traced to the datetime conversion handling, and has been resolved. | Data Integration |
INC-129171 | 566577 | Field added to configure jFrog artifactory context root | After configuring a JFrog repository rule and successfully testing the connection (from the rule configuration page), attempting to browse the remote repository from the "File Storage" landing page did not work. Investigation showed that ArtifactoryStorage.java was automatically appending "/artifactory" to the host name of any artifactory repo instance, causing a mismatch with the configured URL. There was a workaround of configuring the hostname with a context root, but this issue has been resolved with an additional ruleform field to specify the context root. Leaving this field blank will create the url using strictly what is contained within the host name field, while populating it will construct the url as follows: url + contextRoot + "/artifactory" This field will default to "/artifactory" to help preserve backwards compatibility. |
Data Integration |
INC-129400 | 567403 | Data page form displaying activity parameters from 'when' rules | While displaying the parameters list for source activity in data page rule form, an icon was displayed. This was traced to the visibility condition being an expression but mentioned as a 'when' rule, causing the parameter dialog to not load. This has been resolved by updating the pzActivityParamList activity to change the visibility condition as expression from a 'when' rule. | Data Integration |
INC-130176 | 576485 | Improved Pagelist size cache cleanup | After converting the XML content returned from the end user into the clipboard page using the ParseXML rule and post conversion, it was not possible to remove all the records from the specific page list and then keep a single record in it. This was caused by the Pagelist size cache not being properly cleared on prDelete, which had the downstream effect of the parse XML rule not properly removing the pagelist. To resolve this, the code has been updated to ensure that when removing a pageList property, its size is removed from the size-specific cache as well. | Data Integration |
INC-131518 | 575754 | PegaURLBuilder API updated to handle authentication alias | The fragment '/app/ApplicationName' was getting appended to the Document URL whenever a sharable link was generated for the document attached in the spaces, causing the link to fail. This was traced to previous assumptions that a public link URL would not have an authentication alias. Now that an authentication alias can be added to the public link URL, an update has been made to the PegaURLBuilder API: the last URL component in the public link URL will be retrieved then verified with the existing authentication aliases. If it matches, then the authentication alias will be injected to the URL in the appropriate location. | Data Integration |
INC-131629 SR-D89835 |
570035 554303 |
Updated padding character handling for access group hash | While generating an access group hash from an access group name, Pega was using the '(' character as padding. However, Siteminder blocks the '(' character, causing requests to be rejected. To resolve this, the padding character will be removed while encoding and decoding will handle hashes both with and without the padding character. | Data Integration |
INC-132769 | 573198 | ArrayList constructor added to jarList initialization | During the Switch Schema and Rolling Restart phase of an upgrade, failure occurred on the all the tiers with the error "PRRuntimeException: Method Invocation exception". This was traced to the method used to implement list initialization from an array, and has been resolved by adding an ArrayList constructor for jarList initialization. | Data Integration |
SR-D36826 | 550272 | LastAccessTime returned for MDB listener | The lastAccess time for the JMS listener was not being updated. Investigation showed that lastAccessTime was correctly updated whenever isStopping() was called, but isStopping() was not called for MDB listeners because the MDB listeners' state is managed by the app server. This caused accessTime to be empty. To resolve this, ListenerStateImpl has been modified to return mRequestTime as the lastAccessTime if the listener is of type MDB. | Data Integration |
SR-D40785 | 515100 | WorkPageName preserved during passivation so attachments are correctly tracked | When a work object was left open but inactive for a period, using the delete button in the pyAttachFieldRequired section caused the deletion of the Attachment Links for the 500 most recent attachments in the system with the same value for the AttachmentFieldName, regardless of which work object they were attached to. This was due to the delete attachments activity being executed with missing parameters: since data page loading was disabled and read-only data pages are not passivated, the value for the autopopulate property 'WorkPageName' was passed as empty. This has been resolved. | Data Integration |
SR-D64558 | 527678 | AttachmentContent supports S3 storage | Using a D_AttachmentContent data page to display the contents of an attachment by way of the pyGetAttachmentContent activity worked when using the Pega database for storage, but generated an error stating CMIS access was disabled after switching to S3 storage. This was traced to restrictions on Link-Attachment pages in Step 2, Line 64 of pyGetAttachmentContent to enable attachment stream retrieval from web storage and repositories by D_AttachmentContent, which has now been removed. In addition, pyGetAttachmentContent has been updated to behave the same whether a Link-Attachment page or Data-WorkAttach page is provided when populateAttachStream is set to false, and the rule documentation (description/usage) has been updated accordingly. | Data Integration |
SR-D67142 | 548643 | Enhanced CMIS connector logging | Additional diagnostic logging has been added to enhance investigating CMIS connector health. | Data Integration |
SR-D67308 | 552345 | fetchWSDLDocument rule withdrawn | The fetchWSDLDocument rule has been marked as withdrawn. | Data Integration |
SR-D71369 | 559180 | Resolved NullPointerException during passivation | NullPointerExceptions were seen in the logs. This was traced to the BLOB becoming corrupted during passivation, and the code has been updated to resolve this issue. | Data Integration |
SR-D74376 | 552261 | Check added for string vs boolean for pzscan JSON | When calling the CloudRemoteMaintenance/Work-/pzscan API, the response JSON had boolean values in the form of String which caused the JSON parsing to fail. The system was using ClipboardProperty.toStringValue() while generating outbound JSON from the clipboard page, which did not correctly interpret a boolean value. To resolve this, a check has been added that will assess the value and invoke ClipboardPage.toBoolean() when needed so that the value is converted as per type before generating the JSON. | Data Integration |
SR-D74921 | 551789 | Error condition will close WebSocket connection | An async listener has been added that will close the WebSocket connection when an error condition is encountered. | Data Integration |
SR-D81911 | 553095 | Reference property copying updated | An error appeared on screen when performing the local action "NonProceed case" after upgrading. This was traced to the way copying reference properties was handled as part of pxDeleteAssignmentsForWork, and has been corrected. | Data Integration |
SR-D82695 | 546540 | Correct tenant ID set in execution of SLA Agent | An incorrect tenant ID was set in the execution of service level agent, causing the SLA Queue item to fail with the error "You are not authorized to open instance SYSTEM-QUEUE-SERVICELEVEL." This was traced to an incorrect access group which was set in QueueProcessor for a processed item and not restored correctly, and has been resolved by populating the access group on the security tab of the relevant standard agent with the value “PRPC:Agents”. | Data Integration |
SR-D85410 | 549570 | Improved queue processor tracing | After starting to trace the queue processor, the message "waiting up to 1 minute for queue processor, <<Name>> to start processing an item" was displayed as expected, but if the tracer was closed and then there was another attempt to trace the queue processor, the message "Trace request with the current requestor is already registered. Multiple trace requests from same requestor are not allowed." appeared. Research showed that this was related to the implementation around canceling a background task, and has been resolved by adding code to handle the scenario of terminating an on-going trace request on window close and then beginning another trace request with the same requestor. | Data Integration |
SR-D85839 | 550939 | Support added for custom Kafka connection properties | An enhancement has been added to allow specifying custom Kafka connection properties in the Data-Admin-Kafka data instance to allow connections to external Kafka through the common client configs, ssl configs, and sasl configs. | Data Integration |
SR-D87605 | 547298 | Indexes and tables updated to improve purge query performance | Due to work done previously, purge queries to clean up the application ruleset index and application hierarchy_flat tables were running slowly or not returning the expected results. This has been resolved. | Data Integration |
SR-D87671 | 551411 | PegaCESvcsIntegrator security updated | Security updates have been made which now require authentication to consume the services from the PegaCESvcsIntegrator package. | Data Integration |
SR-D87673 | 552487 | IACservice security updated | Security updates have been made which now require authentication to consume the services from IACservice packages. | Data Integration |
SR-D88499 | 551189 | Check added to minimize Obj-Open-By-Handle error logging | When using a Data Type with the "Automatically generate a unique id " option, calling the Save-DataPage method by using the savable data page of the data type finished correctly but showed Obj-Open-By-Handle errors on PegaRules.log. Investigation showed the exception was thrown when running the save plan from DataPageSaverImpl: while attempting to run the save plan, the system does not know whether a parameter (pyGUID in this case) will be required to run the save plan or not, meaning that it can't detect any possible error in DataPageSaverImpl. The implementation instead makes a call to db.open to check if an instance exists and hence logs are thrown. To resolve the error logging, a check has been added: if the save-to class has an autogen key and the savable data page instance doesn't have the autogen key in it, the system will directly call pxCreateRecord. This will avoid a call to db.open to check if instance exists and hence no failed logs will be thrown. This partial change will work only for classes having an autogen key and in cases where the page is trying to create a record by intentionally not passing the key. | Data Integration |
SR-D88813 | 556090 | Resolved getDatabaseIndices release | While retrieving the indexes of the database, the result sets were not closed, leaving the cursors open as well. Eventually the number of open cursors exceeded the database max, preventing any further database operations. This has been resolved by appropriately releasing the cursors after finishing with them, preventing the failure. | Data Integration |
SR-D89144 | 565220 | Email attachment linefeed formats preserved between Oss | When MIME attachments were stored in Data-WorkAttach-File instances and then later attached to outgoing email sent by Outlook, text files that originally had the Unix linefeeds (LF) had those changed to the Windows CRLF line endings when the Content-Transfer-Encoding is set to 7bit. To resolve this, the java mail DSS email/encodeEolStrict now defaults to true to preserve line endings in outbound email. | Data Integration |
SR-D90311 | 549729 | Parse Delimiter rule updated for special character handling | Attempting to run a Parse Delimiter rule with a CSV file was failing with a 400 bad request and the message "Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986." Inspecting the HTTP request showed this was an issue with the \ character value being present in the FilePath property. To resolve this, encodeURIComponent() has been implemented to ensure the FilePath parameter of the HTTP Request meets Tomcat restrictions. | Data Integration |
SR-D91362 | 556048 | Updated handling for redirect location header | After upgrade, browser refresh/reload was not working, instead displaying a grey screen with no error in Google Chrome and a 404 message in Microsoft Internet Explorer 11. Investigation showed this was due to a redirect request being sent without location header; this was caused by the pageToCopy thread being reused in the redirect even though it was null, resulting in the location header not being populated in the requestor page. To resolve this, the system has been updated to skip copying the pages and set then location header if the thread is the same. | Data Integration |
SR-D92054 | 559068 | Resolved passivation issues with Operator Preference records | Blue screen errors were reported for several operators during Launch portal. This was traced to corruption of the BLOB during passivation, and has been resolved. | Data Integration |
SR-D92635 | 559221 | API added to sync presence with requestor to clear inactive operator sessions | An intermittent error message was seen indicating the maximum number of active sessions for the current operator had been reached even though there were not multiple logins and there was no requestor displayed in the requestor management landing page. This was traced to sessions that were not properly closed and cleared, and has been resolved by exposing an API that will sync the presence record with the requestor state so inactive sessions will be cleared. | Data Integration |
SR-D93460 | 558914 | Transient property passivation handling improved | Frequent "com.pega.pegarules.pub.PRRuntimeException" errors were seen in the production log file while working on the WO. This was traced to corruption in the blob caused by transient properties during passivation. To resolve this, corrections have been made to the handling for the transient property entries in the blob. | Data Integration |
SR-D93560 | 555447 | Tomcat DBCP updated | The tomcat-dbcp jar has been updated from 9.0.22 to 9.0.33 . | Data Integration |
SR-D94019 | 0 | Alerting features added for Listeners | An enhancement has been added for Email Listener alerts. At the end of each listener's processing cycle, the system will determine the average processing time per message, the total processing time of the listener, the total unread messages count, and total number of messages processed. In each AESRemote agent run, this data will be published to the PDC, where it will be analyzed and any necessary alerts raised. | Data Integration |
SR-D94505 | 553018 | Toggles added to allow file listener performance improvement | In order to offer flexibility in improving the performance of file listener CPU usage while processing intake files, rsf.setSaveIntermediateState( true ) has been replaced with rsf.setSaveIntermediateState( listener.getListenerProperties().getAttemptRecovery() ) in FileActionImpl. This change allows the option of not selecting the setting for attempting recovery on the file listener rule-form, which then would skip the intermediate save state normally performed per record/per file in case recovery is needed, thereby speeding up the processing. A toggle has also been added to see whether the system should bypass the ListenerState check at the end of each record. To use this, set the Dynamic System Setting "listener/skipListenerStateCheck" in the "Pega-IntegrationEngine" ruleset to true. Additional Installation Instructions Please create/set the Dynamic System Setting "listener/skipListenerStateCheck" in the "Pega-IntegrationEngine" ruleset as true. |
Data Integration |
SR-D95074 | 566433 | Updated logging to avoid unnecessary errors | Errors were seen in the Pega rules log when a service case was launched from an email interaction case. This has been resolved by updating the system to avoid error logging for a configuration not supported for declaratives, such as named page references in 'when' rules. | Data Integration |
SR-D95353 | 557043 | Null check and enhanced logging added to Update Existing Application | While performing "Update Existing Application" step as part of post upgrade activities, errors were seen about hidden or circumstanced rules relating to "prprivate-exec.jar:?". Investigation indicated that rulesets were being iterated and compared, but it was not clear which ruleset might be causing the issue. The root cause was code that used an integer type in the comparison, leading to a null pointer error when it was null. To resolve this, a check has been added that will assign a value of 0 if the value is null in the comparison, and infoForced logging will be used to tell what caused the null. | Data Integration |
SR-D95396 | 556878 | Enhancements added for Auto Populate diagnostics | Diagnostics and tracer events have been added for AP copy operation to allow more visibility into code during AP copy issues in future: stack trace for all AP tracer events, diagnostic logs for auto populate behavior during copy, and added code to turn on AP logging during copy. | Data Integration |
SR-D95495 | 561465 | Revised query to resolve VTable initialization error | While running an import in a multi-tenant environment, latency and VTable initialization exceptions were seen. This has been resolved by updating the query with a JOIN clause when the SQL query is being built that will allow the import process to run without causing any issues. | Data Integration |
SR-D95511 | 557292 | Decision table testConsistency updated to include duplicate columns | Show Conflicts incorrectly reported unreachable conditions for a decision table and there was a red severe warning ribbon on the top of the rule after saving when in actuality the conditions were unique and the execution was correct, with the runtime execution of each row in the table giving the correct results. This was traced to the use of a property as the column header for multiple columns: testConsistency marked the columns other than the first as duplicates and excluded them from the consistency check. As a result, when a decision table had 3+ rows with a value in the first row and empty values for the rest of the rows and used an operator such as >, all rows starting with the 3rd row became unreachable because the first row covered values > 1 and the second covered the rest, therefore the third was unreachable. To resolve this, the system has been updated to involve all duplicate columns in the consistency check. | Data Integration |
Decision Management
8.4.2 Resolved Issues for Decision Management
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-121460 | 569118 | IH Summaries correctly loads aggregated count | After the IH Aggregated DataFlow has processed more than 34 million records from an Oracle database, the IH Fact table contained only ~120,000 records. Running a browse on the pxInteractionHistory DS resulted in an infinite loop. Investigation showed that this was caused by the handling of Oracle timestamps: using Pega DateTime in query parameters generated Oracle DATE instead of TIMESTAMP, causing all query parameters to be rounded to the second and interfering with the IH pre-aggregation. This has been resolved by updating the handling. | Decision Management |
INC-122180 | 563270 | Null check added for Entity Extraction result | Training data for an Entity Extraction model was not getting distributed correctly, as per the given % data. This was due to the result of the Entity Extraction result being null, and has been resolved by adding a check that will consider detected types as primary candidate for grouping if the result column is null. | Decision Management |
INC-125838 | 561484 | Ignore Case feature updated | In Pega Marketing 8.4 on the Action rule form, configuring an eligibility criteria and selecting the option for the comparison to ignore case did not copy this part of the criteria to the back proposition filter rule, so the case of the comparison was not ignored at runtime. This has been corrected. | Decision Management |
INC-125900 | 560788 | ResolveFTCR flow Draft mode turned off | When using the FastTrack Change Request functionality of Revision Manager 8.3 the submission was going to Pending packaging instead of Resolved-Completed with the error "flow is in draft mode; it cannot be executed". This was due to pxResolveFTCR flow having been checked in with Draft mode turned on, and has been corrected by turning Draft mode off. | Decision Management |
INC-126129 | 569668 | PropertyToColumnMap made more robust | The DF_ProcessEmails dataflow was intermittently failing with a StageException error. This was traced to schema changes being propagated asynchronously by system pulse, which seem to have caused PropertyToColumnMap to cache stale schema. To resolve this, if the property mapping is not found the first time, the system will make a second attempt to get the mapping. Additional logging has also been added for better diagnostics. | Decision Management |
INC-126187 | 564340 | Report Definition replaced with a data set for training the data and build model | An issue with training the data and build model via an email or chat channel was traced in an exception in logs indicating the inability to execute a Report Definition. This can happen when UDF are removed/disabled in the database or in environments where functions are not allowed to read the blob for performance reasons. To resolve this, the Report Definition has been replaced with a data set. | Decision Management |
INC-126750 INC-131700 |
564155 570973 |
DSS added to configure Dataset-Execute page handling | When Kafka Data Set pages were saved to a data set with the Dataset-Execute method, there was is feedback if any of the pages were not successfully saved. Instead, the step always completes as successful. In addition, if any properties are added or modified by the save operation itself, those changes are not visible. This is due to the data set execute save operation saving pages as DSM pages to the data set. Due to the conversion of the pages, copies of the pages are used which do not reflect back any changes on the input pages. DSM pages are used by default because they are more lightweight than regular clipboard pages and therefore have potentially better performance. In order to allow the use of DSM pages to be customized, a new Dynamic System Setting: dataset/execute/save/statusFailOnError has been added. This can be enabled by setting it to true; it is disabled by default for greater backwards compatibility. By removing the DSM page conversion in the generated save code, changes to input pages will be reflected back if any are performed by the data set save operation, and the system will report back which pages are saved or failed by adding messages to the pages that failed to save. Performance may be affected with this change as regular clipboard pages are in general slower than DSM pages, however, that may be offset by removing the conversion to DSM pages process and will depend on the site configuration. | Decision Management |
INC-126796 | 561536 | Modifications to getFunctionalServiceNodes process | The count of the Interaction History write related threads was increasing rapidly and a stack trace indicated "waiting on condition" and "java.lang.Thread.State: WAITING (parking)" errors. Investigation showed that this was due to getFunctionalServiceNodes using Hazelcast to determine node status by making a service request on an installation with a very large number of nodes, causing thread locking. To resolve this, the implementation has been updated to avoid calling getFunctionalServiceNodes on save of Interaction History, instead using Cassandra and only calling getFunctionalServiceNodes on the master node, not on all nodes. | Decision Management |
INC-128385 | 564522 | Behavior made consistent between SSA and legacy engines | There was a behavioral disparity between the legacy execution engine and the SSA engine where the latter was not creating a new page when the index was one above the size of the page list. This has now been corrected in order to make the SSA behavior fully backward compatible with the legacy engine, i.e. a new blank page will be added to the list if the index is one above the size of the list. | Decision Management |
INC-128898 | 564692 | Updated precondition checks for Tumbling Time data in event strategies | Tumbling Time data keys in event strategies were not being properly executed when certain window configurations were used. This was has been resolved by turning off the optimalization of Cassandra reads for small windows when window size is not known upfront and set dynamically (set size by property). | Decision Management |
INC-130037 | 570959 | Corrected caching sync for proposition filter | Unit testing or a manual run of the generated strategy through next best designer was not giving the result, but instead was throwing a stale thread error. Investigation showed that the PegaAPI reference was cached in proposition filter at first execution and the filter was trying to use same reference for other further executions. This has been resolved by ensuring the cached reference is properly synced. | Decision Management |
INC-130471 | 569670 | Null handling added for SSA parsing | Strategy save was failing for the FormatDateTime expressions such as FormatDateTime(@addToDate(@getCurrentTimeStamp(),3,0,0,0),"yyyy",null,null) FormatDateTime(@addToDate(@getCurrentTimeStamp(),3,0,0,0),"MMM",null,null) FormatDateTime(@addToDate(@getCurrentTimeStamp(),3,0,0,0),"yyyyMM",null,null) This was due to the SSA engine not considering NULL to be a valid type-safe optimizable expression. To resolve this, the parsing process has been updated so that unsupported IL nodes (such as the node representing literal null) will cause the expression to fall back to legacy instead of failing. |
Decision Management |
INC-130757 | 571421 | Migration data pipeline import activity updated | The migration data pipeline was not working in the DevOps environment when moving data from Production to Simulation environments. This has been resolved by updating the activity used to generate file data set for configuring the datetime, date and time formats and inserting a check so that if a format for a type is empty, parsing properties of this type will be skipped. | Decision Management |
INC-131260 | 571786 | Handling added for runs using Completed state | After upgrade, creating a data flow rule and the batch Data flow run using the Dataflow-Execute method in the activity resulted in the exception "Could not start run DataFlowRunConfig" when executing. This was a missed use case in the new architecture of data flow engine introduced in 8.4, causing DataFlow-Execute to not work properly for existing runs in COMPLETED state. This has been resolved with the addition of a branch of execution in DataFlow-Execute.Start to correctly handle completed runs. | Decision Management |
INC-131340 | 573928 | Added handling for single case data flows run on a web node | After making NBA and Capture Response calls using the out-of-the-box APIs, the Latest Response was not updated in the landing page even though the models were updated. This was a missed use case for single case data flows run on a web node, and has been resolved by removing the filtering of data flow nodes while sending messages for last responses. | Decision Management |
INC-132164 | 575347 | Updated Email Listener sentence detector logic | When the Email Listener encountered a specific XLSM attachment, it became hung up in Running state. The email was marked as read in the email box, but the Email Triage case was not created and the Listener did not process subsequent emails. If the Listener was stopped, it would not restart. Investigation showed that multiple numbers of \n followed by a repeating sentence in the document caused the pointer to lag behind and create multiple annotations pointing to the same offsets. This in turn caused the further analysis to run in a really large loop, causing the slowdown. This has been resolved by updating the logic of the post processing for the sentence detector so that the duplicate annotations are not created. | Decision Management |
INC-132516 | 571342 | Updated reference values for Strategy Rules test execution | A Stale Thread exception was seen while running strategies with the test run panel. Investigation showed this was due to the Pega API's "pega" and "tools" references not being synched up, causing the Proposition Filter to use the old "pega" reference even if it was recycled. This has been resolved by updating the system so it will not use the cached "pega" value but it will use "tools" to make sure "pega" is the correct reference. | Decision Management |
INC-132532 | 576414 | Strategy Exclusion Component naming conflict resolved | After upgrade, modifying the RHS of Exclusions shape in Strategy "ExclusionTest" resulted in compilation issues during the save of the Rule. Investigation showed there was a compile time error related to a use case around shapes with exclusion in both sides using an expression provided that does more than just property value access, and which resulted in a naming conflict in the generated code. This has been resolved. | Decision Management |
INC-133169 INC-134097 |
572613 574512 |
Service Registry heartbeat updates | If a service (node) did not update its heartbeat for more than 90 seconds, eventually these stale services were removed from the database because the service registry did not consider them present. To resolve this, topology listeners will now use a java thread pool to run their logic and no longer use the heartbeat thread. Even if these listeners are slow, it won't affect the heartbeat and won't cause nodes to become unhealthy. If for some reason the heartbeat becomes slow (due to database issues) it will issue a thread dump to help identify what causes the slowness and aid in troubleshooting. | Decision Management |
SR-D75583 | 547301 | JMX access enhancement | An enhancement has been added to JMX access that provides two new prconfigs, "dnode/cassandra_jmx_username" and "dnode/cassandra_jmx_password". These allow adding credential requirements to local JMX. | Decision Management |
SR-D81328 | 542960 | Kafka Disk Space auto cleanup improvements | High disk space consumption was seen when using a custom QueueProcessor and standard retention policies. To resolve this, an enhancement has been added which will allow consumed QueueProcessor messages to be removed from the stream as soon as they are processed to avoid out of space issues. This will ignore partitions with undefined positions. | Decision Management |
SR-D86469 | 551897 | Performance improvements for Test Strategy data flow | In the Test Strategy panel under Single case -> "Settings", selecting the "Data flow" option and choosing CustomerData dataflow was taking an excessive amount of time to run on a system with an extremely large database. To improve performance, two areas have been addressed: 1) the default behavior for record key suggestions in the test panel has been modified to collect only the ID as the additional data is not necessary at that time; 2) a DSS has been added that will opt out of reading and collecting the customer IDs in order to minimize data stored on the clipboard. | Decision Management |
SR-D87709 | 552400 | Default context check added for saving adaptive model with locked rulesets | When updating an adaptive model rule in Prediction Studio, the error message "No unlocked Rulesets/Versions found that are valid for this record. Unlock at least one Ruleset/Version that can contain records of this type." appeared when clicking Save. This occurred when a branch was used in the default context of the Prediction Studio settings. Although there was a workaround to use Dev Studio to Save As the adaptive model rule to the required branch, this has been resolved by adding a check for default context and then saving the model there if it is mentioned. | Decision Management |
SR-D90367 | 556688 | Cleanup enhanced for long pyEditElement names | A pyEditElement error relating to decision data was seen multiple times in a stack trace. Research showed that while the utility worked as expected for decision data rules with names of less than 30 characters, the pyEditElement section was truncated the name for the decision data. This meant that decision data with the name SampleIssueandSampleGroupTwosalkdjkightntbmkblffvfvfv would be saved as SampleIssueandSampleGroupT for the pyEditElement section. Because of this, the utility failed the match and did not clean up the pyEditElement section. To resolve this, the cleanup utility has been updated to handle pyEditElement sections of decision data with longer names. Additional logging has also been added to improve debugging. | Decision Management |
SR-D90779 | 556916 | Resolved error when using IHSummary as a predictor | After configuring the adaptive model and implementing delayed learning with IHSummary as a predictor, the exception "dataflow.StageException" appeared when the strategy was executed as part of the dataflow run. This has been resolved by implementing a cache expiry of 5 minutes. | Decision Management |
SR-D91767 | 559626 | VBD planner supports URL encryption | When using the VBD planner chart, using configure->Decision->monitoring->Visual Business Director-Datasource and then clicking on actuals generated a popup that did not have any values, and the chart was not loaded. Investigation showed that when the DSS prconfig/initialization/urlencryption/default was set to true, the Pega UI flags for encryption were not visible to code being executed by the VBD planner, resulting in the URLs not getting encrypted. To resolve this, an update has been made to set bEncryptURLs & pega.ctx.bEncryptURLs to true in VBD planner, if URL encryption is enabled. | Decision Management |
SR-D93777 | 565693 | Handling added for Oracle Aggregate IH Summaries | When using using (Non Materialized) IH Summaries to aggregate IH data, the data returned by the IH summary did not include all the expected records. If the same criteria was executed on the database via SQL or by using a strategy to process raw IH data then the results were as expected. This was due to a difference in handling of Oracle vs postgres which causes an order by clause not to be generated in the query: the postgres column name is lower case, while in Oracle it is upper case. This has been resolved by updating the system to get the column name correctly from the propertytocolumn map so IH records are returned in correct order by Browse By Keys operation. | Decision Management |
SR-D94409 | 553304 | Strategy Explain message includes Component ID | The Component ID has been restored to the Explain mode message for strategy results. | Decision Management |
SR-D96836 | 555750 | Refinements made to MarkerNode memory use | Significant memory usage can be observed when data join in strategies are missing the join conditions. E.g., when the primary source in the strategy can have up to 300 or even more propositions, the join without the join condition would perform a cartesian product with possibly up to 400 or even more records returned. This may cause performance degradation. To guard against this, an update has been made that seeks to prevent repetitive markers being accumulated under a MarkerNode while trying not to rely on any implementation of equality and hashCode for individual marker implementations. | Decision Management |
SR-D96847 | 556988 | Unneeded MBean startup warning removed | After upgrade, Catalina logs indicated the error "WARN com.pega.dsm.dnode.api.prpc.service.monitoring.MBeanDSMService - Service DataFlow doesn't implement Monitoring operation". This was due to a flaw in the way the data flow DSM service was initialized in client mode. The exception itself was not a problem and did not impact functionality, but the client initialization has been modified to remove the warning. |
Decision Management |
Low-Code Application Development
8.4.2 Resolved Issues for Low-Code Application Development
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-120450 | 561743 | Configure view finds existing calculations for properties | Modifying a property to ‘calculated: Readonly’ by creating declare expression inside a fieldgroup list (which was created in the data model and refers to a datatype) while adding the fieldgroup list property by selecting from the field in the configure view of a step was not reflected when adding the same list type property inside another step of configure view. Declare expressions were created with page context for embedded fields by default in configure view, but Declare expressions have recently been enhanced and no longer expected to use page contexts. Because Configure view continued to use page contexts, this resulted in calculations that existed not being picked up. This has been resolved by configuring view handling for page list fields specifically to not create new calculations with a page context. Detection of calculations has also been updated to not check for page context to match the recent Declare expression enhancements. | Low-code app development |
INC-120472 | 571437 | Corrected date display on export to Excel | Reports which have visible date and Date time properties or values displayed correctly when viewed in PEGA, but when the data was exported to Excel the values were converted to GMT time. Due to this the date fields (with no time stamp) were showing the date less by one day in Excel. This has been corrected. | Low-code app development |
INC-123033 | 561388 | Updated logic for delegating when the RARO exists | When trying to delegate a Data Type, the validation error "Update Record Failed: This record is non-versioned and already exists and can not be moved to a different ruleset" appeared. Because data type delegation is dependent upon the existence of a RARO for the delegated data type, when delegating the ruleset of the RARO to accessgroups with the same roles the code was attempting to update the RARO. Updating the RARO determines if the Ruleset of the RARO is unlocked. If the ruleset is locked, then the logic attempts to select a new ruleset, but the RARO cannot be moved to a new ruleset. To resolve this, the logic has been updated so that if the RARO exists, the system will not try to create a new instance. | Low-code app development |
INC-125281 INC-127291 INC-127981 |
562797 562778 563001 |
Rulesets removed from direct invocation ability | Internal rules have been updated so that they are no longer available to be invoked directly by a client or service. | Low-code app development |
INC-125706 | 565518 | Expression Builder test functionality updated to improve context resolution | After upgrade, running a test in Expression Builder to evaluate an expression resulted in a 'Property undefined' error. Although the test functionality failed, the data transform rule was properly saved and no issues were observed at runtime. This was traced to a change made in the way the IDs on input elements were made unique. This caused an issue with Expression Builder resolving the correct context when the Source property page was not the primary page class, such as in these cases: 1) For Each Page with the "Also use each page as source context" checkbox checked 2) Update page using the "with values from" 3) Append and Map to with "an existing page" 4) Append and Map to with "each page in" To resolve this, the pzEBHiddenElement function has been updated. |
Low-code app development |
INC-125803 | 568663 | Cross-site scripting updated for pzTransformAndRun | Additional Cross-site scripting work has been done on the pzTransformAndRun activity. | Low-code app development |
INC-125822 | 566312 | Agile Studio correctly embedding attachments | Attachments were not being included in Agile Studio documents for backlogs and sprints as expected. This was traced to the third-party jar "jsoup", which was converting the parameter PegaDocumentObject to pegadocumentobject, causing a mismatch. This has been resolved by adding a check that will replace the converted name with the correct one. | Low-code app development |
INC-126813 | 565864 | Handling added for Decision Table test case with "call" | Clicking on the Convert to test button to launch a Test Case rule form did not load all of the options to create the UTCs, and the screen seemed stuck on the message “Loading..”. This was a corner case that happened when the decision table's return value had "Call" in it: the table believed there was the need to call another decision table, which was traced to "Call" being present on the RUT's label values. To resolve this as avoid regressions, quotes have been added to the returned value so that the value is picked instead of trying to call another decision table. | Low-code app development |
INC-131175 | 571610 | Branch rule deletion updated | When two branches, for example Test1 and Test_1, were created and the rules were saved, deleting the Test1 branch also deleted the rules in Test_1, resulting in the remaining branch Test_1 not having any rules. This was traced to the Obj-List method in activity DeleteRuleset fetching the incorrect results, and has been resolved by replacing it with a report definition created in Data-Rule-Summary. | Low-code app development |
INC-133213 | 572534 | Merge group size decreased to match SQL list limits | Duplicate rules were seen and the error "maximum number of expressions in a list is 1000" was generated after performing a ProvAuditFW merge. Before merge there was a property populated with a comma-separated list of instances to be merged: this was used later as the source of a report definition. This was presented as a value list because of the limitations of datapages to accept very large 'when' clauses. This comma separated list was split up into batches of 200 to keep the length of this 'where' clause low. However, the SQL that was generated exceeded the limit of 1000 items in a list, causing the error and duplicates. To resolve this, the group size has been decreased so that limit will not be hit. | Low-code app development |
INC-70005 | 549397 | Pagination added to MT Requestor Pools list | The Admin Studio requestor pools list did not have pagination and always displayed only one page irrespective of the numbers of items, but only on a specific node. This was traced to the node in question having multiple tenants: the normal use case is that there are not very many Requestor Pools, and choosing a "Specific node" for Requestor Pools usually returns fewer than 10 results. However, on an MT system there could be substantially more Requestor Pools, and pagination has been added to pzRequestorPoolsDetailsGrid to handle this use case. | Low-code app development |
INC-78420 | 566792 | Documentation clarified for pxGenerateExcelFile with template values | Using Export to Excel created the document, but pxGenerateExcelFile was not replacing template values in the generated output file. To improve the clarity of the necessary configuration, the documentation for pxGenerateExcelFile has been updated to include an example of the usage: This can be used anywhere in platform to export excel file. E.g. - export stories, specifications, requirements etc. Example Usage of properties in template: {.pagelist().property input}\n{.property input} |
Low-code app development |
SR-D76492 | 549970 | Added check for test case creation when Cross-site scripting security enabled | Test case creation was failing. Investigation showed that when the "Cross-Site Request Forgery" security setting was enabled, the CSRF token and Browser fingerprint were not included in AJAX calls, and the Ruleinskey was not getting passed. This has been resolved by adding a check to evaluate whether security measures are included or not when making a server call from AJAX, and including the tokens required when appropriate. | Low-code app development |
SR-D85111 | 549198 | Paging method updated for Select All in Broken Queue | After clicking the 'Select All' box in Broken Queue In Admin Studio, scrolling up and down rapidly caused the checkboxes to be unselected. This was traced to the use of progressing paging in this scenario, and has been resolved by removing progressive paging and replacing it with the out of the box '1 of X' paging method. | Low-code app development |
SR-D90520 | 552019 | REST parameters updated for SauceLabs compatibility | After configuring a call to SauceLabs testing through Deployment manager, the REST call was timing out. Investigation traced the issue to SauceLabs changing its parameter name from "browser" to "browsername", and the Pega parameter names have now been updated to reflect that change. | Low-code app development |
SR-D91834 | 554426 | Related cases of different types properly linked in Case Worker Portal | After creating a case of type1 in the Case Worker portal, creating a case of type2 from the first case showed the case ID of the second case in the Related Work section as expected. However, after clicking on the link of the case ID of the second case from the related work section, the second case opened but the case ID of the first case was not shown in the Related work. The cases were correctly associated when the Case Manager portal was used instead. This was traced to the Case Worker clipboard continuing to hold the previous case ID thread, and has been resolved. | Low-code app development |
SR-D92158 | 555085 | App Studio performance improvements | In order to improve performance for opening data models, submitting changes, and opening views in App Studio, pzShowDataTypeInExpress has been modified to remove a readonly condition that caused a database query for every row. | Low-code app development |
SR-D93112 | 554909 | Added backwards compatibility for migrated when rules | After upgrading from v6 to v8, the 'when' rules were replaced with "" in a custom decision tree. In 7.2 and earlier releases, the Rule-Obj-When function alias had its param name as "strName"; this was changed to "blockName" in later versions of Pega. To handle backwards compatibility, the pzEmbedUpgradeToHarnessBased activity has been modified to read the strWhen param value from pyCallParams and set it to blockName params correctly under pyFunctionData.pyParameters data model, conditionally only for Rule-Obj-When function alias. | Low-code app development |
SR-D93181 | 555469 | Pega Org Structure Tools added | An enhancement has been made available on Pega Marketplace to simplify working with large organizational structures with additional support for having more than 3,333 organizations. This allows choosing an Org, Div and Unit in the Operator ID and Application ruleforms using auto-completes rather than a tree, and can now handle up to 10,000 Organizations, 10,000 Divisions per organization, and 10,000 Units per Division. Installations exceeding those numbers will still be able to enter the name without validation problems, and a link to the Organization Chart landing page will be available for browsing that data in a tree. | Low-code app development |
SR-D93787 | 558842 | Tooltip added to LHS anypicker control | A Tooltip has been added to the LHS anypicker control, allowing the display of longer when and strategy rule names on hover of the anypicker control. | Low-code app development |
SR-D95797 | 556765 | Branch Preference now considered for TestCase rule | Setting branch preference from top right worked for all rule types and new rule dialog rightly set the branch, but when attempting to use this configuration for a test case, it only displayed the first branch in the app and did not follow the branch preference. This was due to the system using a separate save modal dialog for test case creation which did not consider this use, and has been resolved by implementing the branch preferences use case to show the direct preferred branch if present. | Low-code app development |
Mobile
8.4.2 Resolved Issues for Mobile
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-101011 | 556725 | Pulse mentions correctly tagged in Google Chrome | Pulse mentions of spaces or users were not getting tagged correctly. This issue was due to recent changes in the way touch events are handled in Google Chrome: the latest upgrade removed the ontouchstart property in the window, causing the isTouchable capability identification method to fail. As part of the work done to resolve this, it was discovered that the initAutocomplete function in the pzJquerymentionsInput .js was failing to delegate the mousedown event. This has been corrected by delegating touchstart and mousedown while initializing if screen isTouchable. | Mobile |
INC-119803 | 561686 | Placeholder text added for question dropdown sourced by a datapage | In a flow action with question pages where each question page was configured with a set of question rules, one question which displayed a country list in a dropdown sourced from a datapage always displayed the first value by default in the dropdown instead of place holder text (like Select..). In addition, the default selection value of the dropdown was not saving to the clipboard on submission of the flow action, causing it to appear in the UI like the first value had been selected even though nothing was saved on the clipboard. These issues have been resolved by adding place holder text in pzSetQuestionStreamSimpleDynamicSelect for a dropdown with a datapage source | Mobile |
INC-126114 | 562178 | Spaces member count method updated | When a space contained more than 50 members, it always displayed the count as 50 even though the Spaces section showed the correct count. This was due to a pagination setting that had a maximum of 50 records set, and has been resolved by using the GroupMemberCount DP instead of AllMembers to retrieve an accurate count. | Mobile |
INC-130727 | 574268 | Resolved mobile app java.lang.OutOfMemoryError | After working with the mobile app for a period, logging in failed and the app crashed with java.lang.OutOfMemoryError exceptions. This was traced to each sync adding a new version of allow-list datapages to the client store which were not cleared, and has been resolved. | Mobile |
SR-D74246 | 543727 | Accessibility improved for Pega Survey Question pages | Question Pages in Pega Survey lacked accessibility. This was traced to aria-label not being generated for Radio buttons and Drop-downs, and "title" not being generated for other controls used in Question and Question Pages. This has been resolved. | Mobile |
SR-D80886 | 547291 | Improved usability for long Pulse notes | After a Pulse message exceeded 32 lines, the window scrolled to the top of the screen after each keypress, obscuring the typing. This was traced to the CSS on the textarea span, and has been resolved by modifying create-new-pulse to display:inline-flex; in pzpega_social CSS. | Mobile |
SR-D83630 | 546144 | IsQuestionHidden property added to skip validating hidden questions | After configuring a simple question which had a validation rule defined on it and a display 'when' rule configured to show or hide it based on another question condition validation was still being fired on the hidden question and it was not possible to proceed. This has been resolved by adding code to skip validations for a question if it is hidden, based on the pzIsQuestionHidden property. | Mobile |
SR-D85624 SR-D89427 |
552698 548938 |
Corrected Microsoft Internet Explorer displaying checkboxes as sliders | Checkboxes were displaying as sliders in Microsoft Internet Explorer version11.1304.17134.0 due to Microsoft Internet Explorer returning Table pc 2.0. Since Pega HTML class includes tablet, .tablet related styles were getting picked up and displaying the checkboxes in tablet mode. To resolve this, a check has been added to pyIsTablet to evaluate correctly at runtime. | Mobile |
SR-D90279 | 554392 | Data sync updated for use with DeferWrite | After upgrade, attempting a data sync from the client mobile application worked for the first object submission, but the second object failed and stayed in the list. This was traced to finish assignments running back to back when deferWrite was enabled and svcPerformFlow failed to find the assignment. To resolve this, the assignmentHandle will be passed to the activity when calling the pzSetDeferWrite activity from FinishAssignmentActionProcessor. | Mobile |
SR-D91532 | 556407 | Resolved Clear Cache error for mobile client | When attempting to clear local storage while logged into the Mobile Client, the error message "You need to be able to connect to the server in order to clear the storage" appeared. This was traced to the application being configured to disable a user's web session immediately after log in, and was due to the "Clear Cache" functionality failing while attempting an AJAX request to invoke the server's "pzAmIOnline" activity. While there was a workaround of using the check box "Access group requires a connection for portions of the application", this has been resolved by updating the Settings - Clear Cache functionality in order be able to detect if it's online in a different way. | Mobile |
SR-D91846 | 550791 | Complex question checkbox labels displayed | Checkbox labels were not shown when a survey was rendered in read-only mode. This has been resolved by updating pzComplexQuestionCheckBoxTemplateRowDetails and ComplexQuestionCheckboxTemplate section to show labels and icons for check boxes when a complex checkbox question is displayed in read-only mode. | Mobile |
SR-D95638 | 556967 | Added handling for mobile SharePoint attachments | When an application was using SharePoint to store the attachments, adding an attachment in an offline-enabled mobile app and then synching resulted in the mobile app crashing if the user re-logged in and launched the same work object. This was due to the attachment handling. Attachments are downloaded during synchronization and they are base64 encoded: when a mobile phone processes the synchronization response, it decodes the base64 encoded attachment and saves the data in internal storage. In this scenario, attachments retrieved from SharePoint (REST Service) use a base64 conditional encoding that is different than in case Repositories or Pega Database storage. To resolve this, a check has been added to determine whether the base64 text contains newline characters, and if so the text is merged into one line. | Mobile |
SR-D99536 | 562120 | Page copy in DT working for offline mobile app | A data transform page copy from one page to another page where the destination page was embedded in the page list property was not working for the offline enabled mobile application. This has been corrected. | Mobile |
SR-D99701 | 558964 | Mobile app invalid credential error fixed | The OpenUrl feature did not work correctly on some Samsung devices due to handling differences for onStart and onResume lifecycle events, causing an issue with the credential handling. This has been resolved. | Mobile |
Project Delivery
There were no Resolved Issues for Project Delivery in 8.4.2
Reporting
8.4.2 Resolved Issues for Reporting
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-118918 | 562155 | Table Pagination elipses display properly for more than 10 pages | When a table layout was configured with a report definition as the Data Source, the Pagination format in the grid header properly showed 'Page 1,2,3 ...' if there were fewer than 10 pages, but if there were more than 10 pages the '...' (elipses) were not appearing. This has been corrected. | Reporting |
INC-119669 | 562589 | Special character handling added to filters for table sourced with parameterized Report Definition | Filters were not working on a table when sourced with a report definition which accepted a parameter value containing special characters (Eg: S&P). This has been resolved by using StringUtils.reversibleCrossScriptingFilter in the pzGetGridColUniqueValues activity to allow filters to contain special characters. | Reporting |
INC-120343 SR-D90400 |
573077 563188 |
Explicit parent added for descendants in subreport to correct summary | When using a Report Definition with a Summarize column and a subreport with join class, it was not considering implementation class work objects. As a result, the prepared values were only partially computed. This was traced to the SubReport in SetQuery not having reference to a parent for the descendants classes, and has been resolved by explicitly setting the parent value. | Reporting |
INC-125641 | 573386 | Column Filter working with class join | When a class join was configured in the report definition and the report was edited to include new columns from the joined class, a "Filter condition invalid" error appeared in the tracer after adding a filter condition to a new column. This was only observed when the property added was a decimal property, and did not happen for a text property. The filter worked as expected after re-saving the property in the report definition in Designer Studio. This was traced to the data type being passed as "DECIMAL" for decimal fields, which did not match the logic used to set the filter value, and has been resolved. | Reporting |
INC-125752 | 566171 | Tab Titles show the correct title on hover of tab name | When clicking on the case stages information from the Dashboard Case Manager to open the stage information in a new tab, hovering on the tab name displays the title of the case stage name. If there are two stages, clicking on the first stage opened it in a new tab and the title of the tabname on hover was correct. However, clicking on the second stage name to open the other stage in the same tab did not display the correct title when hovering on the tab name. This has been corrected by updating the code for the JSON configuration object. | Reporting |
INC-126483 | 566179 | Reports display current format for SUM or Average columns | After upgrade, the currency format showed as expected ($) for non-aggregated columns, but when a column was changed to be an aggregated column using "SUM" or "Average", the currency format was not shown. This was traced to the activity Embed-ReportHtmlProp.pzMergeAutoGenForProp, which determines whether to format the column or not, and this issue has been resolved by adding a check for AVG and SUM before processing. | Reporting |
INC-127085 | 563458 | Arch Chart Min/Max display correctly | The minimum and maximum on the 270 degree arch chart were not working as expected. The minimum value for the LABEL changed, but the actual range of the chart did not. For example, if the chart label for the minimum values showed as 50, the actual range for the chart was still 0-150, and the first segment of the chart did not display the correct color. This has been corrected by updating the functions for handling chart limits. | Reporting |
INC-127680 | 573012 | Extra 'when' check added to visibility of Sort by and Summarize | When changing filter and sort options while viewing a report, two edit filter pop-ups displayed. Neither would close, and further changes to filter options were blocked. The tracer showed that the pzDisplaySummarizeAndSortBy 'when' condition was True, allowing the Sort by drop down to be visible, causing pzReportConfigSections to create the two popups which then caused issues during the on change action. To correct this, an additional check has been added to the 'when' rule for the Visibility of Sort by and Summarize by so that it does not show any longer. | Reporting |
INC-127723 | 569493 | Ad hoc reports saved successfully in private categories | After upgrade, an error was seen when attempting to save an ad hoc report in a private category. Saving in a public category worked as expected. This was traced to the Rule-Shortcut.Validate activity, which attempted to use the Rule-Shortcut's RuleSet to find the Rule-Category. To resolve the saving issue, the Rule-Shortcut.Validate activity has been updated to do an Obj-Open on the Category instead. | Reporting |
INC-128881 | 566522 | Added check for UIInspector privilege to Pega-ScheduledTask-Reporting class | The pyEnableUIInspector 'when' rule in the Pega-ScheduledTask-Reporting class was not evaluating the presence of pxUIInspector privilege, causing the live UI icon to be visible to users who were not intended to see it in the interaction portal while scheduling reports. This was traced to an error in the related Rule for the 'when', and has been resolved by adding an evaluation of the the presence of pxUIInspector privilege to the pyEnableUIInspector 'when' rule in the Pega-ScheduledTask-Reporting class. | Reporting |
INC-85195 | 567389 | Search timeout made more consistent | Perform a global search was not honoring a time out set to 5 seconds. This was due to inconsistent application of enforcing the timeout because the values were kept in different ways for different functions. To resolve this, timeout keeping for searching has been reworked and made more consistent so that searching will use a custom timeout if it is contained in the report definition and will otherwise fall back to using the appropriate DSS settings for Embedded Elasticsearch, External Elasticsearch, and Search & Reporting Service. | Reporting |
SR-D81496 | 547171 | Data Social tag class FTS index query improvements | A query intended to select from the link tag table to see if any cases were linked to the tag in question and then index the tag change was causing performance issues. Investigation showed that checking tag associations during FTS indexing fetched all matching rows from the table even though one was sufficient. To resolve this, the query will be created with max result count = 1, fetching up to 2 rows from the table. | Reporting |
SR-D88419 | 557945 | Corrected date formatting for use as a custom filter | Given a Report Definition with custom filter section, when the custom filter section had a date property which was used under filters, the filter was not shown as a date. The date was shown properly when the custom filter section was not used. This was related to the date conversion for the locale, and has been resolved by modifying the RRFilters_Logic to remove a check for dates ending in GMT and replace it with a check whether the report uses a custom filter section. This runs the correct logic to render the date as expected. | Reporting |
SR-D88500 | 562657 | Eligibility prompt integer values sorted by incremental size | In an Offer rule on the Eligibility tab of the Eligibility Builder, an eligibility row using {integer property} comparator {value} had the list of prompt values sorted alphabetically for integer values rather than incremental size when using Select value -> Existing Values. This has been corrected by revising the logic in addValuesToOutputPage to call Report.sort with different sorting algorithm for numeric values. Logic was also updated to call Report.sort for prompt lists. | Reporting |
SR-D89071 | 569733 | Case status label localized in export to Excel | The Case status(.pyStatusWork) value was not localized in export to Excel. Investigation traced this to Report definitions not passing default parameters specified on the property ruleform for the "default control". Therefore, the first 'when' condition in WorkStatus was evaluating as false, which caused the wrong field value to be used for reports. To resolve this, the first 'when' condition of WorkStatus control has been updated to succeed if the useStatusWorkFieldValue parameter is not passed. The default is true when it is not present. | Reporting |
SR-D90232 | 555782 | Combo charts now support conditional colors | An enhancement has been added to facilitate the use of conditional colors in combination charts. | Reporting |
SR-D91038 | 553166 | Corrected report with combo chart in Case Manager portal | After adding the required columns a report in the report viewer and then adding a combo chart and dropping the summarized column on the y-axes and group by column on X-axis, clicking on "done editing" generated the error "pyUI.pyChart: You must have at least two Aggregate Columns in the chart series .pyUI.pyChart.pyDataAxis(1).pyChartOutputType: A Combo chart requires at least 1 Chart Type be a Column". Investigation showed that the second DataAxis page was getting deleted in the pzCleanChartDataAxis activity, causing the validation to fail. This has been resolved by adding a 'when' rule to "pzChartIsSingleY" that checks for "SingleYAxisClustered" chart and refers the same in pzCleanChartDataAxis to skip the data axis deletion. | Reporting |
SR-D91949 | 552173 | Improved search for instances with null property values | OneOf filters for a newly introduced property were failing when applied to elasticsearch query. Investigation showed that because a property is created only when the system encounters an instance with a non-empty value for the first time, none of the instances had a value for this property and hence mapping was not generated in elasticsearch. To facilitate searches, an update has been made that will populate a value in one of the instances belonging to the class type so that elasticsearch mapping is generated during indexing of the instance. | Reporting |
SR-D93561 | 558675 | Report Definition now searches encrypted properties | When using a section in table sourced from a report definition where one of the filter condition properties used was an encrypted property, running the report gave the correct result based on the filter condition but running the case and passing the encrypted property as a parameter to search did not produce the correct result. No data was displayed in the table sourced from the report definition. Because the encryption was done on the parameter string but not the value referenced by parameter, when a report definition is used as a data source for a table, the filter applied on an encrypted property is dropped in the final SQL statement that's generated, leading to incomplete or wrong results to the report. This has been resolved by moving the encryption logic to RuntimeResolver. | Reporting |
SR-D97193 | 556552 | DataView rules and library files removed | After upgrade, the pzPresentationFUA library was failing while compiling with errors relating to references for com.pega.pegarules.priv.desktop.reporting.dataview not being resolved. This was due to an incomplete cleanup when data views were removed from use, and the library and rules have now been removed. | Reporting |
SR-D98736 | 563546 | Report Definition returns ElasticSearch with parameter in the filter | When using a parameter reference in the filter of a Report Definition with a datapage sourced by a Report Definition, ElasticSearch did not return any results if the checkbox "use null if empty" was selected for the filter, but unchecking this checkbox caused a severe warning. Investigation showed that when the checkbox was selected and there was no default value provided for the parameter in the Report Definition, the query formed had no check for a parameter value and the value in the datapage was ignored. This was traced to the operator in the Report Definition filter being overridden during the Report Definition save with the operator type changing from EQUALTO to ISNULL. This has been resolved by adding code changes to verify whether the Report Definition is in validation mode before applying changes. | Reporting |
Security
8.4.2 Resolved Issues for Security
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-118838 INC-125429 SR-D79181 |
560694 561892 551125 |
OKTA receives parameters on logout | When using an OIDC logout endpoint with a parameter set as a data page value, the data page retrieved the ID Token from the database, but when logout was clicked the datapage name was being displayed in the browser instead of the IDToken. To resolve this, code has been added to support sending ID token parameters for logoff endpoint for OKTA logoff using OpeniD connect. | Security |
INC-118927 | 571492 | Resolved OAuth2 mobile app loop | When a Pega OAuth2 authorize endpoint was invoked and the redirect URI contained "app", a loop was created where the system attempted to fetch the app alias from the state parameter value and was redirected back to itself. This could sometimes result in inconsistent mobile app styling. Investigation showed that a certificate with keyword app that was picked for the redirect URI could have the key word assumed to be the app alias context, so a workaround was to remove the app keyword. To resolve the issue, the system has been updated to look for the app alias only in the state parameter rather than perform a string contains check on the entire query string. | Security |
INC-125095 | 560831 | SAML authreqcontext duplicate key exception logging changed to debug | As part of work done to improve the performance of the pr_data_saml_authreqcontext table during the SAML flow, the duplicate key exception handing was creating a large number of unique constraint log messages while saving sessionInfo to the database during SAML authentication if ADFS was used because the ADFS provider session Info is always blank. This has been resolved by changing the log statement in the duplicate key exception handling to debug. | Security |
INC-126640 | 572264 | Updated LDAP operator authentication handling | After setting up LDAP authentication in an environment using Robotics which runs on Kerberos and configuring LDAP AD integration with a sAMAccountName [specific to Microsoft AD] attribute for the login, two operators were being created for a single user. Investigation showed this was caused by the operator's pyUserIdentifier being mapped in the LDAP service mapping attribute while the operator ID was using a different attribute (userPrincipalName) which was mapped to .pyUserIdentifier because the Kerberos authentication was done via userPrincipalName. For the first login, an operator was created as per the Search filter field. The next time the user logged in with the same ID, another operator was created using the userPrincipalName as per the mapping defined under the mapping tab. This has been resolved by updating LDAP handling. As part of the resolution, a precedence rule has been introduced which will give the highest precedence to a mapped pyUserIDentifier, then logged in operator name. If pyUserIdentifier is not mapped in authservice, the operator name will be the LDAP login operator name. If pyUserIdentifier is mapped in authservice, the operator name will be the LDAP attribute value which is mapped to pyUserIdentifier. If the mapped ldap attribute name is empty, login will fail. In addition, debugging logs have been added to aid in troubleshooting LDAP issues. | Security |
INC-126975 | 574805 | BrowserFingerprint generation timing updated | When trying to 'Show Conflicts' on any Circumstance Template with CSRF enabled, there was an error on screen, the requestor was killed, and the PDC Client displayed a 'Browser fingerprint: undefined' error. Investigation showed that at the time the request was fired, the browserfingerprint had not yet been generated and hence was returned as undefined. This has been resolved by adding the code to generate the fingerprint before the request is invoked. | Security |
INC-128535 | 566316 | Exception handling updated for getRunTime | After upgrade, a Java step related to API Runtime.getRunTime() was failing to execute UNIX commands in all applications that contained the code. Investigation showed that once the java injection code was detected, the API checkForJavaCodeInjection() reported an exception, but the exception should have been absorbed by the function calling it and was not. This has been resolved by updating the system to not throw the exception for old activities. In addition, an alert was generated for the Pega platform activity SysWebInfo. As this was a false alarm, an update has been made to not report such alerts for Pega platform activities. | Security |
INC-129667 | 571681 | Handling added for KMS keystore configured as datapage | File listener was not starting on all of the nodes if KMS keystore was configured as datapage source. Investigation showed that this was caused by a null pointer error linked to the getAccessGroupFromDataPage method not always returning publicApi. To resolve this, the system has been updated to create the context beforehand and pass that to the getAccessGroupFromDatapage method. | Security |
INC-130359 | 573183 | JARs updated for Azure Key Vault Integration | The Azure SDK jars have been updated to the latest versions to resolve an issue with save errors on the rule form when attempting to add Azure Key Vault as a key store. | Security |
INC-130673 | 568211 | RuleSecurityMode enhancements added | Updates and enhancements have been made for RuleSecurityMode. | Security |
INC-130917 | 573429 | Extension point added for customizing MFA | An enhancement has been added to allow MFA to overwrite OTPInputs by offering an extension point for OTP generation and validation. | Security |
INC-131496 | 573370 | Correspondence preview works with non-English character in pzinskey | Attempting to preview a Correspondence with non-English character on the pzinskey displayed the non-ascii characters as a parameter converted to squares. As a result, the correspondence template could not be found in the template list and could not be previewed. Investigation showed that once the URL was decrypted, it was not being decoded. This has been corrected. |
Security |
INC-131521 | 574774 | Updated method for fetching Open ID Connect Token End Point URL with GRS | In Open ID connect Authentication service, the Token End point URL was not working with GRS. To resolve this, the code has been updated to fetch the access token endpoint using the getStringIndirect method instead of getStringIfpresent. | Security |
INC-132209 SR-D96395 |
577003 555119 |
CDK key loading modified for better database compatibility | CDK key loading modified for better database compatibility Users were unable to log on to the system and received the error "There has been an issue; please consult your system administrator." Investigation showed the log errors stating "(dataencryption.DataKeyProvider) ERROR localhost - Could not get CDK from systemKeyManagementCache - System CDK is null". This was an issue specific to the MS SQL Server database when there were 6 or more CDKs in the database: CDK keys are loaded from database into Cache using an SQL statement which had the ORDER clause. By default, the ORDER clause treats NULL values differently on different databases, and this caused MS SQL databases to not load a necessary CDK key. To resolve this, the SQL query has been modified so the result will be the same for all supported daatbases (Oracle, Postgres & MS SQL Server). |
Security |
INC-132634 | 573041 | Removed non-functional 'forgot password' link in mobile | On mobile app login, if a user selected 'Forgot Password' then navigated back to the login screen and logged in, the portal loaded in a browser tab instead of the app itself. This was due to 'Forgot password' not yet being supported in mobile even though the link was displayed, and has been resolved by removing the link as it does not initiate any flow. | Security |
SR-D64566 | 547515 | Option added for redirect to SAML IDP on logout | An enhancement has been added which provides a check box to choose to redirect to SAML IDP on logout from Pega. | Security |
SR-D90939 | 557309 | Handling updated for redirect URI construction | The redirect URI for an ODIC authorization request to IDP from Pega was truncated, resulting in an incorrect redirect URI. This was traced to the App alias feature was introduced in 8.4 which appends /app/ to the context URL. While constructing OpenID authorization request, the redirect URI was constructed from current login context. In the process of removing the app alias from the URL, a conflict was seen when the server name contained the word "app" in it. To resolve this, the app alias handling has been updated. | Security |
SR-D95501 | 557684 | Updated jar supporting SAML login to work with JRE11 | SO authentication was failing with the exception "Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.commons.ssl.TrustMaterial". That class was packaged with Pega via the not-yet-commons-ssl.jar which is no longer being developed and only works with JRE8. This has been resolved by updating the package to the new not-going-to-be-commons-ssl.jar which has been evaluated for all supported JRE versions. | Security |
SR-D95525 | 561833 | CSRF validation update | CSRF validation has been added for non-AJAX get requests which originated from a redirected post request. | Security |
SR-D96368 | 555742 | 10 minute cap added to lockout time interval for failed logins | After a certain number of failed attempts, there is a process that locks out the operator for a time interval. When the interval has expired and the operator is able to try again, the next "lockout" uses a time interval double the prior size. Previously, this was able to grow without any restriction. In order to improve effective requestor management, an upper limit has been added for maximum lockout period. The default has been set at 10 minutes or 600 seconds, but this may be configured using the DSS : authPolicy/delay/maxDelay in the Ruleset: Pega-Engine. The value is set in seconds: if the value specified in the DSS is greater than 600 seconds, then the maximum lockout period will fall back to 600 seconds (10 minutes). | Security |
System Administration
8.4.2 Resolved Issues for System Administration
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-123156 | 560669 | Check added for equivalent table during data upgrade | The Data Upgrade between Pega versions failed with the error "DatabaseException caused by prior exception: java.sql.SQLException: ORA-01408: such column list already indexed". This was caused by the system not considering duplicate indexes before modified indexes. Once it's identified an index has been modified, the system would try to alter it without considering that what it was altering it to might already be present. To resolve this, an update has been made so the system will not alter an index if the resulting index would be equivalent to a different one on the table. | System Administration |
INC-125584 | 559377 | Warning logged when hotfix rollback information fails to save | Attempting to apply a set of hotfixes was failing. In this case, a hotfix was being installed prior to a second hotfix which contained a Rule-Obj-Class that was needed for the first hotfix. Hotfixes need to be installed in a particular order based on their dependencies. For a given DL file, the installer respects the order specified at DL packaging time in the INSTALLORDER.PEGA file. The install order specified in the DL file is roughly ordered in a manner so that the first hotfix is the parent (the specific hotfix requested by the user at DL packaging time) followed by its dependencies in no particular order. The result was that dependencies of dependencies were not installed in the correct order relative to each other, causing hotfix installation to occasionally fail during the saving of hotfix rollback information. To address this failure, the exception handling has been modified to only provide a warning in the log should hotfix rollback saving fail and not cause the entire hotfix installation to fail. | System Administration |
INC-127460 | 566413 | SQL 'where' clause updated to handle Oracle limits | Due to Oracle only allowing up to 1,000 IN list values in a SQL statement, a query exceeding that limit fails. To resolve this, the 'where' clause of the query has been updated to better handle this limit. The format is: WHERE col_name IN (val1, val2,……,val999) OR col_name IN (val1000, val1001,…) |
System Administration |
INC-132859 SR-D85100 INC-128758 |
573491 556262 569896 |
ProductInfoReader updated to fetch only most recent version information | After upgrade, running Hfix scanner on Pega Marketing 8.2 displayed missed critical Hfixes for Pega Marketing 8.1. This has been resolved by modifying ProductInfoReader.runQuery to fetch only latest version of DAPF instances during a scan. In addition, the 50 result limit on executeRDB has been lifted to accommodate sites with more than 50+ Data-Admin-Product-Frameworks. | System Administration |
INC-133202 | 574703 | TableRenameUtil hashing improved | During index name generation, the algorithm that was responsible for index name uniqueness was sometimes insufficient and cerated a loop condition. This has been resolved by using a stronger hash algorithm and refactoring the code that could result in a loop. | System Administration |
INC-71003 | 555286 | View/Modify Database Schema Wizard updated | Security improvements have been made to the View/Modify Database Schema Wizard. | System Administration |
SR-D67408 | 554900 | Directory traversal blocked in zip import | One of the files contained in a zip archive was not deleted from the system after zip import. This was due to the file being created by a third-party archive that included of a directory traversal character that caused it to be inflated outside of the temp directory. To resolve this, a check has been added to that a file with directory traversal characters in its name will not be inflated. | System Administration |
SR-D81572 | 551028 | JDBC URL handling added for Oracle over TCPS | While attempting to upgrade an environment over TCPS, the generateDDL.sh script was failing. The same environment ran without issue on Tomcat with the same URL. Investigation showed the JDBC url was not correctly generated while running the upgrade: in a standard scenario, there will be no spaces in the JDBC URL specified. However, because Oracle can send spaces as part of JDBC URL and cause this issue, an update has been made which will quote the JDBC URL argument for the ant target in setupDDL.xml. | System Administration |
SR-D84364 | 551403 | Check for circular references added to SearchInventoryImpl to prevent recursive call | An out of memory error was traced to SearchInventoryImpl infinitely recursing over a clipboard property, where the child property referenced a parent property and resulted in an endless loop. This has been resolved with the addition of a depth check to ensure that the search does not recurse infinitely. | System Administration |
SR-D90687 | 560431 | IOException handling improved to resolve broken pipe errors | Frequent "connection reset by peers" exceptions were being generated and broken-pipe exceptions were seen in the logs. Investigation traced the issue to unhanded IOExceptions on the server side that were a result of the client application not always closing the TCP connection gracefully. To resolve this, error handling for IOExceptions has been improved. | System Administration |
SR-D98404 | 558207 | Handling added for hotfix Rule-Application instances | A null pointer error during DL file expansion performed as part of the second phase of a hotfix installation caused the hotfix install to fail. The null-pointer exception was thrown because the code, primarily used for export, performed a database lookup of a Rule-Application and assumed the response would be non-null without checking the result. During export the Rule-Application would normally exist because the system would have interacted with it already during the export by identifying it and writing it to the archive. During phased hotfix installation, rules are staged to the database in a different table during the first phase and reconstituted during the second phase. The scenario for this error was a missed corner case specific to the unusual combination of including Rule-Application instances in a platform hotfix. To resolve this and prevent further issues, handling has been added for this use case. | System Administration |
User Experience
8.4.2 Resolved Issues for User Experience
Ticket # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
INC-118751 SR-D79831 |
562806 562802 |
Access Deny working as expected for Offers | It was possible to Save-As an offer in PegaMKT-Work-Offer after encountering an access deny rule. The record was not created in Dev Studio, however, and an expected denial of access was not registered at runtime. This was due to Access deny rules not being considered as a part of validation, and has been resolved by adding the necessary permission validation to the new harness that will produce the error message informing the user that they are missing a permission. Additional work has also been done to pass the 'pzKeepPageMessages' parameter as true so that page level error messages are correctly displayed. | User Experience |
INC-118907 | 561074 | ClearHighlight called after test steps complete | When using a custom delay as part of a scenario test, an orange highlight square was unexpectedly persisting on the portal. To resolve this, an update has been made to explicitly call "_clearHightlight()" after every test case step execution completes. | User Experience |
INC-118907 | 565633 | Document statetracker updated for more consistent Scenario Testing | Inconsistent behavior was seen when running Scenario Tests: the same scenario test case run multiple times without any changes would sometimes pass and sometimes fail, and sometimes the fields were automatically filled in and sometimes they weren't. Scenario tests depend on the document-statetracker for moving from one step of the execution to the next, but an intermittent failure to reset the document statetracker back to the idle state caused inconsistencies in the execution. To resolve this, a new pub-sub mechanism will be used on the document statetracker. | User Experience |
INC-118923 | 565233 | Multiselect updated for server side error message display | After configuring a multiselect control as a required field, a button configured to trigger property-set-message was not displayed in the UI. This was traced to Multislelect not showing the server side error message as its handle bar was not stamping, and has been resolved by utilizing the errormessage string for the handlebar. | User Experience |
INC-121205 | 560037 | Live UI working on modal dialogue | Live UI was not working with modal dialogue if the modal was present in an embedded iframe on a shared system. This was traced to logic in Live UI that was adding a scrollTop offset to the highlights, shifting them down, and has been resolved by adding getElementDimension() in the Live UI utilities to not add the scroll top offset when in modals. | User Experience |
INC-121210 SR-D96224 |
565370 556782 |
Validation error messages correctly cleared | The error message on a checkbox field, radio button, or text area with a on-change post value was persisting even after the correct input was provided. This occurred when the area had a caption, and was due to an additional wrapper span that caused the error div to be the span's sibling instead of the span itself. In the post value success, the system checked whether the error div was present in the area's parent, i.e. span, and when no div was returned the error msg was not removed. It was possible to add an action 'Refresh this section' on change as a workaround, but this has been corrected by updating the system so that Instead of checking the error div in src.parentNode, it will access the correct parentNode using 'closest' and check for the error div. | User Experience |
INC-121444 | 561811 | Added handling to force text area maxlength in Edge | When using the Edge browser, it was possible to continue entering characters in excess of the value set for the 'max characters' property. Investigation showed that the Edge browser does not honor the maxlength attribute on text area; to resolve this, logic has been added to restrict the user from entering extra characters above the max limit. | User Experience |
INC-122068 | 569611 | Tooltip displayed when menu item not enabled | Tooltip was not being displayed when menu item in the navigation rule was disabled. This was due to the pointer events not being supplied to the CSS selector, and has been resolved. | User Experience |
INC-122172 | 560216 | Scenario test APIs updated to better capture successive clicks on the same elements | When recording a scenario test, the test recorder did not capture successive clicks of the same screen element. This could carry from screen to screen as pyCaseActionAreaButtons is used in the perform harness and is can be presented for two successive screens. To resolve the issue, the APIs have been changed to use code better suited to capture the correct elements. | User Experience |
INC-123112 | 568701 | Check added for multiselect in case of ABACSecurity | A harness was created that had to be launched with 'section include' that contained more than one multiselect along with Dropdown controls sourced with different datapages and each control was visible based on conditions at runtime. When loading the harness with one multiselect based on condition, the clipboard and tracer was loaded with other datapages that were not visible at runtime but were sourced for other controls that were part of the section. When this was run, an error around the mode of the page list was generated. The same error was not observed when the configurations were made in the perform harness. This was traced to getAuthorizationHandle().getABACSecurityPolicyEngine().getPropertyInfoForDisplay, which should only be called for scalar properties, but in cases of multiselect the API was called on a vector property since multiselect uses pagelist as a source. This has been resolved by adding a check for multiselect in case of ABACSecurity. | User Experience |
INC-125093 INC-127399 INC-129278 INC-129278 |
562455 567124 568857 568857 |
Date range filter error resolved | When using different locale settings, an "Invalid date" issue was seen when selecting a value for a date range filter. This has been resolved. | User Experience |
INC-125105 | 563384 | Null checks added for incomplete autocomplete fields | When using a page which has an AutoComplete text input and a button configured for search, tabbing out of the autocomplete field before the autocomplete list has appeared and then filling out the rest of the fields and clicking submit was sporadically resulting in the page becoming unresponsive. This has been resolved by adding null checks and improving the error handling. | User Experience |
INC-125398 | 564980 | Updated handling for checkboxes configured in the header | After configuring multiple checkboxes where each checkbox had a different property and different DT as action set and then using them as a single column header in the table, the on-change of any one checkbox caused all of the checkboxes to be checked or unchecked in the column header. This was caused by the pega.ui.grid.prototype.checkAllIfInHeader, which selects or unselects all checkboxes present in table (header +. body) based on checkbox status in header. However, the header row should not be part of the iterator during this function, and the necessary update has been made. | User Experience |
INC-126126 | 563653 | Calendar Control correctly shows Western Arabic Numerals in ar_AR | When using ar_AR locale settings, the numbers in the calendar control were displayed as Western Arabic Numerals (1, 2, 3) as expected, but selecting a date and refreshing the section when using a Perform harness caused the date to change to Eastern Arabic numerals. It should stay as Western Arabic Numerals. This was traced to template mode using moment JS to format the date time values: as the operator locale was set to ar_AR, the date was being formatting to Arabic characters. This has been corrected. | User Experience |
INC-126260 | 565123 | Improved performance option for data model pagination in App Studio | In order to improve performance for data model pagination in App Studio, document.querySelectorAll has an optional replacement of the more efficient document.getElementsByClassName. The pega.ctxmgr.registerContextSwitching API will update the context root with the data-harness-id attribute and appended the class. However, getElementsByClassName is not enabled by default: to enable it, set pega.enableCTXRootsByClass to true. | User Experience |
INC-126338 | 565556 | Scenario test cases working with radiobutton in grids | Running scenario test cases was not working correctly if the table layout had rows with radiobuttons. When the radio button control is included with a property type of boolean in a grid, radioTable class is not present in DOM. Because the scenario testing tool relies on this class of highlighted element to get the target element, the system was not able to get the proper target element in this case. This has been resolved by updating pzpega_ui_automation_radiogroup to get the proper target element when boolean type radio buttons are included in a grid. | User Experience |
INC-126458 | 560681 | Null check added for indexOf in section refresh | A sporadic failure was happening when clicking the telephony button to retrieve a customer from hold, and logs indicated the error "Cannot read property 'indexOf' of null at pega.ui.Doc.sectionRefreshCallback". To address this, a null check has been added in the sectionRefreshCallback API before calling the indexof API to resolve the runtime exception. | User Experience |
INC-126474 | 567498 | Scrollintoview updated to resolve display in Mobile auto-complete | When browsing MyPega on some mobile devices, interacting with certain autocomplete fields and/or opening/closing embedded tabs caused screen to shift up and obscure the MyPega header and made it difficult or impossible to interact with the "hamburger" menu. Users were unable to scroll up and browser refresh did not fix it. A logout and log back in was required to restore the header. In this scenario, the body of the page scrolling was hidden via overflow: hidden; so scrollIntoView() tried to scroll all of the element's ancestors including the body and the distorted header was the result. This has been resolved by passing options in scrollintoview() that will stop the scrolling of all the ancestors except the immediate parent element. | User Experience |
INC-126783 | 562761 | Check added for undefined value when resetting invalid autocomplete entry | When user entered and submitted any random value that was not part of the results populated by the data page, the field changed to "undefined" automatically. In this use case, the system was presenting an autocomplete control configured with a list-based result display and disabled free form input. When the entered invalid value did not match anything in the results, the system tried to set the previous value even though it had not been initialized. This caused the value to be set with an undefined string. To resolve this, logic has been added that will reset the autocomplete value to empty or a previously selected option when the free form input option is disabled. | User Experience |
INC-126878 | 565499 | Unused pageLimit length trimmed from multiselect loadResults | When an application had multiple multi-select dropdown fields, scrolling all the way to the last value on a dropdown list and selecting the last value took a long time for the value to display on UI. This was traced to the logic present in createCapsule API: the system checks for nextRow based on the dataRowID and loops based the pageLimit length, and that limit is a configurable value to display the maximum results in the view. In this scenario, the limit was set to 10000 max results to display while the actual results from the datapage gave only around 400 values, but the logic present in createCapsule still ran the loop 9600 additional times because it was obeying the pageLimit value. To resolve this, a condition has been added to the multiselecct control in the loadResults API that will reduce the page limit to whichever is lower, the set value or the number of returned results. | User Experience |
INC-127087 | 570124 | Resolved cropped tab overflow content | The content of the grid was cropped when a tabbed layout group used the taboverflow class style. This has been resolved by applying overflow-x auto for active layout when the layout tab has tab-overflow. | User Experience |
INC-127365 | 565733 | Harness Navigation links hidden in Report Definition Export to PDF | When using the "Export to PDF" menu item, the generated report contained unnecessary links like "Go to main content", "Go to search bar", and "Go to navigation" at the top. Investigation showed that by default the section pySkipLinksToTarget is included in the left navigation panel of the userportal harness, resulting in it being included while exporting to PDF. To resolve this, CSS has been added which will hide the navigation links when generating the PDF. | User Experience |
INC-127649 | 575248 | Modal dialog updates for Cosmos Ajax containers | In the Cosmos app, a section with a button which was supposed to open a Modal Dialog was not working. The modal dialog could be opened after refreshing the case, but then it could not be closed with the "X" in the upper right corner. This was due to rendering Ajax container content in a custom modal dialog in Cosmos. When the system tried to launch another modal/overlay from that modal dialog, as per the logic, the use of getElementbyId for the modal-overlay always returned the first modal-overlay div present on the document. To resolve this, logic has been added that will remove the modal-overlay div in the Ajax container document's response if a modal-overlay div is already present on the document. | User Experience |
INC-127658 | 568626 | Corrected 1 day discrepancy for non-template DateTime | Date values in DateTime controls in a custom filter section of a report definition were reduced by one day after drilling down into drilldown report and navigating back to the main report. Investigation showed that when the non-template version of datepicker was configured with a date property, it displayed the value using read-only formatting with allow text entry set to 'No'. This caused the operator time zone to be used to format the value while data-value used the default timezone(GMT). To resolve this, and update has been made so that while generating markup in non-template for the date property the default timezone will be used whereas the datetime property will use the server timezone. | User Experience |
INC-127687 | 570011 | Dashboard Queue Widget Sorting triggered | The Dasboard Widget for workqueues was showing a sorting arrow for "created", but this sorting was not triggered for the first load of the widget and only appeared after clicking the "created" label twice. This was traced to a secondary column being loaded that was assuming the first column was already sorted. The icon and its related tool tip indicated 'The column is sorted in descending order....', which was caused by the section XML for the "created" column having "pySortType" set to "DESC" in "pyGridColumnProps", generating the sort icon for the "created" column. This has been corrected. | User Experience |
INC-127931 | 568881 | Handling added for activateDocument in Cosmos App Studio | Click events were being multiplied after calling "pega.desktop.activateDocument" in App Studio for a Cosmos-based app. This has been resolved by adding the special handling necessary in for activateDocument, which is similar to that of launched portals. | User Experience |
INC-128025 | 565860 | Stackoverflow handling added for Pulse comments | In Pega Support production application, if a Pulse comment of internal post type (PegaSocial-Message) included a stack trace, the post was not added to Pulse feed, but was saved to he table. If the case was closed and reopened again from recents, the review screen did not render, and then the case could not be opened at all. This has been resolved by modifying the function "pxFormatAdvancedText" to handle the stackoverflow issue. | User Experience |
INC-128340 | 565002 | Resolved Attachment control buttons (modal) scrolling offscreen within mashup | When using a mashup with the addition of style="overflow:auto;width:100%; height: 1200 px;", buttons were going off the screen when the attachment control was used and the frame expanded, and even scrolling through the attachment list itself did not show them. This was traced to there not being a modal resize handler for a modal inside an Ajax container: to handle this scenario, pega.u.d will be used when mashup is loaded independently. | User Experience |
INC-128417 | 573509 | Layout Group Accordion focuses on selected layout | When using a Master-Detail Table that included 7 layout groups which had a first layout that was very large and contained some sub layouts, creating two rows in the table in screen and then expanding all sub-layouts of the first layout in the first row did not show the newly open layout. Instead, focus went to the bottom of the page and the page was scrolled down automatically. Scrolling to the bottom and expanding another layout hid the previous active layout and immediately showed the current one. This was due to some timing issues that caused the current expanding view to not come into view from the start of the header, and has been resolved by adding scrollintoview for the active layout tab. | User Experience |
INC-128504 | 564640 | Added handling for repeated fast radio button clicks in Microsoft Internet Explorer 11 | Fast clicks on the radio button were freezing the portal in Microsoft Internet Explorer 11, and the browser console showed the error "Unable to get property 'parentNode' of undefined or null reference". Because the radio buttons were configured with postValue and refresh section, clicking the options continuously in Microsoft Internet Explorer 11 caused the markup to change with each refresh section. Because Microsoft Internet Explorer does not save the stale DOM references, this results in null target and processBehaviour() and causes a script error. To resolve this, updates have been made so that if the target is null, the entire event.target and its parent elements are detached from the DOM, and the target and its parent will be handled by accessing them from the new DOM. | User Experience |
INC-128605 | 566559 | Pop-up retains focus from the multiselect list | When selecting from a multiselect list and the list popped-up above the field that it's supposed to populate, it lost focus from the drop-down list. The issue was reproducible only when the popover opened upwards; if the pop-up was below the field that it was supposed to populate, it worked as expected. This has been corrected. | User Experience |
INC-128646 | 566111 | Added check for Past and Future values in Display range for DateTime control | The display range for the Date Time control was defaulting to dates in a 10 year period, leading to an issue with attempting to select dates before 2010. This was an unintended consequence of changes made related to pyNoOfYears that missed checking for values in pyPastNumber and pyFutureNumber. To resolve this, the 'when' condition in DT 'pzSetNoOfYearsForDateTime' has been modified to exit if both pyPastNumber and pyFutureNumber have values present. | User Experience |
INC-129289 INC-130587 |
570402 574320 |
Added handling for refreshing tab not in the view area | Refreshing the tabbed layout current tab was causing it to lose focus, specifically when clicking on one of the tabs in dropdown list of Layout group tab and refreshing its inner section when there were more tabs than could fit in the view area. To resolve this, the logic inside resizeActions and initialiseLGTreatment method has been modified to adjust and display the active tab in the view area. | User Experience |
INC-129388 | 571376 | Check for mobile added to Pega Client for Windows time control | When attempting to enter time using the out of the box time control in Pega Windows Client application, the control became stuck and continued to show on the UI even when screens were progressed. If the control was marked as a required field, this was a blocker. This was due to the 'validation_validateFromUIEvent' overlay invoking the 'pega.util.Event.getEvent()' function: this function was trying to get the events by traversing all the way to the event initialization, but the process was timing out on mobile/touchable devices and returning the parent event as undefined. Because 'pega.util.Event.getEvent()' was undefined, the validation_validateFromUIEvent caused js errors. To resolve this, a check for mobile has been added to the validation. | User Experience |
INC-129395 | 572137 | Null check added for preActivityDynamicParams | After upgrade, the preactivity did not run when launching a harness in a popup window from a button, and the following error was thrown from Step 2 of DisplayHarnessWithClass: "Exception occurred either while updating preActivity Param or executing preActivity in DisplayHarnessWithClass". Investigation showed that when a show-harness pop up with pre-activity was configured, the pre-activity was failing to run because preActivityDynamicParams was returned as "null" from client side. To resolve this, a null check has been added to the pzpega_control_actions_showHarnessWrapper js file. | User Experience |
INC-129517 SR-D87991 |
572492 558973 |
Support added for Ajax container refreshCaseSections | The Refresh/Visibility Condition in Dynamic Layout was not working in the Interaction portal, but did work in a Stand alone service case. This resulted in the summary area not being refreshed when a case was opened in a new tab, which is a new feature supported in Cosmos, leading to a post value used in the case processing area to not be present in the Summary panel on blur of the input field. This was due to the use of the new Ajax container, which did not yet have support for all the out-of-the-box actions such as Refresh-Section or Refresh-Condition. That support has now been added by way of the javascript API pega.u.d.refreshCaseSections. | User Experience |
INC-129605 | 572464 | Grid displays in tab layout | The Grid height was being reduced to 2 px when used in a tab layout. This was due to the table inside the tabbed layout being registered for runtime calculations, and has been resolved by registering it only when table is hidden on load. | User Experience |
INC-130011 | 571835 | Resolved stale reference error when swapping stages with drag and drop | If user swapped stages (2nd stage to 1st stage) using drag and drop and then added a participant or role in the stage, a Pega blue screen appeared. This was traced to using a grid with reorder and an inner grid in the cell. On drag and drop, the grid reference object was stale and not in sync with the latest table. To resolve this, code has been added to reinitialize the inner grid on drag and drop. | User Experience |
INC-130197 | 570008 | Keyboard works for sorting columns | It was not possible to sort the column of a table using keyboard due to a lack of tabindex on the header cell. This has been resolved by updating the condition to add the tabIndex to all header cells, | User Experience |
INC-130464 | 568334 | Added error recovery handling for case wrap up | When attempting to submit the case wrap up for two service cases in interaction portal, completing the first task and then clicking "cancel this work" on the second caused the application to freeze with the console error "Uncaught TypeError: Cannot read property 'split' of undefined". This was due to AJAXContainer data model corruption, and has been resolved by adding handling for this condition that will first close the previous document and then submit the assignment in next document. | User Experience |
INC-130958 | 572692 | Submit case works after using Action button in Cosmos | In Cosmos UI, clicking the out of the box "Action" button and then going back to the case and clicking submit caused the case to freeze. Investigation showed that the "Finish assignment" activity was failing because the newassignee page was not present, which was caused by a preactivity removing it. To resolve this, the preactivity has been removed from pyWorkCommonActions as it is not required and duplicated the same activity configured in the action button. | User Experience |
INC-131523 | 573854 | Parameters to Property UI Field available in report | When using a parameterized control like Decimal for a property in the UI control of the Property rule with inputs given to the parameters, once the property was optimized and referred to in Report Definition, the value was rendered using the Control with parameters defined in its rule form. In the report, the column was not rendered as it is designed on the property rule, but the same worked as expected in a section. This behavior was a change after upgrade. This was traced to "pyPropertyName" being added to the stepPage as part of the pzMergeAutoGenForProp Activity, and has been resolved by adding it to the stepPage only when it is an auto-generated control. | User Experience |
INC-131774 | 577048 | Resolved focus for new s-case | After creating an s-case by using the keyboard, the focus jumped to add task instead of newly added s-case page. This was traced to the 'if' condition in focusFirstElement method becoming true for all touchable devices including desktop with touch enabled, causing the focus method on the first element to not be executed. This has been resolved by adding an additional conditional to check whether the device has touch enabled and is a mobile device. | User Experience |
INC-132187 | 570649 | Null check added for pyModes page | After an upgrade from Pega 6 to Pega 8, the Decision Table execution differed with the same test conditions and caused flow execution errors. An attempt to resolve the issue with the addition of a setting that utilized the Pega 6 behavior of an empty property not being considered as missing led to sections not opening and an exception was generated. Pega 7+ expects there to be a pyModes page for the sections when opening a section rule. This page does not exist in lower Pega versions, causing the section opening to fail after upgrade from Pega 6 to Pega 8. This has been resolved by adding a null check for pyModes page to avoid the exception. | User Experience |
INC-132405 | 574690 | Added check for label property for 'work object already open' popup | When a tab in a tab group was open, attempting to open the same tab again displayed the error message "TestApp case layer is already open" instead of the expected message "Tab1 is already open". This was traced to the label property not being available, and has been resolved by updating the pzpega_ui_dynamiccontainer file showConflictDialog method to check for label property when Label is not available. | User Experience |
INC-133757 | 577057 | Cross-site scripting filtering updated for PerformFlow | Cross-site scripting filtering has been updated in the “pzPerformFlow” activity. | User Experience |
INC-134228 | 576994 | Text area control treats URL encoded string as plain text | The TextArea Read-Only UI control was not able to show the % and numeric data in an encoded URL. This was an unintended consequence of work done to support the use of formatted text in place of a Label in order to display the text, and has been resolved by skipping unescaping the text as part of the encodeHtml function in the template_displaytext js file. | User Experience |
SR-D65174 | 560603 | SetInterval will increase when AQD delay is defined | With a 5000ms delay in place, executing scenario test cases resulted in errors such as values sporadically not being entered in their respective fields when the test was run, test runs that failed even though the data was entered as expected, or the submission of a test case assignment (Next button) executing the next step before the new screen was loaded. Investigation showed this issue was occurring when the system encountered a slower machine and a delay in loading pages, and was traced to the executor not waiting long enough due to the implicit setInterval of 8 seconds. It was possible to add a local delay in AQD settings for slow pages, but the system-set setInterval interfered with this delay. To resolve this, changes have been made to the executor module where setInterval is invoked that will increase the setInterval time when AQD delay is defined, so that setInterval will not interfere with a locally-set AQD delay. | User Experience |
SR-D68328 | 557752 | Unload handler added for use with custom popups | A memory leak seen in Microsoft Internet Explorer was traced to a custom script to close windows which bypassed window unload and continued to hold some objects in memory. This has been resolved by introducing a new file which will load only for popup harnesses and which registers the unload handler to remove the popup window references. | User Experience |
SR-D75421 | 552438 | Parameters added to protect font size in HTML to PDF conversion | Pega uses the pd4ml external library for HTML to PDF conversion. As part of this, the adjustHTMLWidth API was called to avoid truncation issues, but this resulted in font-sizes not being preserved in the exported document but rather changed as necessary to fit in the PDF. In order to support preserving the font size during export, the pyPDFSettings datatransform will call the protectPhysicalDimensions API along with setHTMLWidth, and avoid calling adjustHTMLWidth. With this change in place, any content width should not be set explicitly to some value as it may lead to truncation if the space is not sufficient. If there is no width set, text will wrap automatically. In case of tables with large number of columns, truncation issues may be seen: to avoid such issues, pass a larger htmlWidth value so that table will be reduced in size and in the rest of the page, font-sizes are preserved. | User Experience |
SR-D78557 | 551842 | Check added before generating aria-label | To improve accessibility, logic has been added to dynamic layout generation that will check whether the text value is empty, and if so an aria-label will not be generated. | User Experience |
SR-D80572 SR-D99025 |
558413 558222 |
Refresh-Other section correctly shifts focus on tab out | After upgrade, a difference was seen in the behavior of the Refresh-Other section action functions. Previously, focus was shifted to the next field when tabbing out, which is the desired behavior. Investigation showed that this was a result of modifications made to resolve other focus issues, and the previous behavior has been returned by updating the conditions used to call the "focusNextElement" method to include a check whether the reloadElement is stale, and to get the focusElement from DOM based on name (pega.util.Dom.getElementsByName(focusElemName)) if needed. | User Experience |
SR-D83027 | 548584 | Resolved Microsoft Internet Explorer 11 custom dropdown issue | Microsoft Internet Explorer 11 was not consistently opening the dropdown when the dropdown format in skin used a custom state for hover,focus and active. This has been resolved by making the styles that are present in the mobile controls CSS file available to skin configuration. | User Experience |
SR-D83476 | 550787 | Layout Group (Tab) keyboard navigation behavior made consistent | When using keyboard navigation for Layout Groups (tab), arrow keys (up/down/left/right) are used to navigate the tabs once focus is set on the first tab, and the tab contents of each tab is opened automatically. It was noted that pressing tab a few more times caused the second tab to gain focus, but the contents of the tab did not open automatically or when enter was pressed, which was unexpected behavior. For accessibility best practices, tab focus should not be allowed on tab groups. To resolve this issue, this has been removed and the system will continue to follow auto activation of tabs on arrow keys. | User Experience |
SR-D84126 | 545039 | Resolved delegated data type exception for new line character | After delegating two data types to certain access groups, the data type appear with the specified detail in the case manager portal under the configurations tab but the exception "Class not defined in dictionary" appeared when the edit button was clicked. This was related to the handling for parseJSON, and has been resolved by adding handling for escaping new line characters in the catch block of correctActionArgs method inside the ui_events file. | User Experience |
SR-D84882 | 551991 | Resolved duplicate messages from HarnessErrorList section | When using pyCaseErrorSection to call HarnessErrorList and display any errors on Clipboard page, when the Clipboard page had more than one error then the error message was shown multiple times. This has been resolved by adding a check that will iterate through the errors to see if it is present on the page already. If it is present it will be ignored, and if it is not present, then it will be added. | User Experience |
SR-D85848 | 551849 | Improved accessibility for tab key navigation in tables | When using the tab key to navigate to the first cell in a table, the cell itself was taking focus instead of the link and the link did not open when 'enter' was hit. Instead, hitting tab a second time opened the link. By default, the standard was to have tabIndex set on the first cell of every row for accessibility so the link inside the cell gets the next level of focus. To resolve the navigation issue and avoid user confusion, while adding `tabIndex` to first cell of every row, the system will check for focusable content and avoid adding `tabIndex` to `td`. | User Experience |
SR-D86274 | 552510 | Resolved validation conflict with error message display | Error messages set through property-set- messages or edit validate were disappearing when out of focus from the date field if the field had a mandatory condition. This was traced to an edge condition where required validation was conflicting with another error message, and has been resolved by modifying the code so the system will not validate required on blur if the input has another error message. | User Experience |
SR-D86429 | 551373 | Badge text Control Format supports declare expression target | In the user screen, some properties are shown in 'Text' control with 'Badge text' control format. When the value of this property was set in Data Transform, it appeared correctly. When the property value was set in Declare Expression, no background color was set. This was traced to a missed use case in the implementation work for vtable, which resulted in the control format mentioned in presentation tab of control not being applied on markup when the property was a declare expression target. This has been corrected. | User Experience |
SR-D86694 | 548670 | TeamMembersWidget section include corrected for PortalNav | An error was seen when attempting to include the pyTeamMembersWidget section inside a pyPortalNav section. Investigation showed there was a data corruption in the section. As a local change, it was possible to 'save as' the section to a ruleset and delete the section embedded in the grid, then drag an embedded section layout from Layouts, add it to the grid row, and select pyTeamMembersWidgetRow. As a permanenet resolution, the corrupted section has now been replaced. | User Experience |
SR-D87019 | 561909 | Required attribute of the layout label considered for displaying "*" on the button | After upgrade, radio buttons with a “required” when condition did not have that condition triggered. This was traced to validation only being applied to the first row when using a repeating dynamic layout. Because of this, if the first row 'when' rule is false and subsequent rows 'when' rule is true, the validationType='' attribute is stamped for all rows as first row when rule is false. To resolve this, logic updates have been made which will stamp a button's required attribute for showing the '*' symbol based on the required attribute of the layout label. | User Experience |
SR-D87203 | 550996 | Required field accessibility improved | In some instances, there is no non-visual indicator that a field is required. Because the asterisk character is commonly ignored by screen readers, the attribute or should be used so that non-sighted users have explicit information about the required status of the field. To enable this, when client-side validations are disabled on the harness and clientValidation attributes are absent, the system will run an additional check so that aria-required is added. | User Experience |
SR-D89242 | 555590 | Corrected layout refresh for grid state page | When the condition builder had an empty row, on submit an error was displayed as expected. However, attempting to delete the empty row resulted in an exception. Investigation showed that the layout refresh was causing the grid state page to get deleted upon submission of the modal. This has been resolved. | User Experience |
SR-D89672 | 550527 | Custom error label styles work for 'required' | When using the default 'required' error message, the class "labelError" is added when the required field is empty. However, when the default 'required' is replaced by a custom error message, a UI error was seen because the class "labelError" was not added when the field was empty. This was traced to an error in the non-template to template code transform, and has been resolved by updating webwb_pzpega_ui_dlcelltemplate_js to add the labelError class based on the presence of an error message. | User Experience |
SR-D90284 | 551474 | Added 'when' condition to class change in ShowColorPicker activity | When using an included color picker control in a section, selecting a color resulted in the color picker pyworkpage class content changing to Embed-Skin-Controls. This has been resolved by modifying the previous behavior of always changing pyWorkPage's obj class as part of the ShowColorPicker activity by adding a 'when' condition to change the class only if it is empty. | User Experience |
SR-D90711 | 553092 | Portal harness maintained when opening email link | When an email link was opened (pxOpenAssignmentLink), the portal harness was replaced with the case Perform harness. This has been resolved by ensuring the 'flex' CSS class is added for the portal harness div when using pyMobileSnapStart and a top navigation portal. | User Experience |
SR-D91344 SR-D94331 |
560628 561970 |
Resolved PageCannotBeSerializedForPassivationException in logs | The exception "One or more properties could not be serialized during passivation and have therefore been lost. They will not be available on activation. Please ensure that all property data is Serializable" was observed in the logs. Investigation showed there was an HTML fragment in 'pzGridOpenAction' that was adding non-serializable properties to the clip board. This did not cause a functional issue, but has been resolved by modifying the way the system obtains and reuses the class definition. | User Experience |
SR-D91656 | 556864 | Close button added to runtime exception error message display for non-tabbed layout | While running the case through manager/user portal, a runtime exception caused the screen to reload with a GeneralFail harness to show the error and the stacktrace through the section GeneralFailDetails. Since the tabbed layout was not supported, it was not possible to close or cancel this case / case-id. This has been resolved by adding a close button to close the exception window. | User Experience |
SR-D91783 | 556370 | Corrected undefined class error during browser refresh | After enabling a Report left navigation link for the CaseWorker portal, the browser refresh after opening a report from Report landing page was throwing the exception "Problem invoking function: pega_processengine_workutilities.pzHasAccessToWorkPool--(String), Undefined class "ReportBrowser"". This was a missed refresh usecase for ReportDefinition action in SPA portals after SPA was modified to use a separate thread for inner harness, and has been resolved by adding a condition to ensure the reportDefinition action also executes the displayOnPage action on browser refresh. | User Experience |
SR-D92571 | 553117 | Corrected ReportBrowser refresh section | After bringing up the popup menu on a report shortcut in the report viewer and then dismissing it, the gear icon on the shortcuts in the upper section of the report browser stopped responding. This has been resolved by updating the system to refresh the pyReportBrowserInner section instead of pyReportBrowserAll. | User Experience |
SR-D92913 | 553905 | Aria-collapsed replaced with aria-expanded to improve accessibility | Previously, the system used the aria-collapsed attribute for the left and right navigation toggling. In order to improve accessibility, this attribute has been changed to aria-expanded and the value will be set to true/false accordingly. | User Experience |
SR-D93564 | 557262 | Corrected screenflow CSS precedence | After upgrade, the screen flow navigation chevrons were not displaying correctly due to the screenflows CSS styling not taking the correct precedence in the markups. This has been resolved. | User Experience |
SR-D94700 | 556020 | Report group headers localized | Localization has been added to report group headers. | User Experience |
SR-D95367 | 560742 | Expanded debug logging for exception blocks | In order to enhance debugging, logging has been expanded to capture more detail on exception blocks. | User Experience |
SR-D95419 | 563397 | Updated Multiselect control behavior for incorrect value | After upgrade, a difference in behavior was seen. Previously, when a user entered an incorrect value in a multi-select where the required field was checked and then clicked anywhere outside of the field, the value would erase before displaying the message "Value cannot be blank”. After upgrade, the value was not erased when the message was displayed, causing confusion. This has been resolved by adding logic which will determine the correct message to display, such as "Value cannot be blank" or "Please select a Valid Value". | User Experience |
SR-D96061 | 562601 | Localization added for "Preview" | Support has been added for localizing the text "Preview". | User Experience |
SR-D96754 | 560220 | Column filtering corrected for Microsoft Internet Explorer 11 AJAX containers | Column Filtering was failing when used in tables inside an AJAX container in Microsoft Internet Explorer 11. This was due to the filter popover close method changing the visibility of the popover and triggering a context switch, and has been resolved by setting the flag pega.ctxmgr.skipContextSwitching to true before changing the visibility. | User Experience |
SR-D96909 | 558141 | Removed extra scroll bar in Multiselect | An extra scroll bar was appearing when opening the multi-select control case manager portal using the "Results displayed Maximum 500 results to display" setting. This was a result of recent updates to the popover scroll and height that caused on overflow condition. To resolve this, the logic for Multiselect has been updated. | User Experience |
SR-D98614 | 559863 | Parent and child case links resolved for Cosmos | After upgrade to v8.4, a behavior change was seen in creating a child case (Add Work) from a Parent case when using an application built on the Cosmos theme. Items such as pyWorkCover Page and CoveredInsKeys were missing, Data Propagation from the parent case to the child case was not working, the Child case max Instance configuration was not being applied, and when the child case was created from Add work, the child case appeared in an unexpected popup. This was traced to work done to implement a feature of creating subcases in a dialog (using a tertiary AJAX container) which was missing handling for a target parameter used for the child case clipboard, and has been resolved. | User Experience |