SR # | Issue # | Title | Description | Product Area |
---|---|---|---|---|
D39264 | 518839 | Multiple files uploaded using "select file" will be handled asynchronously | In order to resolve an intermittent error when uploading multiple files using the "select file" button, each file will be uploaded asynchronously to avoid overloading the browser threshold. | Case Management |
D47018 | 517031 | Corrected parameter being encrypted during change portal configuration | After configuring a changePortalLayout control using .pyDescription as property, trying to switch the portal was throwing a error page. The same configuration worked in earlier platform versions. This was traced to recent updates where the activity parameter ended up being encrypted along with the activity name, and has been resolved by removing the parameter from encryption input and adding it to encryption output. | Case Management |
D47146 | 515646 | Pick Values modal updated for deprecated list view handling | Pick values were not displaying in the menus below Case Management-> Tools -> My Work, including "Work entered by me", "Work by workbasket", and "Work resolved by me recently". This was due to the use of deprecated list views: the pick values modal was failing to show and hide the busy indicator because the indicator now uses jQuery, but list view does not include jQuery. In order to resolve this, the equivalent Report Definition pyEnteredByMe has now been added under the navigation rule : pzProcessAndCaseRulesMainMenu. | Case Management |
D51535 | 519474 | Enhanced discrimination for tasks in MyPega spaces | When using My Pega for spaces and tasks, using drag and drop to move many cases around quickly resulted in tasks intermittently ending up in a state where they could not be updated further and became unusable. Analysis showed that because the milliseconds part of the update time was rounded, the logic of comparing for value between 0 and 1000 failed when the comparison returned -ve value. To resolve this, the comparison has been modified to !=0 and the 'when' rule pyContinueTaskProcessing has been added as an extension along with the appropriate usage guide to restrict processing. By default, the system will consider task name, description, due date, assignee, and rank properties; if more properties are needed to evaluate, this when rule can help. | Case Management |
D54200 | 516775 | Custom attachment category parameter passed to dropdown | Attempting to use the out-of-the-box “Attachments control” which was configured at design time to use a custom category where both the custom category and the section class were in the same work class resulted in the attachment category dropdown defaulting to “File” instead of the custom category. Investigation showed that the custom attachment category name configured on the control was missing in one of the pre-processing activities sequence. To resolve this, the activity Work-.pzInitAttachContent and the initAttachmentPage activity have been updated to pass the custom attachment category parameter. | Case Management |
D59504 | 524640 | Attachment drag drop searches only current Ajax context | When the Interaction for customer service was open and more than 1 task from the sidebar was open, the drag and drop zone was missing on any subsequent Task/Cases past the first. In an Ajax container scenario, getElementByID js was searching in all the containers because they were present in DOM, and it was losing context. To resolve this, the code has been updated to only search in the current context when using an Ajax container. | Case Management |
D63976 | 524220 | Double decompression of Attachment BLOBs corrected | Attachment streams were being double-decompressed on download. This was traced to the GetAttachmentReference activity in which the file was opened then performing a show-html of DisplayAttachment HTML. This internally called the DisplayAttachFile activity which attempted to open the file again, resulting in a double de-compression of the attachment BLOB. This has been corrected. | Case Management |
D64506 | 529333 | Improved accessibility around page landmarks | Accessibility testing revealed an issue with pages where the main landmark was contained in another landmark. This has been resolved by removing the main role in the FlowActionHTML rule. | Case Management |
D65513 | 530181 | URL encryption modified for ShowAllOperators | In the control ShowAllOperators the call to pzEncryptURLActionString was introduced to encrypt URLs to avoid hijacking. The content of the URL relied on the pxRequestor.pxWorkGroup property which was resolved using pega:reference tags. This approach worked in versions below 8.x, but in higher versions the tags were not resolved at runtime and results were not displayed. To resolve this, the requestorWorkGroup will be treated as string and passed as parameter instead of using pega:reference tags. | Case Management |
D67323 | 529946 | Cross-site scripting filtering added for CreateMergedWordDoc | Cross-site scripting filtering has been added for the TemplateName parameter value in the CreateMergedWordDoc section. | Case Management |
D79113 | 543721 | Updated DisplayAttachment to handle SIngleClick download from Case Worker portal | On using the script "pega.ui.HarnessActions.doAttachmentSingleClick" in the Worker portal to download attachments displayed within a screen flow, the entire application was hanging and no action was invoked even on clicking the Continue or Finish buttons of the screen flow. Whenever an attachment is downloaded using the script function pega.ui.HarnessActions.doAttachmentSingleClick() , an iframe is used and changetracker is called to communicate data between different iframes. However, the case worker portal is a single thread model while the manager and admin portals are multi threaded, which resulted in changetracker freezing on the worker portal. To resolve this, the DisplayAttachment HTML rule has been updated to build the necessary changeTrackerMap for the worker portal. | Case Management |
D80120 | 544213 | Custom attachment category parameter passed to dropdown | Attempting to use the out-of-the-box “Attachments control” which was configured at design time to use a custom category where both the custom category and the section class were in the same work class resulted in the attachment category dropdown defaulting to “File” instead of the custom category. Investigation showed that the custom attachment category name configured on the control was missing in one of the pre-processing activities sequence. To resolve this, the activity Work-.pzInitAttachContent and the initAttachmentPage activity have been updated to pass the custom attachment category parameter. | Case Management |
D47795 | 524674 | Fallback to Pulse notification added for empty incoming account in CallEmailAutomation | After upgrade, issues were seen with the sender receiving email notifications for sent messages when alias addresses were used for incoming emails. To resolve this, a fallback mechanism to use a Pulse notification has been added in cases where an incoming email account is not found in the pyCallEmailAutomation activity. | Conversational Channels |
D48246 | 518689 | TextAnalyzerClass will be populated during upgrade if not present | After upgrading, the email channels were failing to process the emails and the error "Unable to load data page D_pyEntityClassMapping. Required parameters : ClassName cannot be blank" was seen in the tracer log. Analysis showed the email channels were failing to process the emails due to the pzUpgradeVersion property in Data-Channel-Email instances being inconsistent post-upgrade. To resolve this, the system has been updated so if the TextAnalyzerClass or name property is not present in old email channels (created in 7.4), it will populate that property in the upgrade activity with the default classname. | Conversational Channels |
D49782 | 518047 | Extension point added for ClearInteraction to support custom interactions | In order to support clearing a custom interaction page after clicking the "Reset" button on preview console, an extension point has been added to pyClearInteraction. | Conversational Channels |
D54120 | 541351 | Improved handling for attachments not using UTF-8 encoding | When an email was received that used a charset encoding other than UTF-8, special characters in the HTML body were not displayed and instead the replacement character was shown. To resolve this, the system will read the encoding from the email rather than use the meta tag, and will add the attachment's HTML encoding information in Data-WorkAttach-File so that the same can be used to process and display the original HTML properly. | Conversational Channels |
D57865 | 520962 | Added property check for outbound templated email reply | When a template was used for the first time for outbound correspondence, email was generated correctly. If the same template was used as the content for reply, the generated email skipped all styles. This was traced to a missing property check, and has been resolved. | Conversational Channels |
D29034 | 500680 | Added support for JSON mapping of deep nested pagelist objects | An exception occurred when using a JSON data transform in the service activity to map the clipboard data to JSON on the third level of a structure formed as Pagelist-->page-->pagelist. To resolve this, support has been added for nested pagelist mapping with deep nesting of objects (configured for one sided actions) and arrays. | Data integration |
D32381 | 519464 | 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 |
D33003 | 511229 | Queue Batch activity correctly passes chlld process access group | Attempting to create an index using the schema tools landing page was throwing an error in the table history stating "Create index failed". Investigation showed that this happened when a user was authenticated without the PegeRULES:DatabaseAdministrator role and then switched to an Access Group with the PegeRULES:DatabaseAdministrator role. The issue was traced to the activity that launched the batch requestor missing the parameter pzUseCurrentAccessGroupForChild due to the Queue Batch activity only passing the default access group authorization. This has been resolved by adding code to pass the additional authorization which will allow users to create an index in this scenario. | Data integration |
D37779 | 514410 | DSS setting added to Invalidation query to tune performance | Running a RuleInvalidation query on an SQLServer database with a large amount of data was causing performance issues. To improve performance, a force order hint has been added which can be enabled with the DSS setting racache/useForceOrderHintForInvalidationQuery. | Data integration |
D41228 | 512106 | DSS added to Request Only Connect SOAP for Robust | After upgrade, creating a new SOAP integration set to "Request only" in the Service tab and then running the activity showed requests coming with no response, then failure after three tries. This was traced to previous changes made to support Robust behavior and log failed asynchronous calls, and has been resolved by modifying the Robust support and moving it to a DSS. If “EnableRequestOnlyFaultMapping” is set to “true”, then the ANON_ROBUST_OUT_ONLY_OP option will be used; otherwise, the default behavior will be ANON_OUT_ONLY_OP. | Data integration |
D41229 | 513588 | Enhancements added for using AWS file repositories |
Enhancements have been added to improve the use of AWS file storage: Logging for AWS SDK connection metrics can be activated on a per-repository basis, either through the ruleform or through the DSS storage/class/:/enableMetrics. INFO logging can be enabled on PegaAWSSDKMetricReporter to periodically output averages of recorded metrics for all registered S3 repositories with metric collection enabled, or INFO logging can be enabled on PegaAWSRequestMetricCollector to output recorded metrics on every client call for all registered S3 repositories with metric collection enabled. The interval at which PegaAWSSDKMetricReporter logs metrics at can be configured with the DASS storage/AWSSDK/metricReportingInterval. This DASS is a system-wide setting, and not a per-repository setting. The default reporting interval is 90 seconds, and metric collection is disabled on all repositories by default. |
Data integration |
D41580 | 512482 | Check added for match of tenant ID class and thread | Many bad class exceptions were logged on a multi-tenant system when accessing a worklist or refreshing the browser. This was traced to classDefinitonImpl.getDescendantIter() returning all classes (tenant + shared) because the classDefinition.getTable() API failed to resolve the table for a specific tenant. To resolve this, a condition has been added that will check that the tenant ID of the class matches the tenant ID of the current thread and skip the unmatched classes. | Data integration |
D42241 | 518638 | CyberArk support has been added for this release | CyberArk support has been added for this release. | Data integration |
D47752 | 513750 | Resolved Assembly time error for findPage signatures with two arguments | Due to the introduction of IL assembly, an Assembly time error was generated after upgrade when saving a 'when' rule that had a page with the same name defined in both Parameters and Pages & Classes. To resolve this, if the system is generating PegaAPI#findPage or PegaAPI#findPageWithException and passing a null as the second argument, then it will be cast as a String. This will ensure the compiler will not become confused as to the type of null when there are multiple findPage signatures with two arguments. | Data integration |
D48369 | 514304 | Reinitializing Full Text Search will shut down Elastic Search regardless of search initialization status | Pega search was only sporadically working after converting from standard sandbox-marketing to largesandbox-marketing. This was traced to the Full-Text Search initialization having failed on the app-tier node during re-initialization. As part of re-initialization, the existing node is shut down and the Elastic Search node is started. The shutdown process relied on a boolean flag which indicated if the current status of full-text search initialization was successful. In this case, ES was trying to validate all the cluster level settings, for every save of one of the cluster level settings, but could not due to topology changes in the Util Tier node. The boolean flag indicated initialization had failed so the shutdown process was not invoked, yet the system was attempting to start the second instance of an ES node on the same machine. To resolve this, the shutdown FTS code has been modified to shutdown ES regardless of the search initialization status. | Data integration |
D48392 | 525130 | Conditions added for RuleSet names in private edits | When a data type data page was referenced by a rule in a different RuleSet to that of data type itself, the data page disappeared from the list of data pages displayed in the data type. A private checkout of report definition Rule-Declare-Pages.pzGetDataPagesForExplorer and the removal of the filter criteria 'IRR.The_version_of_the_RuleSet_of_the_referencing_rule' Less Than or Equal To ' RS.pzRulesetVersion' allowed the data page to reappear. The root cause was traced to the Index-Reference sub report join in the report definition Rule-Declare-Pages.pzGetDataPagesForExplorer incorrectly matching the Index-Reference for the section and thus failing the selection criteria when the referencing rule was in a private edit. To resolve this, an other condition has been added for situations when the RuleSet name of the referencing rule contains "@" (which means the referencing rule is in private edit) to the two RDs. The other change is not to show private edits in the referencing rules, which is done by adding the condition .pxReferencingRuleSetName does not contain "@" in the RD pzGetReferencesInfo. This will not show the number of references and the referencing rules until it is checked in. | Data integration |
D48960 | 517878 | Exception stack trace will be included as comments in generated assembly code | When there is an exception during assembly time, that original exception message is assembled in the generated code. To improve the process of finding the the root cause by examining the original exception stack, the system has been updated to insert the original exception stack trace into the generated code as comments. | Data integration |
D50016 | 515902 | Exception stack trace will be included as comments in generated assembly code | When there is an exception during assembly time, that original exception message is assembled in the generated code. To improve the process of finding the the root cause by examining the original exception stack, the system has been updated to insert the original exception stack trace into the generated code as comments. | Data integration |
D51725 | 516466 | DSS added to rpevent logging of sensitive data used as input during async batch task processing | When running Async Batch Task Processing, the whole set of inputs was logged when an error occurred during ADP load. Because this might result in sensitive data such as SSN, DOB, IDs, etc, being included in the debugging output, a DSS has now been added which when set will avoid printing any sensitive information in the log. | Data integration |
D53253 | 515307 | Versioning information removed from Universal SMA | To clarify that Universal SMA is compatible with Pega 7.4 and all below versions, the repository name has been changed to remove the versioning number so it is listed as only "Universal SMA". | Data integration |
D53674 | 515624 | Stack traces will be logged if debug is enabled | The error logging in com.pega.pegarules.exec.internal.declare.DeclareChangesHelperImpl#onSave was causing an issue with upgrades in MT environments due to excessive logs being thrown from the onSave method in DeclareChangesHelperImpl. These errors are logged when there is a database exception during System declare changes generation during onSave, and in a multiple tenant environment it resulted in Out of Memory exceptions because of logging stack traces. To resolve this, the system has been updated so that stack traces will only be logged when debug logs are enabled. | Data integration |
D54314 | 517289 | Enhancements added for using AWS file repositories |
Enhancements have been added to improve the use of AWS file storage: Logging for AWS SDK connection metrics can be activated on a per-repository basis, either through the ruleform or through the DSS storage/class/:/enableMetrics. INFO logging can be enabled on PegaAWSSDKMetricReporter to periodically output averages of recorded metrics for all registered S3 repositories with metric collection enabled, or INFO logging can be enabled on PegaAWSRequestMetricCollector to output recorded metrics on every client call for all registered S3 repositories with metric collection enabled. The interval at which PegaAWSSDKMetricReporter logs metrics at can be configured with the DASS storage/AWSSDK/metricReportingInterval. This DASS is a system-wide setting, and not a per-repository setting. The default reporting interval is 90 seconds, and metric collection is disabled on all repositories by default. |
Data integration |
D55161 | 527650 | getStoreDataTable updated to resolve thread lock issues | An IlegalMonitorStateException in TableInformationMapImpl.getDataStoreTableInfo caused a read lock to not be released, preventing other threads from acquiring a ReentrantReadWriteLock.WriteLock on the same ReentrantReadWriteLock. This eventually lead to a Deadlock scenario forcing other threads into an irrecoverable WAITING state. The issue could be cleared by restarting the nodes, but the implementation of the getDataStoreTableInfo method has been updated to resolve this issue. | Data integration |
D56293 | 536775 | Resolved timeout errors related to getIndexInfo | When attempting to import large files (around 300MB) via Designer Studio a time out error was seen, but the same upload worked as expected from the command line. Investigation showed that the "approximate" argument in getIndexInfo caused wasteful analytic operations to be run on the database, hampering performance. To resolve this, areas where the results of the analysis are not needed have been modified to have aApproximate set to be true so it will not be run. | Data integration |
D56347 | 523274 | Pega unit for case type records user inputs | When creating a Pega unit for the case type by selecting Actions -> Record test case for Case, the user inputs were not recorded for embedded page properties. This has been corrected. | Data integration |
D56452 | 521769 | Auto populate properties will fetch data from descendant classes | A page list property set to be populated by the "Copy data from a data page" or "Refer to a data page" option had a blank property value. The warning "Copy from declare page of incompatible class: Code-Pega-List" appeared. Investigation showed that the failure was caused by the embedded class of the auto-populate being different from the data page's dynamic class. This was due to the data in the data page being sourced from Report Definition; that fetches data from its descendant classes, causing the class of the data page to be dependent on the report definition configuration. To resolve this, the system has been updated so that Auto Populate properties will allow fetching data from descendant classes. | Data integration |
D57855 | 521124 | Context retained during nested automation | Issues were seen with context being passed correctly with automation. When a Data Page that was used to abstract the call to a REST API used a Data Transform which in turn used a Data Page which also used a call to a REST API to retrieve an OAuth Token, an error appeared. The same worked when a URL was provided on the Connect REST. When a service case was launched but a Flow Action wasn't submitted, then another service case was added and submitted, the post-processing robotic automation activity used the run robotic automation activity from the previous service case instead of the current service case targeted for completion. This has been resolved by updating the webwb • pzpega_ui_doc_submit.js file to pass the correct MDIContext based on the event target of FA submission while invoking RDA automation. | Data integration |
D58964 | 520128 | Enhancements added for using AWS file repositories |
Enhancements have been added to improve the use of AWS file storage: Logging for AWS SDK connection metrics can be activated on a per-repository basis, either through the ruleform or through the DSS storage/class/:/enableMetrics. INFO logging can be enabled on PegaAWSSDKMetricReporter to periodically output averages of recorded metrics for all registered S3 repositories with metric collection enabled, or INFO logging can be enabled on PegaAWSRequestMetricCollector to output recorded metrics on every client call for all registered S3 repositories with metric collection enabled. The interval at which PegaAWSSDKMetricReporter logs metrics at can be configured with the DASS storage/AWSSDK/metricReportingInterval. This DASS is a system-wide setting, and not a per-repository setting. The default reporting interval is 90 seconds, and metric collection is disabled on all repositories by default. |
Data integration |
D59106 | 526917 | File Listener null-pointer exception resolved with context check | A service file rule associated with a file listener was encountering a Null Pointer Exception. Investigation showed that the system successfully processed the first record in the service file, then it encountered the null-pointer exception indicating that the listener state was null. This was traced to functionality introduced in an earlier version to ensure File Listeners are succinctly shut down when a Cloud Node is moved to queiscing. As part of that work, the Rule-Service-File was linked to ListenerStateManager and did not work in a scenario where the rule could be executed outside of that context. This has been resolved by adding a check for context before directing the activity. | Data integration |
D59158 | 534819 | CMIS Update Request corrected for single Value List property | After upgrade, following the process of searching Documents by connecting to CMIS and getting the results, then selecting the document, editing it, and resubmitting the document to the CMIS repository by clicking on the update button worked when passing a multi row of values to the Value list property but failed when passing a single row of value to the Value List property. An error was generated with the message "pega.pegarules.pub.services.InboundMappingException: Failed to process CMIS service 'updateProperties' ". In 7.2, updateProperties CMIS functionality uses the Apache API opencmis.commons.spi.ObjectService#updateProperties() whereas in 8.3 it is refactored to use the API opencmis.client.api.CmisObject#updateProperties() and this API allows multi-valued property to be updated with multiple values only. To resolve this, the CMIS connector has been modified to update the properties implementation such that it will pass-on the property update value to Apache OpenCMIS API as either List or Scalar based on the property definition (whether Property is configured as multi-valued or not). | Data integration |
D60206 | 529325 | Resolved null pointer on Reference Helper startup | An issue with the system failing to start and generating a NullPointerException on RUFReferenceHelper.java has been resolved by modifying some Rule-Utility-Function code to better handle threads that are not completely initiaized yet but still running rules. | Data integration |
D60318 | 526870 | Data table validation message placement updated | An issue with validation errors unexpectedly appearing on primary key columns instead of on an added decimal data type column was traced to the system using a temporary page to update the record: if there was an error, all of the messages were copied to the temporary page and put on the first key of the data type. To resolve this, the system will populate the messages on individual properties on the main page and the rest of the messages will be put on the first key of the data type. | Data integration |
D60375 | 527754 | Resolved upgrade SqlSyntaxErrorException | When trying to perform an in-place update, the error "SqlSyntaxErrorException" appeared. Investigation showed that DDL statements for Adding 'pzInsKey' as PrimaryKey for Tables pc_work and pr_sys_locks were generated during the upgrade while pzInsKey was already the PrimaryKey in corresponding tables. This has been corrected. | Data integration |
D60442 | 522061 | Enhanced logging and error messages for JSONMappingUtils failing to map a number value | Some integer properties were not mapped from JSON, such as itemID. Investigation showed that because the maximum range of a signed integer is 2,147,483,647, only those itemIDs less than or equal to that were processed during the initial mapping of the incoming JSON data. Others were bypassed to allow for the remaining properties to map to the clipboard. As this mapping incident is rare, no code changes will be made to address it. Instead, if this condition is seen Pega recommends changing the property mode manually to text to prevent arithmetic being done on itemIDs or other integers. In order to better support administrators and developers, updates have been made to the warn/error log messages in the event of JSONMappingUtils failing to map a number value so that missing data mapping will be clearly indicated. | Data integration |
D61199 | 533477 | Support expanded for postgres versions and logging improved | While trying to import data into the Data Type Tables using a CSV file and selecting the 'Add or Update' option, an error appeared and the import failed. Using 'Add or Delete' worked as expected. This was traced to the import of data failing for postgres version 10.x because UseMerge for postgres did not use merge if the version of Postgres was not 9. Support has now been added for versions of Postgres higher than 9 in SQLGeneratorPostgres.useMerge(), and logging has been enhanced to improve triaging issues such as this. | Data integration |
D61253 | 527653 | Exception stack trace will be included as comments in generated assembly code | When there is an exception during assembly time, that original exception message is assembled in the generated code. To improve the process of finding the the root cause by examining the original exception stack, the system has been updated to insert the original exception stack trace into the generated code as comments. | Data integration |
D61601 | 524367 | Corrected ISO format datetime handling for API case creation | When providing a date time field in ISO format for case creation through an API request, the date times were not validated or converted to acceptable values for Pega to handle them. To resolve this, ISO Date Time conversion will be done after a page-change-class to the right class, a null pointer error has been resolved, and "validate embedded page" has been unchecked in pyFlowParameters. | Data integration |
D61706 | 524955 | PropertySet will iterate over chageList map copy to resolve CME | An empty menu was seen intermittently when handling incoming email, and a ConcurrentModificationException error was logged. Investigation showed that a step scope changeList map used in the handleChaining method was sometimes modified by another process while the first one was iterating over it. To resolve this, PropertySet will receive copies of the change list map from clipboard pages instead of the original map. | Data integration |
D61971 | 529606 | Search Landing Page handling added for email addresses containing hyphens | When an e-mail addresse containing a hyphen was entered for the Automated Search Alert functionality, the validation error "Please Enter Valid Email Address(s)" appeared. For example, user@comp-name.com was not accepted. To resolve this, the regexp function used for the email validator has been updated. | Data integration |
D62355 | 529677 | ClassName retrieved from rule definition when root record comes from primary page | A When rule with single condition .DateProp >= .DateTimeProp was returning true when DateProp was set to a certain date & DateTimeProp was set to a date after DateProp. This was expected to return false. Investigation showed this was a missed use-case for property expressions where the root record came from the Primary Page, and was traced to an issue with the values being converted to String and the class not being set properly when the IL Assembler was used to resolve the Primary.IntegerProp's type. This has been resolved by returning the pyClassName retrieved from the rule definition page. | Data integration |
D62755 | 523431 | Enhanced diagnostic logging for Email Listener failures | In order to better diagnose issues where the email listener entered a disabled state as soon as it was started, a catch block has been added to enhance logging the reason of failure. | Data integration |
D62840 | 534123 | Updated HashMap logic for better concurrent thread handling | The Pega execution engine was getting stuck at com.pega.eclipse.util.collections.HashtableOfIntValues.get for many thread within thread dumps. Investigation showed that when the key was not present in keytable, a thread would be stuck in an endless 'while' loop related to mapping. To resolve this, the data structure that is used for ruleset mapping from HashtableOfIntValues to Concurrent HashMap has been modified to better handle concurrent threads, and the handling for get and put has been updated. | Data integration |
D63234 | 529098 | Blobless class handling updated in BIX extract | When performing a BIX extract to database, null values were seen for some columns when there were values present in the clipboard and the report definition. Analysis showed that an Extract Rule defined on a Blobless class with a property having a length greater than 30 would return a null value even when the source table's corresponding columns do not have null values. This was due to BIX using an internal Report Definition which would truncate the column alias if the length of the column was greater than 30: when the extract then tried to find the actual property name in the result page, it did not find it and returned a null value. To resolve this, if the class is Blobless, the system will iterate over the property and check whether it is truncated or not. If it it truncated, the truncated name will be used when looking for the property in the result page instead of using the unmatching actual property name. This will ensure the correct value populated in the result page will be used. | Data integration |
D63255 | 531382 | Updated sender email address validation to handle long domains | In some cases, attempting to create a case via an email was failing and the cases were being routed to the broken queue. The error "IndeterminateConditionalException: Unable to load data page D_TrackAutoResponse. Required parameters : SenderEmailAddress. cannot be blank" appeared. This was traced to regex having a validation on the length of a domain name which caused a lengthy 'from' address to be trimmed. To resolve this, the regex has been modified to validate the email address as per RFC5322. | Data integration |
D63579 | 527998 | Enhancements added for using AWS file repositories |
Enhancements have been added to improve the use of AWS file storage: Logging for AWS SDK connection metrics can be activated on a per-repository basis, either through the ruleform or through the DSS storage/class/:/enableMetrics. INFO logging can be enabled on PegaAWSSDKMetricReporter to periodically output averages of recorded metrics for all registered S3 repositories with metric collection enabled, or INFO logging can be enabled on PegaAWSRequestMetricCollector to output recorded metrics on every client call for all registered S3 repositories with metric collection enabled. The interval at which PegaAWSSDKMetricReporter logs metrics at can be configured with the DASS storage/AWSSDK/metricReportingInterval. This DASS is a system-wide setting, and not a per-repository setting. The default reporting interval is 90 seconds, and metric collection is disabled on all repositories by default. |
Data integration |
D63677 | 529266 | Null check added for ObjClass filter value | When a report definition was run with "Starts with" as a filter condition and "Use null if empty" was not checked, the message "An error occurred during resolving the report definition - null java.lang.StringIndexOutOfBoundsException" was logged. This did not appear if the filter condition was "is equal" and "Use null if empty" was checked. To resolve this, the system will check for a null or empty value on pxObjClass filter values before processing it for class descendants. | Data integration |
D63774 | 540505 | Resolved .PDF extension preview issue | Previewing a PDF that had the extension capitalized as ".PDF" did not load, but one with the extension ".pdf" worked. This has been corrected by modifying pxUploadFile and pzUploadFileToADocument to convert the filetype extension to lowercase to prevent possible preview problems. | Data integration |
D63912 | 531203 | Context retained during nested automation | Issues were seen with context being passed correctly with automation. When a Data Page that was used to abstract the call to a REST API used a Data Transform which in turn used a Data Page which also used a call to a REST API to retrieve an OAuth Token, an error appeared. The same worked when a URL was provided on the Connect REST. When a service case was launched but a Flow Action wasn't submitted, then another service case was added and submitted, the post-processing robotic automation activity used the run robotic automation activity from the previous service case instead of the current service case targeted for completion. This has been resolved by updating the webwb • pzpega_ui_doc_submit.js file to pass the correct MDIContext based on the event target of FA submission while invoking RDA automation. | Data integration |
D63993 | 524302 | Resolved auto-addition of UpdateDateTime filter to BIX history extract | When creating a BIX extract rule on history classes, trying to save the rule resulted in the invalid filter error "pxBIXReportPage—Cannot use a unexposed property". Analysis showed the pxUpdateDateTime column, which is the default filter on creating a new extract, was added automatically even though history classes do not have a pxUpdateDatetime column. While there was a workaround of manually removing the pxUpdateDateTime column filter when creating the extract rule for the first time, this has been resolved. | Data integration |
D64083 | 542885 | Compilation logic error corrected | A compilation failure on upgraded systems using the JDK 11 compilation of libraries that include Pega 7 functions that have INCLUDE statements that are not supported in JDK 11 was traced to a logic error added when enhancing debug logging. This has been corrected. | Data integration |
D64197 | 536588 | Handling added for passivated file upload and attach | When storage type repository was configured and any file type other than image was uploaded while pyIsStreamBasedUpload was set as true, uploading a file and keeping it idle for 15 minutes before clicking on attach caused pyattachInputStream to become null on the DragDropFileUpload pagelist. This caused an activityterminateException in tracer and the assignment was not submitted. This exception was due to a check in attachFile activity that calls terminateactivity when streambasedupload is true and attachinputstream is null. To resolve this, a validation rule has been added to check if the page exists, streambasedupload is true, and pyattachinputstream is null or has a value. If it is NULL, a message will be displayed about reattaching the file(s). | Data integration |
D64558 | 527675 | 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 |
D64729 | 524986 | DSS added to circumvent corrupted BLOB during deserialization | A corrupted BLOB was preventing work items from opening. To assist in this scenario, a DSS has been added to allow the conditional bypassing of BLOB properties. Pega-Engine propertiesToIgnoreDuringBlobDeserialization will accept a space-separated list of properties for which to errors will be ignored during BLOB deserialization. Pega-Engine dumpBlobOnDeserializationException should be set to “true”/”false” based on whether or not to print the entire BLOB to the console if there is an exception. Note: This may output sensitive data to the logs. | Data integration |
D65112 | 541146 | Added support for imported rules to populate bixreportpage | Extract rules were not holding the filter criteria after upgrade while performing save-as (for the first time) of the imported rules from the previous version. Criteria were held when the filters were created in the new version. This was caused by BIX extracts created in earlier releases (7.x) not having bixreportpage included. When an environment was upgraded to 8.x versions, opening an extract required the bixreportpage to be populated with Report Definition metadata including the filters defined in the actual extract. Although the filters from the original extract were converted to filters that are acceptable by ReportDefinition, they were not being added to bixreportpage on opening the extract. To resolve this, the system has been updated to copy the filters back to bixreportpage on opening the extract in the upgraded environment. | Data integration |
D65362 | 526931 | Enhancements added for using AWS file repositories |
Enhancements have been added to improve the use of AWS file storage: Logging for AWS SDK connection metrics can be activated on a per-repository basis, either through the ruleform or through the DSS storage/class/:/enableMetrics. INFO logging can be enabled on PegaAWSSDKMetricReporter to periodically output averages of recorded metrics for all registered S3 repositories with metric collection enabled, or INFO logging can be enabled on PegaAWSRequestMetricCollector to output recorded metrics on every client call for all registered S3 repositories with metric collection enabled. The interval at which PegaAWSSDKMetricReporter logs metrics at can be configured with the DASS storage/AWSSDK/metricReportingInterval. This DASS is a system-wide setting, and not a per-repository setting. The default reporting interval is 90 seconds, and metric collection is disabled on all repositories by default. |
Data integration |
D66615 | 536240 | API added to minimize calls to set parameters in datapage | Differences were seen after upgrade when using a datapage associated with a property which was application-specific and that had Data Access for the property defined as “Copy data from a data page" with parameters whose value was set by an activity from the associated property of type single page. Prior to upgrade, only one call was seen to set the values for the parameters in datapage, but post-upgrade multiple calls were used to set the values to these parameters. This was traced to logic used for extraction and invoking the perform, and has been resolved by adding the new API 'DeclarativeAction.shouldExtractWatchedProperties'. It will return true or false, depending whether the extraction of watch properties is needed or not. | Data integration |
D66674 | 538971 | DSS added for fall back to legacy decision table format | After upgrade and switch to IL, non-working decision tables created in one class had pyWorkPage mapped to another class. In the column, the properties were mentioned as "pyWorkPage.xxxxx", but at runtime when the non-working decision tables ran as standalone, the system did not ask for values to be entered to evaluate the result. Tracer showed the error as "Goal seek requires missing input property pyWorkPage.All_Offln_Trans_In on page pyWorkPage; details: (unknown)". Investigation showed that the Legacy assembly for the decision table used the lazy evaluation pattern to resolve the expression in the column header in the generated Java code. This resulted in the property for the column header only being read when it was used. However, for IL-based decision tables all properties are read immediately before any rows are evaluated, which requires the property already be present on the page. This missing property from the lazy assembly then resulted in the exception. To resolve this, Executable.generateOrCompileSource and Virtual tableassemblyHandler.useIL() have been modified to fall back to legacy decision table format if the DSS InternalLanguage/disableIlBasedDecisionTable is enabled. | Data integration |
D66986 | 539411 | BIX command line support improved | Post-upgrade, it was seen that changes to the engine which validate that Data-Admin-DB-Name is not defined multiple times caused the BIX command line extracts to no longer work the same way. In order to improve backwards compatibility, updates have been made to loosen the validation in JdbcConfigurationFactory to always prefer prconfig settings if there are multiple definitions. | Data integration |
D67028 | 533271 | Encoded and unencoded tenant URLs validate as expected | Tenants created in Pega 8.3.1 were unable to process REST service requests, and an exception was seen in the logs. Investigation showed that while validating the incoming REST request, the system was relying on pathinfo instead of requestURI but pathInfo was always in un-encoded form. To resolve this, the design time URL will be constructed with an un-encoded tenant part, and both encoded and un-encoded request URLs will be validated. | Data integration |
D67211 | 534060 | Context retained during nested automation | Issues were seen with context being passed correctly with automation. When a Data Page that was used to abstract the call to a REST API used a Data Transform which in turn used a Data Page which also used a call to a REST API to retrieve an OAuth Token, an error appeared. The same worked when a URL was provided on the Connect REST. When a service case was launched but a Flow Action wasn't submitted, then another service case was added and submitted, the post-processing robotic automation activity used the run robotic automation activity from the previous service case instead of the current service case targeted for completion. This has been resolved by updating the webwb • pzpega_ui_doc_submit.js file to pass the correct MDIContext based on the event target of FA submission while invoking RDA automation. | Data integration |
D67225 | 528630 | Performance improvement for Interaction History | Interaction history was causing a performance issue due to pySubjectID being hard coded in the query while the clause values disabled query caching. To resolve this, a bind variable will be passed when using a single subject ID select call to the FACT table in the Inbound queries. | Data integration |
D67232 | 530007 | Email listener updated to handle encoded MIME attachment | When processing an email with an attachment that was itself an encoded MIME part, the email listener generated a NullPointerException around an extraction error. Analysis showed that a content-type misled the system into thinking an attachment was another message part. To resolve this, EmailMessageParser.java has been modified to avoid attempting to process an attachment as a MessagePart if it cannot get the content of the part as a Message. | Data integration |
D68204 | 530033 | Connect-FTP now s3 repository aware | In order to support using the Connect-FTP feature with the s3 repository as the source path, the system has been updated to check the local path provided for a filespec and attempt to retrieve the file for the Connect FTP call from there. This uses the "local file" field , using the format of "file://<storageDestinationAlias>/targetfolder" . | Data integration |
D69836 | 529727 | Context retained during nested automation | Issues were seen with context being passed correctly with automation. When a Data Page that was used to abstract the call to a REST API used a Data Transform which in turn used a Data Page which also used a call to a REST API to retrieve an OAuth Token, an error appeared. The same worked when a URL was provided on the Connect REST. When a service case was launched but a Flow Action wasn't submitted, then another service case was added and submitted, the post-processing robotic automation activity used the run robotic automation activity from the previous service case instead of the current service case targeted for completion. This has been resolved by updating the webwb • pzpega_ui_doc_submit.js file to pass the correct MDIContext based on the event target of FA submission while invoking RDA automation. | Data integration |
D69927 | 537478 | Cleanup added for staging directory | Temporary files from imports and exports (from DevOps) were filling up the staging area disk space because there was no automatic process for cleaning up these local files. This has been resolved by adding an enhancement that will clear the directory on Engine Startup and any time ParUtils.setStagingDirectory gets called to initialize the staging directory. | Data integration |
D70674 | 535482 | Handling added for mobile upload of filename containing dots | An issue with uploading a file name containing dots (such as 2019.12.12) while using the mobile browser has been resolved by updating the AttachFile activity in the propertyExist function. | Data integration |
D71041 | 537894 | Default compiler pool size increased | An issue was seen where the nodes were continuously terminating and Stream service was not started. Error messages indicated a "WARN - Long running request detected for requestor", and that tasks were waiting for the generic object pool. Analysis showed that it was possible for a deadlock to form during the startup of the system or during the first few rule executions and compilations when there were more than five rules trying to compile. Once the variable LibraryMetadata.TypeEnvironment.resolver (ClassLoader) is initialized, the problem would resolve. To prevent the deadlock, the default compiler pool size has been increased from 5 to 10. | Data integration |
D71145 | 536111 | Enhancements added for using AWS file repositories |
Enhancements have been added to improve the use of AWS file storage: Logging for AWS SDK connection metrics can be activated on a per-repository basis, either through the ruleform or through the DSS storage/class/:/enableMetrics. INFO logging can be enabled on PegaAWSSDKMetricReporter to periodically output averages of recorded metrics for all registered S3 repositories with metric collection enabled, or INFO logging can be enabled on PegaAWSRequestMetricCollector to output recorded metrics on every client call for all registered S3 repositories with metric collection enabled. The interval at which PegaAWSSDKMetricReporter logs metrics at can be configured with the DASS storage/AWSSDK/metricReportingInterval. This DASS is a system-wide setting, and not a per-repository setting. The default reporting interval is 90 seconds, and metric collection is disabled on all repositories by default. |
Data integration |
D71145 | 536111 | Enhancements added for using AWS file repositories |
Enhancements have been added to improve the use of AWS file storage: Logging for AWS SDK connection metrics can be activated on a per-repository basis, either through the ruleform or through the DSS storage/class/:/enableMetrics. INFO logging can be enabled on PegaAWSSDKMetricReporter to periodically output averages of recorded metrics for all registered S3 repositories with metric collection enabled, or INFO logging can be enabled on PegaAWSRequestMetricCollector to output recorded metrics on every client call for all registered S3 repositories with metric collection enabled. The interval at which PegaAWSSDKMetricReporter logs metrics at can be configured with the DASS storage/AWSSDK/metricReportingInterval. This DASS is a system-wide setting, and not a per-repository setting. The default reporting interval is 90 seconds, and metric collection is disabled on all repositories by default. |
Data integration |
D71145 | 536574 | Enhancements added for using AWS file repositories |
Enhancements have been added to improve the use of AWS file storage: Logging for AWS SDK connection metrics can be activated on a per-repository basis, either through the ruleform or through the DSS storage/class/:/enableMetrics. INFO logging can be enabled on PegaAWSSDKMetricReporter to periodically output averages of recorded metrics for all registered S3 repositories with metric collection enabled, or INFO logging can be enabled on PegaAWSRequestMetricCollector to output recorded metrics on every client call for all registered S3 repositories with metric collection enabled. The interval at which PegaAWSSDKMetricReporter logs metrics at can be configured with the DASS storage/AWSSDK/metricReportingInterval. This DASS is a system-wide setting, and not a per-repository setting. The default reporting interval is 90 seconds, and metric collection is disabled on all repositories by default. |
Data integration |
D71977 | 535599 | Obj-Browse will retrieve more than 50 records | After performing multiple skims, a newly added property was not retrieved when an Obj-Browse was performed. In Obj-Browse action, when a class is mapped to an external table and does not contain BLOB column pzpvstream, in a specific case where pxObjClass value is a reference to a parameter, a list of properties mapped to the class explicitly by querying pr4_rule_property table using NativeSQL is fetched. This call by default returns only 50 records: in cases where there are more than 50 properties for an external class, some of the properties from the obj-browse response mapping are therefore missed. To resolve this, the limit of 50 records has been removed from this NativeSQL call. | Data integration |
D72368 | 534329 | Enhancements added for using AWS file repositories |
Enhancements have been added to improve the use of AWS file storage: Logging for AWS SDK connection metrics can be activated on a per-repository basis, either through the ruleform or through the DSS storage/class/:/enableMetrics. INFO logging can be enabled on PegaAWSSDKMetricReporter to periodically output averages of recorded metrics for all registered S3 repositories with metric collection enabled, or INFO logging can be enabled on PegaAWSRequestMetricCollector to output recorded metrics on every client call for all registered S3 repositories with metric collection enabled. The interval at which PegaAWSSDKMetricReporter logs metrics at can be configured with the DASS storage/AWSSDK/metricReportingInterval. This DASS is a system-wide setting, and not a per-repository setting. The default reporting interval is 90 seconds, and metric collection is disabled on all repositories by default. |
Data integration |
D72886 | 543753 | Check added for Repositories before saving attachment | When creating or updating a case through email listener, the Link-Attachment defaulted the pxStorageType to 'WebStorage'. This caused an issue when using PegaS3, which needs pxStorageType 'Repository'. To resolve this, a check has been added to see if Repositories are enabled, and if they are the storageType will be set accordingly. | Data integration |
D75003 | 538338 | File Listener null-pointer exception resolved with context check | A service file rule associated with a file listener was encountering a Null Pointer Exception. Investigation showed that the system successfully processed the first record in the service file, then it encountered the null-pointer exception indicating that the listener state was null. This was traced to functionality introduced in an earlier version to ensure File Listeners are succinctly shut down when a Cloud Node is moved to queiscing. As part of that work, the Rule-Service-File was linked to ListenerStateManager and did not work in a scenario where the rule could be executed outside of that context. This has been resolved by adding a check for context before directing the activity. | Data integration |
D75945 | 541082 | Data transform updated to remove @java references | The usage of @java expressions in data transform rules has been deprecated. The pyProcessDocumentCompletedEvent data transform was given as an extensible data transform intended to be overridden by customers to have their own processing logic of document completion event, however this caused confusion and when used in the out-of-the-box form it resulted in an error when saved at design time. To resolve this, the shipped data transform has been updated to call to a Rule-Utility-Function to return the file's base name, and the @java references have been removed. | Data integration |
D76150 | 539452 | Logging updated for EmailListener and Data-Agent queue items | In order to avoid the pr_sys_queue_ftsindexer table being overwhelmed with Data-Admin-Connect-EmailListener and Data-Agent-Queue instances for queued items, the Data-Admin-Connect-EmailListener and Data-Agent-Queue class definitions have been modified to filter queue items to incremental indexing if updates are from system and instance type is data- . | Data integration |
D76291 | 541012 | Check added for Repositories before saving attachment | When creating or updating a case through email listener, the Link-Attachment defaulted the pxStorageType to 'WebStorage'. This caused an issue when using PegaS3, which needs pxStorageType 'Repository'. To resolve this, a check has been added to see if Repositories are enabled, and if they are the storageType will be set accordingly. | Data integration |
D76756 | 538221 | Support expanded for postgres versions and logging improved | While trying to import data into the Data Type Tables using a CSV file and selecting the 'Add or Update' option, an error appeared and the import failed. Using 'Add or Delete' worked as expected. This was traced to the import of data failing for postgres version 10.x because UseMerge for postgres did not use merge if the version of Postgres was not 9. Support has now been added for versions of Postgres higher than 9 in SQLGeneratorPostgres.useMerge(), and logging has been enhanced to improve triaging issues such as this. | Data integration |
D78531 | 541999 | Encoding added for special characters in JFROG filenames | A blank screen or the error "Unable to get the file from Repository" appeared when attempting to attach a file from JFROG Repository if the file name contained special characters. This has been resolved by modifying the artificatory URL generation to properly encode special characters during file download. | Data integration |
D80668 | 543866 | Performance improvement for queries on Kafka partitions | Even though there were multiple dataflow nodes available in the cluster, all requests were going to single node and causing system slowness. Investigation showed there was a queue processor rule that included the pxPartitionKey attribute which forced all records to be sent to a single partition by Kafka producers. This attribute has been removed. | Data integration |
D81532 | 544429 | Corrected case-mismatch when using Top Ranked in a subreport | Incorrect SQL Generation was seen when using the combination of Union ALL (more than 1 distinct tables) and Rank in Sub report. The sub-report had a ranking logic to pull records with greatest “pxUpdateDateTime”, but when executing the main report definition rule, Oracle responded with the error "There was a problem getting a list." Investigation showed that the query generated was not able to match the columns because they were given as pxUpdateDateTimeR1 in one and PXUPDATEDATETIMER1 in another. This only happened when display Top Ranked was selected in the subreport, and was due to Oracle being case-sensitive. This has been resolved by updating the system to get the correct column alias for rank in a subreport. | Data integration |
D89304 | 519827 | ClusterAndDBCleaner repaired | An error in the logic order of events caused a compilation error for pyClusterAndDBCleaner, leading to old records created by the system/node utilities to not be automatically removed as expected. This has been corrected. | Data integration |
D39972 | 513459 | UpgradeOnOpen updated to use property set | After upgrade, using the revalidate & save wizard on MapValue rules (Rule-Obj-MapValue) generated null pointer exceptions in the tracer file and rules failed with bad status. This was traced to changes made in the Java step of UpgradeOnOpen that used the getReference() method, and has been resolved by updating the UpgradeOnOpen activity in the Rule-obj-Mapvalue class to use property set. | Decision Management |
D41207 | 512086 | Fallover stategy added to chat routing to keep event processor running | Chats were becoming stuck in the queue and end users were not able to connect with the customer service representative. An excessive number of queued items were observed in a Queue Processor named "EventProcessor". This was traced to the setting "Browse from the offset" having been removed because of a retention policy. This resulted in "Browse from the end of the stream" being used instead even though browse should start from the earliest known offset. To resolve this, Stream Producer will be cached based on topic, and Stream consumer will fall over to an earliest strategy in case the requested offset isn't found so the event queue will be handled in a timely manner. | Decision Management |
D42451 | 518066 | ExecuteRDB call updated to use NativeSQL for blob | After creating a test activity to clear data set records that used the DataSet-Execute method and passed the data set name and truncate operation, only 51 records were deleted in a single run when the data set had more than 51 records. Investigation showed that for blob tables, the database truncate operation was using executeRDB with an empty results page, i.e. it didn't specify pyMaxRecords, which on some databases might have limited the number affected records. To resolve this, the executeRDB call in the database truncate operation has been modified to use NativeSQL for blob tables. | Decision Management |
D43912 | 509736 | Fallover stategy added to chat routing to keep event processor running | Chats were becoming stuck in the queue and end users were not able to connect with the customer service representative. An excessive number of queued items were observed in a Queue Processor named "EventProcessor". This was traced to the setting "Browse from the offset" having been removed because of a retention policy. This resulted in "Browse from the end of the stream" being used instead even though browse should start from the earliest known offset. To resolve this, Stream Producer will be cached based on topic, and Stream consumer will fall over to an earliest strategy in case the requested offset isn't found so the event queue will be handled in a timely manner. | Decision Management |
D45608 | 519900 | Correct service instance name passed for data flow in DSMStatus | When using the Connect-HTTP service "DSMStatus" to provide the node and status information as seen on the various tabs of the Designer Studio > Decisioning > Infrastructure > Services landing page, using DataFlow as the service parameter for the HTTP service method resulted in an empty response when the expectation was to get the information regarding the cluster details of Dataflow node type. This was traced to the service instance name not being parsed correctly when used for Data Flow services, and has been resolved by ensuring the correct service instance name is passed for this use. | Decision Management |
D47618 | 512601 | Statistic rounding error in ADMSnapshot Agent with Oracle corrected | While running the ADMSnapshot Agent, the exception "internal.mgmt.Executable) ERROR com.pega.decision.adm.client.ADMException: Failed to complete ADM Data Mart snapshot" was seen. This was traced to an issue with the rounding of performance statistics when using Oracle, and has been resolved. | Decision Management |
D48010 | 514982 | Unit testing validation relaxed for external input strategy | When trying to test a strategy, the testing transform had to exist in the same ruleset/version as the strategy or it would not resolve. Investigation showed that because the artifacts were in a different ruleset and version build on top of the application that the testing strategy belongs to, validation failed because it was using the platform based ruleset validation. This was a missed use case, and has been resolved by relaxing the validation for external input strategy so it does not take into account the ruleset and version of it. This same change has been applied for referenced data transforms. | Decision Management |
D51017 | 517180 | Expanded date format handling | The xx in the xx:yy time format was incorrectly detected as a year. To correct this, support has been added for the use case of the date followed by time. | Decision Management |
D51353 | 516912 | Unit testing validation relaxed for external input strategy | When trying to test a strategy, the testing transform had to exist in the same ruleset/version as the strategy or it would not resolve. Investigation showed that because the artifacts were in a different ruleset and version build on top of the application that the testing strategy belongs to, validation failed because it was using the platform based ruleset validation. This was a missed use case, and has been resolved by relaxing the validation for external input strategy so it does not take into account the ruleset and version of it. This same change has been applied for referenced data transforms. | Decision Management |
D52051 | 515375 | Corrected EditElement disappearing after DDR import | After importing a DDR to a 'treatment', the section disappeared. Because the treatment decision data rules are created in the top level SR class, when the treatments are exported from these rules, the pyIssue and the pyGroup classes are empty in the exported CSV. When new treatments were added or existing treatment are modified in the CSV and imported, the pxObjClass for the treatments was set to Data-pxStrategyResult as the pyIssue and pyGroup were empty in the imported CSV. To correct this, pySelectedClass will be set to the propositions instead of pxPage.pxObjClass while importing. | Decision Management |
D52723 | 516090 | Data join conditions representation updated to avoid overwrite | After upgrade, a Data join component on the Strategies was not working as expected, especially the ones using the DateTime function. If the data join conditions were swapped, i.e the DateTime function was not the last criteria, the strategy outputs were correct.Investigation showed that the implementation used a map to represent pairs of left and right expressions which caused conditions rows with the same leftExpr to end up overwriting one another. This has been corrected by fixing the representation of conditions of a Data Join to a list of tuples which eliminates the possibility of one condition overwriting a previous one. | Decision Management |
D53223 | 516916 | Predictor handling updated for Versioning Adaptive Model | When attempting to update an adaptive model in a branch after it had been versioned, errors were observed on Predictor Type data that had not changed from the previous version. This was traced to an issue in the Adaptive Model rule UI in both Prediction and Dev Studio where if a non-default predictor type is selected, it would show in the UI but not be saved to the database. No error was shown. This silently led to the unexpected and incorrect data being stored with the result that once data had accrued, the rule could not be saved/saved-as due to validation believing the predictor type of a predictor with data was changing. To resolve this, rules have been updated so that the system will no longer override the predictor type of a predictor being edited when it is solely the predictor type that is changing. | Decision Management |
D53225 | 516316 | Rule creation logic updated to include creation branch | When trying to create a new adaptive model rule in Prediction Studio, the “Create” button was not activating. The adaptive model rule was being saved in a branch ruleset, and investigation indicated that the deactivated button could be traced to the lack of an open ruleset version available even though the intention was to create it on a branch. This has been resolved by modifying the rule creation logic to incorporate the branch for creation. | Decision Management |
D54218 | 518598 | Deadlock in static Initialization of IntList resolved | JVM Deadlock was seen related to the static Initialization of a subclass field in class com.pega.decision.strategy.ssa.runtime.collections.api.IntList . Thread dumps showed threads in RUNNABLE State that were parked to wait for class initialization, and this was traced to a missed sonar alert which failed in multi-threading. To resolve this, the system handling has been updated to prevent potential deadlock. | Decision Management |
D54430 | 518290 | Updated VDB Statistics rendering to compensate for Google Chrome changes | The Statistics overlay was not rendering for VBD planner in Google Chrome. Investigation showed that the Google Chrome browser (v.77) was misfiring one of the mouse events due to changes in the browser, and the handling has been updated to resolve this issue. | Decision Management |
D54602 | 517307 | Prconfigs added to support Cassandra Speculative Based Execution |
In order to achieve high availability for Cassandra, prconfigs have been added to support speculative execution. The available prconfigs will enable it, and set maximum number of executions and delay before the next execution is launched. The prconfigs are: dnode/cassandra_speculative_execution_policy dnode/cassandra_speculative_execution_policy/max_executions dnode/cassandra_speculative_execution_policy/delay |
Decision Management |
D57822 | 524198 | Internal Cassandra memory leak fixed | A memory leak was found on internal Cassandra that caused temporary log files to fill up the heap. This has been resolved by updating the system to ignore non-log files and properly increment the index. | Decision Management |
D60121 | 525491 | All interactions visible in "Latest Responses" for ADM | Interactions were not visible in the "Latest Responses" section of the Model Management landing page for Adaptive models if the requests were stored on multi-node systems. This was due to the system fetching the Last Responses using a list of server nodes built using a version of deployment.getClusterState(tools) which gave only the ADM nodes list instead of all the ADM nodes both client and server. To resolve this, the system has been updated to use ServiceRegistry to get all of the data flow nodes and get the last responses from each of them. | Decision Management |
D60268 | 521464 | Performance and thread-handling improvements for SSA | The SecureRandom class was used internally by SSAExecutionContext indirectly via UUID generation. Because this exhibited performance issues on some Linux environments, UUID has been replaced with static AtomicLong. In addition, a memory leak was observed when the strategy (SSA) execution resulted in an exception, and the strategy template has been modified to gracefully shutdown the VM under all circumstances. Thread-safety measures have also been tuned to be more fine-grained to reduce the potential thread contention that was seen while borrowing the SSAInterpreter object from SSAInterpreterPool. | Decision Management |
D66223 | 529994 | Update Handler will not run during migration | Rolling restart of DataFlow, ADM ,VBD, and Util Tiers failed with a PENDING_JOINING error after an in-place upgrade. This was traced to the logic for the update timing: when nodes start after an upgrade from 7.x to 8.x they will migrate data flow runs. Migration happens on only one node, and while it's in progress the other nodes will wait until migration finishes before they come up. At this point the state of the data flow services will be 'PENDING JOINING'. The issue is that while migrating runs, the Data Flow Update Handler was triggered to validate whether there were nodes available on the service the run belongs to. This call can cause the corresponding data flow service to be initialized, but the call will be blocked since all services wait for the migration to end. This resulted in a deadlock which prevented all nodes from coming up successfully. To resolve this, the process has been updated to skip the update handler during migration to avoid triggering the initialization of client services that are waiting on the migration lock. | Decision Management |
D66397 | 530331 | ADM out-of-sync corrected for multi-datacenter Cassandra cluster |
After setting up the multi-datacenter configuration for a Cassandra cluster that consisted of six nodes in datacenter 1 and three nodes in datacenter 2, failover testing revealed a mismatch in the number of ADM models stored in each datacenter. The mismatch was observed mostly in the number of records present in the "adm_scoringmodel" and "adm_response_commit_log_date_tiered" tables. When Cassandra nodes are down, the other nodes in the cluster will store hints (records to be written) for the down nodes. When these nodes come back online the hints are replayed to those nodes and the data is written. Hints are written for 3 hours, so if a node come back up within 3 hours data is recovered and repairs are not required. The gc_grace_seconds for the above tables that were getting out of sync across the two datacenters was set to zero seconds. The "gc_grace_seconds" attribute is not just used as the time for removal of tombstones, it's also used to set the TTL for records written to the system.hints table. That meant that when the hints were written for the ADM tables for the nodes that were down, they were immediately expired since it was set to 0 and not played back when the terminated nodes restarted and joined the cluster. This has been resolved with this fix for all customers new to this release. Existing customers already on v7.3 or higher will need to complete the local change detailed below: Connect to the Cassandra cluster using cqlsh in the Pega Cassandra distribution and then run ALTER TABLE adm_commitlog.adm_response_commit_log_date_tiered WITH gc_grace_seconds = 86400; to change the relevant setting from zero to the equivalent of one day - the same length of time that the data in the table lives for. This will mean that any hints written can still be used to replay data to another node while the data itself is alive. It does also mean, however, that, given a constant load, a day's worth of expired ADM event data in the table will always be present on the disk, as the tombstones can now not be cleaned up for a day. |
Decision Management |
D68707 | 529869 | Update Handler will not run during migration | Rolling restart of DataFlow, ADM ,VBD, and Util Tiers failed with a PENDING_JOINING error after an in-place upgrade. This was traced to the logic for the update timing: when nodes start after an upgrade from 7.x to 8.x they will migrate data flow runs. Migration happens on only one node, and while it's in progress the other nodes will wait until migration finishes before they come up. At this point the state of the data flow services will be 'PENDING JOINING'. The issue is that while migrating runs, the Data Flow Update Handler was triggered to validate whether there were nodes available on the service the run belongs to. This call can cause the corresponding data flow service to be initialized, but the call will be blocked since all services wait for the migration to end. This resulted in a deadlock which prevented all nodes from coming up successfully. To resolve this, the process has been updated to skip the update handler during migration to avoid triggering the initialization of client services that are waiting on the migration lock. | Decision Management |
D69028 | 528972 | Deadlock in static Initialization of IntList resolved | JVM Deadlock was seen related to the static Initialization of a subclass field in class com.pega.decision.strategy.ssa.runtime.collections.api.IntList . Thread dumps showed threads in RUNNABLE State that were parked to wait for class initialization, and this was traced to a missed sonar alert which failed in multi-threading. To resolve this, the system handling has been updated to prevent potential deadlock. | Decision Management |
D71621 | 533294 | Real time processing picks up correct datetime for Capture Response records | A Realtime Data flow for the Capture Response flow was configured with a strategy shape set to load previous decisions within the past 7 days. Once this Realtime DF was started, attempting to Capture Response for decisions made after that startup timepoint did not work. This was traced to the InteractionID being written with global properties for the datetimes, and has been resolved by making those datetime properties local so the start and end time are not cached and the time range is calculated based on "now”. | Decision Management |
D74117 | 539460 | DDS service will not run Hazelcast check if external Cassandra is configured | Services were not responding, and thread dumps seen in the logs indicated that a large number of threads were waiting for one to come back from getting the cluster state for a DSM process. Investigation showed that the threads were waiting for a Hazelcast response about the cluster state. However, since a Hazelcast call is not needed when Pega is configured with external Cassandra, the DDS Service code has been changed to not to check for candidate nodes if configured with external Cassandra cluster. | Decision Management |
D74247 | 542915 | Resolved errors when using Build Model from the Preview Console | Using the Web Chatbot interface and trying to perform Build Model action from Preview Console failed with multiple errors, either "This action is not allowed as it is outside the current transaction" or "class <blank> doesn't exist". This was traced to issues with the transaction during model update, and has been resolved by conditionally disabling the show page step of pzGetModelProcessStatus. This step creates a difference in the context of the current transaction and is disabled when called from Update API. | Decision Management |
D75519 | 536717 | Corrected calculating propensities | Several PMML models designed to compare the outcomes to a control dataset experienced an issue where the probability scores in Pega did not match the original control dataset. The PMML model was also tested using KNIME; those results matched Pega but not the original control dataset. Investigation showed that the JPMML evaluator contained outdated code, and the incorrect calculations have been resolved. | Decision Management |
D78940 | 542925 | Dataflow monitoring enhanced | Enhanced monitoring and healthchecks have been added for dataflow and alerts. | Decision Management |
D79145 | 543053 | Added tokenizer for KeyWord-Based Topic Detection phrases | KeyWord-Based Topic Detection was not Working for "Enrollment/Re-Enrollment" as a word, for example a categorization model with the text 'This is an email related to Enrollment/Re-Enrollment'. To facilitate this use, a tokenizer has been added to break should, must, and and words into components for a taxonomy match. | Decision Management |
D79909 | 542243 | DDS added for automated dataflow run cleanup | During a recent upgrade it was seen that there were in excess of 20k dataflow runs, some 2 years old, which slowed down the migration significantly. In order to resolve this, an automated process has been added. This clean-up procedure deletes all the single case, batch, and real time runs older than 30 days which are in the final state - Completed, Completed with Failures, or Failed, and batch and real time runs which are in the Stopped state. The DDS Pega-DecisionEngine.dataflow/run/maxDaysToKeepRuns.should be used configure the retention period. Note that the retention period is calculated since the last processed message and not the creation time of the run. | Decision Management |
D82895 | 543605 | Restart issue on dataflow service nodes resolved | A high percentage of rolling restarts were failing for nodes hosting dataflow services due to prolonged restart times. To resolve this, the system has been updated so Cloud services will not try to recover the node state in case of a restart, since nodeIDs are always new and not reused. | Decision Management |
D40662 | 511396 | OpenRuleAdvanced updated | After upgrade, the Update Page and Append and Map to step in Data transform was generating the error "No Server connection while giving page name to Target and Source". This was traced to the OpenRuleAdvanced_OverLabel control, and investigation showed that a variable was not being resolved when invoking pzEncryptURLActionString. This has been resolved by updating OpenRuleAdvanced and reimplementing two parameters as well as moving the call of these variables to the beginning of the script. Security has also been improved by moving some of the encryption to SafeUrls. | Low-code app development |
D41636 | 521731 | Route to configuration in the approval flow accepts Specific User parameters | Route to configuration in the approval flow was not accepting a parameter value/property value when select Specific User option from drop down was chosen. This was traced to unique ID change work done in the 8.2 release: the pzSimpleApproval section has two controls (DropDown for Participant & AutoComplete for Operator) configured on same property pyOperatorToAssign with "run visibility on client configuration), and when the control value was being changed in the AutoComplete control, the empty value of DropDown control was being posted to the clipboard. To correct this, the section Work-.pzSimpleApproval has been modified to remove performing run-visibility conditions at client side. Instead, the system will use the ".pyApproverType Changes" condition to refresh the wrapper DL which contains the routeTo type Operator/WB/Participant property controls. | Low-code app development |
D42566 | 512871 | ApplicationInventory function deleted | It was possible to call the activity "ApplicationInventory of class Rule-" by appending the activity name in the URL. To improve security, the ApplicationInventory activity and HTML rule have been removed from the system. | Low-code app development |
D44942 | 518352 | Guided tour popups handling added for right-to-left language locales | Guided Tour Popups were still appearing in the default EN location after switching to the ar_AR locale. This was traced to a missed use case for locales using a right-to-left mode such as Arabic or Hebrew, and has been resolved by updating the guided tour engine openPopOver function to account for the HTML tag dir attribute for value of "rtl". This will anchor the pop over to rightBottom / and display the arrow on the rightTop instead of leftBottom / leftTop. | Low-code app development |
D47975 | 514012 | OpenRuleAdvanced updated | After upgrade, the Update Page and Append and Map to step in Data transform was generating the error "No Server connection while giving page name to Target and Source". This was traced to the OpenRuleAdvanced_OverLabel control, and investigation showed that a variable was not being resolved when invoking pzEncryptURLActionString. This has been resolved by updating OpenRuleAdvanced and reimplementing two parameters as well as moving the call of these variables to the beginning of the script. Security has also been improved by moving some of the encryption to SafeUrls. | Low-code app development |
D48248 | 517237 | cross-site scripting filtering added to URLs | Cross-site scripting filtering has been added to prevent the injection of a script into a URL using ViewXML. | Low-code app development |
D48751 | 515537 | Pega unit for case type records user inputs | When creating a Pega unit for the case type by selecting Actions -> Record test case for Case, the user inputs were not recorded for embedded page properties. This has been corrected. | Low-code app development |
D52138 | 537504 | Property setting corrected for On Join and Exclusion shapes in Expression Builder | The properties for the defined page did not appear when using the type-ahead feature to select properties for the On Data Join and Exclusion shapes in Expression Builder. This was an issue related to the property being referenced for setting the context in the expression builder, and has been corrected. | Low-code app development |
D54984 | 529796 | Resolved ruleset save issue for Google Chrome/IE | When using particular versions of Google Chrome or Microsoft Internet Explorer, the intermittent error "pyComponentInterfaceClass: <user> does not exist or is not a valid entry for this ruleset and its prerequisites" appeared when attempting to validate an application, and the ruleset could not be saved. This was traced to changes made in the browser around password handling, and has been resolved by explicitly clearing out the pyComponentInterfaceClass if that value is not in use. | Low-code app development |
D55841 | 522694 | isAvailable calendar instance will include time zones | When using a custom configuration to route assignments, if today was configured as unavailablefrom date, assignments were still routed to the current operator even though they were not available. Analysis showed that the same Calendar was not used to compare date objStartDate, opUnavailableFrom and opUnavailableTo in the function, isAvailable. The isAvailable FUA calculates objStartDate by getting the calendar instance and setting the time by calculating it from the next business day. However, the calendar instance was created from Calendar.getInstance(), which does not use a time zone, and this resulted in a mis-match of time. To resolve this, instead of creating a calendar instance objStartDate will be formatted to YYYYMMDD format and then converted to the requestor time zone timings using Data Time Utils parseDateTimeString. | Low-code app development |
D60636 | 533046 | Check added for empty RelevantRecords parameter to improve performance | When there were no relevant properties in given class context, i.e the Param.RelevantRecords value was empty at step#3 of the pxLoadPegaExpressFields activity, the pzGetFieldsDetailsForClass RD tried to fetch all the properties available for that particular class and its hierarchy, causing system performance issues. To resolve this, a jump condition has been added at step#4 of the pxLoadPegaExpressFields activity to avoid further processing when there are no relevant properties in given class, and the "Use null if empty" option for filter condition A in pzGetFieldsDetailsForClass is now checked to avoid fetching all results when the RelevantRecords parameter value is empty. | Low-code app development |
D61681 | 532559 | Handling added for different access groups updating a case | When a parent flow was configured with a Wait shape to wait until any AccessChild case reached Pending-Authentication and then the “Update a case” shape was used to update the case status of child cases using a Data Transform, the Wait shape was being processed successfully but the child cases were not always updated as expected. This issue occurred when the cases were processed by users with different access groups, so the ProcessFlowDependencies agent processed the dependency. In this scenario, findPageByHandle returned an incorrect WorkPage because of the different access groups. To resolve this, pyLoadMyCasesNested Step-5 and pzProcessIndividualDepAssignment Step -13 now make additional checks to verify whether the page found by findPageByHandle API is a valid WorkPage or not. | Low-code app development |
D63031 | 526587 | Reusable assets default option populated correctly for new application | When creating an application with at least two case types where each case type belonged to different class groups and pointed to different tables but were configured to have only one work pool, operator work pool values for pxThread and pxRequestor did not correctly reflect the different access group settings. This was traced to the inheritance of default values when the portal pyPortal.pyDesktopType was set to Composite, which caused the system to always take the value from the work pools in the application whether or not it was the same value as specified. A check has now been added so that the system will only default to using the value from the work pool if no value has been specified. | Low-code app development |
D63307 | 542769 | Unneeded class name filter removed from GetRelevantPropertiesForDataType | Given one class with a set of properties and another class inherited from the first class containing a relevant records set for class 2, then a new harness did not show the base class fields. Investigation showed that the fields present in the parent class and marked relevant in the case were not being fetched due to pzGetRelevantPropertiesForDataType having a class name filter along with filter by rule resolution. To resolve this, the class name filter has been removed as it is not required due to the report already filtering by rule resolution and relevant class through a join. | Low-code app development |
D64528 | 528757 | Decision table rule scrolling fixed for low resolution screens | While scrolling right, the Tool bar in a decision table rule was moving right while the remaining screen moved left. This was traced to the the screen resolution being less than decision table toolbar width, allowing an infinite scroll. To support low resolution screens, the decision table grid has been made scrollable to resolve this. | Low-code app development |
D65401 | 528957 | Parameter page retained after strategy test case checkout | After a test case for a Strategy was created, it passed in the initial run but then failed after checkout of the test case. This was traced to an issue with the activity pzCheckAndUpdateParameters for strategy, and has been corrected. | Low-code app development |
D67316 | 541204 | Cross-site scripting protection for PegaRULESMove_Skimming_Query | Cross-site scripting protection has been added for input parameter toRSV of the activity PegaRULESMove_Skimming_Query. | Low-code app development |
D69927 | 537484 | Cleanup added for staging directory | Temporary files from imports and exports (from DevOps) were filling up the staging area disk space because there was no automatic process for cleaning up these local files. This has been resolved by adding an enhancement that will clear the directory on Engine Startup and any time ParUtils.setStagingDirectory gets called to initialize the staging directory. | Low-code app development |
D71475 | 538720 | Check added to apply values of newAssignPage.pxFormName | After upgrade, trying to open existing assignments resulted in a different harness being opened. This was traced to changes in how the property newAssignPage.pxFormName was used, and has been resolved by checking whether the harnesspurpose is dynamic before setting the pxFormName. If formname is already present, the system will proceed with picking the harness from the shape. | Low-code app development |
D72672 | 536386 | Security updated for CreateOperator | In order to improve security, CreateOperator in Pega-ProCom will require authentication to run with pxCanManageUsers privilege. | Low-code app development |
D75469 | 538119 | Resolved null-pointer exception in Expression Builder launch from activity rule | A NullPointerException occurred in SafeURL when trying to launch the Expression Builder from an activity rule. This was trasced to a failure to get a value property in a target field due to the target element and its parent element containing the same value for name attribute. This caused the parent element to be considered instead of the target element. To resolve this, the search for the target element in parent tag will use '$p' along with 'target element name' in query selector. | Low-code app development |
D75835 | 539301 | Added handling for Google Chrome drag and drop of Outlook email | Attempting to drag and drop an email from Outlook to a case opened in Google Chrome resulted in the email being moved to the Outlook deleted folder. This was traced to Google Chrome defaulting to defining the "dropEffect" attribute as "none" when the expectation is it should be "copy". To resolve this, the recommended handling from Microsoft has been added as an event to make a copy (and not a move) an email from Outlook when dragged and dropped with Google Chrome. | Low-code app development |
D17575 | 489953 | Survey route to work queue option restored for smartshape | After upgrade, routing to workqueue was no longer available for the new create survey smart shape. This has been restored. | Mobile |
D37275 | 519026 | Enabled PDF attachment for iPad Safari | It was not possible to select the PDF option when attempting to attach a file while using iPad Safari. This has been corrected. | Mobile |
D40605 | 510916 | Corrected mobile password control behavior on failed validation | Given a section on mobile where the out-of-the-box password control was used on a textbox with input field of type Password to set a new password, failed validation on the field caused the cursor on the input field to jump to the left. It was then not possible to delete the text or correct the placement of the cursor. This was traced to a missing type check for password in isTextBox(), and has been corrected. | Mobile |
D42243 | 525771 | Added handling for offline mobile attachments using PRFiles and Repositories | Attaching a file on mobile and then immediately clicking on it to open it either did not open the attachment or the attachment opened and then the app stopped working with a "Sync Failed" error. Attachments were not synchronized on the server, and when synchronization was re-tried the attachment was duplicated on attachment list. This was traced to the system being configured to use PRFile API for synchronizing attachments along with Repositories to store attachments; when the processing "commitAttachment" action was processed, it called the Work-.AttachFile activity to finalize attachment upload, but the activity was called without the mandatory attachment InputStream required when using PRFile + Repositories. This has been resolved by ensuring there is a call to Work-.AttachFile with InputStream in cases where PRFiles and Repositories are enabled. | Mobile |
D42437 | 513647 | Pulse @mention will avoid triggering search request if no suggestion list is available | Search threads were causing requestor Lock Exceptions due to poorly optimized queries sent to ElasticSearch when a Pulse mention was attempting to look up a person (e.g. "@"+typing) and the search of case objects to match to that search were performing poorly. To resolve this, an update has been made to avoid triggering requests if the suggestions list is not available for the search query. | Mobile |
D43272 | 516439 | Local user lookup modifed to use requestor level data page to improve performance | In a system with many users (over 40k), attempting to search for a user to send a private message was taking an excessive amount of time. Analysis found that all of the users were being loaded at once in a page list of type Code-Pega-List. This led to errors indicating the Page List property had more elements than the specified threshold, but pagination could not be added as the activity and RD are final. To improve performance, this process has been modified to use a data page at the requestor level instead. | Mobile |
D43808 | 512660 | Resolved loop causing search to fail | After upgrade, searching for a case caused node failure. This was traced to a system loop when trying to remove duplicate workpool classes and has been resolved by updating the pyPopulateWorkPoolsAndClassesForTagsSearch activity to remove extra looping on workpool classes in step 3. In addition, a new 'when' rule pyIsTagSearchEnabled has been added: the pySearchWrapper activity will only search tags when this rule is true. | Mobile |
D50137 | 528823 | Resolved loop causing search to fail | After upgrade, searching for a case caused node failure. This was traced to a system loop when trying to remove duplicate workpool classes and has been resolved by updating the pyPopulateWorkPoolsAndClassesForTagsSearch activity to remove extra looping on workpool classes in step 3. In addition, a new 'when' rule pyIsTagSearchEnabled has been added: the pySearchWrapper activity will only search tags when this rule is true. | Mobile |
D50584 | 518444 | Security added to retrieving operator list by URL extension | It was possible to append information to the application URL which allowed an unauthenticated user to find a list of operators. This has been corrected, and will now result in the message "There has been an issue; please consult your system administrator." | Mobile |
D50725 | 516513 | Page cleanup processes updated to facilitate Pulse Task creation | Attempting to create a Pulse Task in an assignment resulted in a "The Operation completed successfully, but returned no content" screen after clicking submit. This was traced to an incorrect usage of createworkpage. To resolve this, the system has been updated so that before calling createworkpage, a page-remove will be done so createworkpage will not clean the assignment page. | Mobile |
D53266 | 516395 | Synchronization continuation updated so mobile attachments properly preview | Clicking on attachments in mobile would open them if the attachment had just happened, but otherwise would not open them at all. This was traced to an issue with Synchronization continuation: the page was properly loaded from database but its content was not used to fill the named OfflinePackage page (which contains only the search keys). This has been corrected by replacing the empty page with the one loaded from the database. | Mobile |
D55559 | 520972 | Setting added to allow commas in bulk upload survey questions | Questions uploaded in bulk to Survey Designer were delimited by comma, potentially causing an issue when an option itself contains a comma. Because this is a hard-coded Excel template value, this has been addressed with the addition of an extension where delimiter values can be configured and overridden. | Mobile |
D67150 | 532022 | Resolved attachments when using Mobile page message setting | When using page-level error messages for a work object, trying to add an attachment to that work object resulted in an error and the attachment failed. This has been resolved by adding an error check in the pzAttachContentFile activity. | Mobile |
D74839 | 537321 | Corrected map zoom issue with iOS13 | After including a map control with markers in an application for iOS13, viewing via a mobile app and zooming introduces a gray bar across the map. This has been resolved by setting transform translateZ to the div of address map | Mobile |
D76927 | 541421 | VirusCheck added to all Pulse uploads | The upload file activity has been updated to invoke VirusCheckActivity for all Pulse uploads. | Mobile |
D81859 | 543764 | Maps and signatures inside layout groups scroll correctly | A map configured in the screen was getting grayed out while scrolling horizontally. Analysis showed that when an address map is inside a layout group, the layout group swipe was triggered instead of scrolling. To resolve this, the target parent now has the data attribute "data-nogestures" = true so the layout group swipe will not be triggered. This will also prevent swipe on signature while scrolling horizontally. | Mobile |
D37115 | 515838 | Onclick handler updated to resolve RD UI issue | After modifying the function logic in Report Definition, reopening it in the configuration modal dialogue displayed the function multiple times and it was not possible to open/edit the function. This issue was cosmetic and related to the UI representation of functions: the underlying clipboard page had the correct details regarding the custom logic and functioned as expected. Investigation showed the UI error was related to the onclick handler, and this has been resolved so the system correctly removes the onclick handler when required. | Reporting |
D42095 | 516669 | Added validation function to 'apply filters' to handle custom filtering | A custom filter section with the "Display custom section inline" checkbox checked and required input fields was not firing validation if the input fields were empty. Switching the focus away from the filter section caused validation to appear saying the filter could not be blank, but "Apply filters" (which is missing validation) was still clickable and the report updated. This has been resolved by adding a validateInput function to the "Apply filters" button of the pega_report_events file. | Reporting |
D48173 | 515338 | Resolved hang caused by cancelling report calculation | When dragging a calculation into the report editor filter area, clicking X on the cancel modal that appeared caused a JavaScript exception to occur. This exception later prevented the ability to click the "done editing" button on the report. This has been resolved by modifying the pzpega_report_rafpopup.sj -- doRefresh API to pass the correct argument to reload the section API. | Reporting |
D48442 | 514045 | ExportMode parameter sent to resolve duplicate rows in Export to Excel | On performing Export to Excel for a report definition, duplicate rows were being exported for a column which had a TextAreaWithExpandSmall UI Control. Investigation showed that this control was looking for the exportmode parameter, which was not being sent. This parameter is now being sent. | Reporting |
D50787 | 520483 | Excel time values will default to server datetime if operator time zone is null | After upgrade, a scheduled report that contained a column using pxDateTime that was supposed to use EST instead used GMT when run and exported to Excel. This has been resolved with an update that will default to using the time zone of the server If the time zone of the operator is empty or null. | Reporting |
D50819 | 519236 | Eligibility Builder integer sorting revised | In 'Offer' on the Eligibility tab, the Builder was sorting integer properties by the value of the integer as a text string rather than the whole number. Example: 1, 10, 12, 13, 100, 2, 20, 29, 299, 3 instead of the expected 1, 2, 3, 10, 11, 12, 20, etc. This was traced to the system sorting the results using tools.sortPageList() in order to sort by localized (string) value, which is not appropriate for values of any type other than string. To resolve this, the system will skip the manual sort step for numeric columns since the values are appropriately sorted by the database. | Reporting |
D55801 | 524291 | Corrected HTML error generated on export to PDF | After exporting a report to PDF, the PDF could be viewed but repeated instances of the error "<th> missing ‘>’ for end of tag" were logged. This was traced to missing the closing '>' for th in the pzRRDataListHeaderRow HTML rule when "Enable column command menu" is unchecked in ReportViewer options, and has been corrected. | Reporting |
D64231 | 539233 | Export to Excel cell style control added | If a column was formatted with an auto generated numeric control, a new cell style was generated for every row during the export to Excel process. Since there is a limit on the amount of cell styles, once the number of rows in the file was greater than 64000 an error was generated. To resolve this, the system will disable the creation of a new cell style for every instance when an auto-generated numeric control is used. | Reporting |
D65256 | 528005 | DisplayCommandMenu holds value during runtime filter changes | In report definition, under report viewer tab, the 'enable column command menu' option was disabled. When the report was launched, the menu was not displayed for each column as expected; after applying the filter changes, the column menu options were unexpectedly displayed. This was traced to previous work done on the implementation of the navigation menu for auto-generated grids. Because pyDisplayCommandMenu is exposed on the ruleform itself, disabling the command menu from the ruleform caused changes to the filter to reset and pyDisplayCommandMenu was set back to true regardless of what was configured on the ruleform. To correct this, updates have been made to ensure that pyDisplayCommandMenu is not overwritten when there are changes to a filter during runtime. | Reporting |
D65327 | 534569 | Backspace keydown handler updated for all textinput modes | Attempting to use the Backspace key to remove input from a number cell (either Integer or Decimal) did not work. When the action was performed by a Manager, the Backspace key works as expected. Investigation showed the logic in the keydown handler for the backspace key in pega_report_events.js was only ignoring the e.preventDefault() call when the textinput node type was text, not number or other input types. To correct this, the keydown handler has been updated so the backspace key in pega_report_events.js maintains the default backspace functionality for all textinput modes, not just those of type 'text'. | Reporting |
D69098 | 534041 | Export to Excel works for for report definition with duplicate columns | After adding a date column to a report definition (2nd column in the report), the data displayed correctly in the UI but Export to Excel failed with the error "Section 'pzRDExportWrapper' execution error on page '' of class 'Rule-Obj-Report-Definition'. : The Reference .pyDateValue(2) is not valid." This was traced to an out of bounds exception thrown if there were two or more columns with the same calculation. When preparing for export, the column with the duplicate calculation would not get added to the map of report UI fields. To resolve this, the system has been updated to allow report definition columns with the same calculation to be properly mapped to a UI field. | Reporting |
D69108 | 543845 | Handling added for drag-and-drop with deleted report templates | After adding a new report, an error appeared when trying to use drag-and-drop to add a column (Page List) from the Data Explorer in the report browser. This was traced to refactor work done to use the Record API throughout reporting: the ruleset on new reports was not being reset from a Pega- ruleset to an application ruleset, causing columns the referenced properties defined outside the platform to be rejected. This use case was missed because case types define their own report templates on creation, but in this scenario those had been deleted. To resolve this, the system has been updated to call pxChooseBestRuleset from pxShowReport in order to enable the use of properties defined in the application prior to saving the report. | Reporting |
D69935 | 534021 | Filtered By Label read by JAWS in report browser | When using Firefox, any FilteredBy text in the Report Browser was not being read by JAWS. This was traced to Firefox interpreting the filters in the Report Viewer as not having any distinguishing accessibility label, and has been resolved by adding aria roles to the filters in the Report Viewer. | Reporting |
D71408 | 534931 | DIrty check flag triggered by adding columns and filters | If a report was edited and closed without saving, the dirty check worked as expected. However, if new columns or filters were added and the report closed without saving, the dirty check did not appear. This has been resolved by updating the check logic. | Reporting |
D73777 | 539968 | Logic added for client-side Somaria decoding | When Somaria (an Advanced Data Visualization control) was used with Predictor Performance, the special characters were displayed as ASCII values instead of the actual values in the label. This was traced to Somaria encoding special characters of the visualization data into HTML entities on the server in order to protect against cross-site scripting attacks, but these entities were not being decoded on the client side. To resolve this, logic has been added to decode HTML entities in Somaria data on the client. | Reporting |
D75097 | 542359 | DSS added to allow disabling Excel cell export security | In order to avoid calculation injection during Export to Excel, an apostrophe character was added to the cell on export to close a vulnerability. However, sites using an external tool to consume the Excel document needed a workaround for this security feature. The resolution for this issue adds a DSS setting "TurnOffSecurityForExportToExcel" which can now be used to turn on/off the security feature that adds char " ' " in front of the cell value. Further refinements to this work will be included in a future release. | Reporting |
D75757 | 540638 | ReportBrowser script updated to ensure older version refreshes on creation | When using the old version of the Report Browser, the count at the report category did not update after being saved into a category until logout and login back to the portal. This was a missed use case for the old browser during updates to the UIKit and has been resolved by including the reportbrowser script in the header section pyCMReportBrowserHeader to ensure a refresh. | Reporting |
D31734 | 515655 | Cross-site scripting protection added for parameter page properties | An cross-site scripting vulnerability was seen with the Edge browser when run on visibility on client check was enabled with dynamic layouts and some properties were accessed from parameter page. Because run on visibility on client check is not required in this scenario, is has been removed and the values will be accessed from the server instead. | Security |
D33214 | 514022 | Added safeURL encoding for Japanese characters in attached filenames | It was not possible to preview a Japanese-titled PDF file attached on a work object. Investigation showed that in case of Japanese characters, file names were not being correctly encoded during the fetch request when JBoss was used. The retrieval worked correctly under Tomcat. In order to ensure consistent encoding, the safeURL API will be used for constructing the URL and for the activities DisplayAttachFile and pzDownloadFromRepository which add the ContentDisposition header. | Security |
D67321 | 532627 | ShowXML activity deprecated | The activity @baseclass.ShowXML has been blocked for security reasons. If the functionality is needed, a a single line step of "Show-Applet-Data" may be used. | Security |
C93602 | 485517 | White list filter added for X-Forward-Host value security | In order to improve security, a validation for X-Forward-Host value has been added which will be read from a local configuration. This is in the form of a white list regex filter for the host/XFHost header to ensure the URL's actions cannot be redirected. | System Administration |
D37894 | 505974 | Query parameters will be cleared after redirection from authentication | When using the /PRAuth Servlet, running a snapstart URL generated from a secondary application correctly executed SAML Authentication and Pega processing, but a second URL generated with different parameters ran with the parameters from the first request. The third and subsequent requests processed as expected with the parameters sent in with the request. Investigation showed that the previous parameters were picked due to the query string parameters not being cleared after redirection, and this issue has been resolved by updating the system so it will clear the parameters after issuing a redirect from the authentication policy engine. | System Administration |
D41454 | 506535 | Updated HotFix Manager for use in older versions | The DL logic in Hotfix Manager was changed in 8.3 to include the catalog of all framework changes. This had the unintended side effect of preventing DLs from being installed in Pega 7.3.1 and lower versions as the versions included in the catalog are not present on those systems and the validation failed. This has been resolved by revising the DL update so the system will only add all apps to the catalog for platform 7.4+ DLs. | System Administration |
D46133 | 534649 | Colon in folder or file name will be replaced with underscore during unzip | After creating a product file (zip), attempting to import the same file into an updated system resulted in an exception. Investigation showed that in this case the zip file was a Product rule form which had applications packaged with a colon(:) in the name of the application, a format that was allowed in 6.x versions. Because Windows machines restrict creating creating any folder or file with : in its name, the zip file could not be inflated as part of the import process. To resolve this, the system has been updated so that a colon(:) will be replaced by underscore(_) during inflate operations. | System Administration |
D46536 | 515792 | Custom agent next run time will be rescheduled if the run failed | If a customized agent that was set to run every day encountered an exception and failed to run, restarting the agent did not update it to the next run time; it still returned the passed trigger time as its next execution time. This has been resolved with an update that will reschedule the run if the next run time is in the past. | System Administration |
D46681 | 514432 | SnapStart supports SAML2 Authentication | When using an HTTP Post to SnapStart into Pega using PRCustom style or PRAuth style SAML authentication, the login was looping back to the login request. Investigation showed that the Pega ACS was posting data properly back to the RelayState URL, however the login activity was not getting the SAMLResponse and simply sent a SAML Login Request again. This has been fixed by updating reqContextURI in case of SAML2 Authentication service so pyActivity=value will be passed. | System Administration |
D47685 | 514645 | Cookie logging restored | As part of security updates, Cookies were restricted from being logged. However, this caused some business use cases such as a custom function call to obtain the list of cookies that are present in the application to stop working. To resolve this, the cookie logging restriction has been reverted. | System Administration |
D48433 | 529854 | Exception handling added for Redirect URL fetched from GRS | When the application definition under “integration and security" tab was configured to use "Store in web storage provider" to allow choosing the storage name and the authentication profile, configuring the authentication profile to use an OpenID connect provider with the pyEndpointURL property given as a global resource setting such as (=D_SharepointDetails.url) was not working as expected. Clicking browse in the application definition sent the request to the OpenID connect provider and was returned with the error "The reference =D_SharepointDetails.url is not valid. Reason: Page name (D_SharepointDetails) from indirect reference was not found." This was traced to the Redirect URL (fetched from GRS) throwing an unhandled exception, and has been resolved. | System Administration |
D48762 | 518296 | Enhancement added to support DB2 CREATE OR REPLACE view syntax |
After creating the product, attempting to import it on another environment failed due to incompatibilities with the syntax. In SQLGeneratorDb2.getViewSourceStatement(), when the View definition is fetched there is a check whether the view starts with "CREATE VIEW". Since the customer view of "CREATE OR REPLACE" was not supported in Db2LUW, it didn't match and appended the "CREATE VIEW" statement again. This happened only when using DB2, and has been resolved by updating the logic in SQLGeneratorDb2.getViewSourceStatement() to support CREATE OR REPLACE VIEW statements. |
System Administration |
D49804 | 518225 | Hierarchical view support added for moving packages | After exporting a package from a DEV environment, attempting to import it to a TEST environment resulted in the query becoming corrupted and the process failing. This was traced to the regex used to fetch the select statement table name not supporting hierarchical views, and has been resolved by adding that support. | System Administration |
D50539 | 521149 | DB locking improved for login performance | A slowness issue seen when trying to login to my.pega.com was traced to numerous DB locks occurring on the pr_data_saml_authreqcontext table during the SAML flow. Analysis showed that while running Obj-Save on AuthRequestContext with 'OnlyIfNew' as false, the check caused a select query to run on the table to determine if the context was already there and insert it if it was not. To resolve this, the onlyIfNew check will default to true to avoid running the query; if the context is already present it will be overridden. Duplicate key exception handling has also been added to avoid any issues if a resave is done with same key. | System Administration |
D51324 | 523433 | Authentication state refreshed after failure in mobile | When using the mobile app, if the log in was started and incorrect credentials or empty fields were submitted and then the credentials screen was X-ed out or canceled, attempting to log in again using the correct information still received the "Authentication failed" error. A subsequent attempt with the correct credentials would then work. This was traced to the server persisting the state from the first request (per browser session), and has been resolved. | System Administration |
D52785 | 518408 | Cross-site scripting protection added to layout runtime java and whitelist validation available for host/XFHost | In order to protect against Cross-site scripting issues, filtering has been added to the RepeatDynamicIndex parameter value in layout runtime java. In addition, a validation for X-Forward-Host value has been added which will be read from a local configuration. This is in the form of a white list regex filter for the host/XFHost header to ensure the URL's actions cannot be redirected. | System Administration |
D52969 | 514702 | Column population honors thread count of 1 | The thread count parameter in the column population activity was not being honored, causing repeated deadlocks when trying to populate columns. Investigation showed that the ExposeCols process did not honor the thread count when it was 1 (the default is 4), and this has been fixed by adding the necessary code so that if the thread count is 1, it will not run in multhreaded mode. | System Administration |
D53838 | 521478 | Run Ruleset Cleanup defaults to true | After upgrade, the rule categories and rules were not showing correctly in the App view of the Dev Portal. Many warning messages were also logged related to the Decisioning DM Sample application. This was traced to the rules cleanup script not running properly. While there was a workaround of applying the ruleset cleanup scripts manually after removing the queries that reference the pr_engineclasses table, the cleanup will now be set to run by default (run.ruleset.cleanup=true). In addition, the logic to determine which RuleSets to include has been simplified and most of the pr4_rule_vw deletions have been combined. | System Administration |
D54319 | 532526 | 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. | System Administration |
D54628 | 524567 | jFreeChart upgraded | Chart generation activities have been updated to use JFreeChart v1.0.19. | System Administration |
D55160 | 520354 | Namibia and Botswana added to Currency Symbol values | Support has been added for the Namibia (en_NA) and Botswana (en_BW) locales in the default Currency Symbol values. | System Administration |
D55449 | 523501 | Cross-site scripting protection added to layout runtime java and whitelist validation available for host/XFHost | In order to protect against Cross-site scripting issues, filtering has been added to the RepeatDynamicIndex parameter value in layout runtime java. In addition, a validation for X-Forward-Host value has been added which will be read from a local configuration. This is in the form of a white list regex filter for the host/XFHost header to ensure the URL's actions cannot be redirected. | System Administration |
D55508 | 521859 | CSRF and Fingerprint token handling added to custom URL generation | An error screen appeared with the message "Server response error, no update data returned" while doing a check out and check in of the offer rule. This was traced to CSRF token validation: in this scenario, a custom URL was being framed and the corresponding request did not have a valid CSRF/ Fingerprint token, which can occur when there are custom AJAX/Non-ajax URLs constructed manually in the non-autogenerated/HTML streams. To address this, handling has been added for CSRF and fingerprint tokens as part of the custom URL generation. | System Administration |
D56063 | 522857 | Hazelcast upgraded to resolve node startup issue | Post data upgrade, the ADM tier failed to start and the error "java.lang.IllegalStateException: Node failed to start!" appeared. This was traced to a dormant bug in Hazelcast 3.11 that caused starting nodes to fail when the Hazelcast master node was shutting down, which was exposed by recent Pega changes made to enable parallel restarts of nodes in Cloud environments. Hazelcast delivered a fix for the parallel restart problem and the hotfixed jar has been merged into the platform. In addition, previous logic for loading Admin Studio waited 30 seconds before timing out when fetching information for each node. This caused issues with large clusters and Admin Studio not loading. The logic has been updated in the Admin Studio UI to load the page despite delays/issues waiting for nodes to respond to the gathering of cluster data, and the algorithm to detect remote-call timeout has been updated and is applicable to batch operation. | System Administration |
D56409 | 520742 | URL Encryption and Obfuscation made compatible with site-minder |
Attempting to install a DL using Hfix Manager worked when not going through SSO but failed when using SSO. Investigation showed that this was due to the use of URLEncryption: URLEncryption uses a Pega-supplied base64 to encode the cipher text with MIME type encoding by default, which adds newline character after every 72 characters. This is not compatible with site-minder. which has policies to restrict newline characters in the URL. As a result, none of the encrypted requests were being processed. To resolve this, post-processing logic has been added to remove newline characters from encoded text. This change has also been applied top URLObfuscation. |
System Administration |
D56527 | 538301 | DSS PegaAESREmote*ResetTableStats set to false | In order to prevent an issue with resetting table stats that potentially impacts postgres in an unintended fashion, the DSS PegaAESREmote*ResetTableStats has been set to false. | System Administration |
D57038 | 519379 | JobScheduler DST handling updated | When the locale being used changed out of Daylight Savings Time, scheduled jobs did run at the same local time as before but instead ran an hour earlier than expected. Investigation showed that jobscheduler calculated the next runtime based on the time difference from the cluster reference time and current time in milliseconds, and this offset in milliseconds was added to next run time. Since the cluster was started in DST, the job was running on same time due to the time difference. To resolve this, the system will use a calculation offset and set hours/minutes to nextRunTime object so that calendar lib handles daylight savings. | System Administration |
D57444 | 519166 | Scripts provided to remove unneeded TenantID for Cloud upgrade | Cloud upgrade from 8.3 to 8.3.1 was failing in a multi-tenant environment during creation of the Data-MigrationPoint instance. This was traced to pzTenantId not being included in the insert statement when the table included the pzTenantId column. As the column is unnecessary and was only included in the table for completeness, scripts have been provided to remove the pzTenantId column from the table for 8.3.0 and 8.3.1 MT deployments and remove pzTenantId from table in pegarules-master.xml to resolve this issue. | System Administration |
D58702 | 519241 | Updated HotFix Manager for use in older versions | The DL logic in Hotfix Manager was changed in 8.3 to include the catalog of all framework changes. This had the unintended side effect of preventing DLs from being installed in Pega 7.3.1 and lower versions as the versions included in the catalog are not present on those systems and the validation failed. This has been resolved by revising the DL update so the system will only add all apps to the catalog for platform 7.4+ DLs. | System Administration |
D58927 | 522288 | Added expiration for orphaned tracers | After tracing a REST service, the tracer was persisting but not showing in the requestor list from Admin studio. The operator shown in the error did not have access to the system anymore, and other users were not able to trace the service rule. Trying to clear the requestors in all the nodes using API POST /nodes/{nodeID}/pools/requestor/clear also did not resolve the issue. To address this, a distributed rule watch expiration has been added. | System Administration |
D59262 | 523615 | Cleanup added for staging directory | Temporary files from imports and exports (from DevOps) were filling up the staging area disk space because there was no automatic process for cleaning up these local files. This has been resolved by adding an enhancement that will clear the directory on Engine Startup and any time ParUtils.setStagingDirectory gets called to initialize the staging directory. | System Administration |
D61967 | 528215 | Updated key handling for ProcessJWT | After configuring an authentication service which used the ProcessJWT activity to validate the token received, the error "Unable to process the Json Web Token " was seen. Analysis showed the error was caused by a duplicate Key Id in JWK Endpoint Response: the system removed keys after processing, and in the case of duplicate keys the system was throwing null pointer exception because the key had already been removed. To resolve this, the system has been updated to not remove the keys from the map as part of this process. | System Administration |
D63232 | 524294 | Support added for Authentication service rule attributes in embedded pages | SSO login was not working, giving the error "Unable to process the SAML WebSSO request : No value specified for Attribute in SAML assertion". Investigation showed the Authentication service rule could only map attributes that are on the top level page and did not consider embedded page values. To resolve this, tools.getProperty will be used to fetch the property reference value instead of find Page and getString. | System Administration |
D63668 | 525478 | Access Control Policy updated to handle NotEqual with valuelist | When editing the Access Control Policy Condition rule in Designer Studio and setting condition to 'is not equal', comparing it to a list generated the error "function not found". The same configuration worked as expected for the 'is equal' condition. This has been resolved by updating policycondition to handle a not equal scenario combined with a valueList property. | System Administration |
D63681 | 527382 | Localization added to login page messages | Localization has been added to the messages that appear on the login and forgot password screens. | System Administration |
D63727 | 531723 | Authorization header base 64 format error recategorized as debug logging | Numerous messages were generated indicating that the Authorization Header format was invalid when using the format " : " (Base64 Og==) . As this is the default behavior for a particular class of proxy servers, the error statement has been updated to be logged as a debug statement and will be visible only when that logging is enabled. | System Administration |
D64408 | 530280 | Stacktrace will be generated for oLog errors | In order to provide improved diagnostics, oLog errors will print stacktraces. | System Administration |
D66222 | 529634 | Tracer expiration set for five minutes | Tracer was not terminating on tracer window closure. On the next attempt to open a trace, a message appeared stating "Cannot Launch Multiple Tracer Sessions for a requestor. This requestor is being traced by operator". Tracer session termination was dependent on the browser executing code on window close. Because this event may not be triggered for number of reasons, updates have been made to set tracer session expiration at 5 minutes. In addition, the system will clean up expired sessions before checking for existing sessions. | System Administration |
D66521 | 536138 | Logout Redirect updated to handle special characters in IDP parameters | When using "HTTP Redirect" in Authentication Service, the Logout Redirect service was failing due to the query parameter name containing "_" (underscore). This was traced to IDP sending parameters to assertion consumer service or logout request endpoint with names which contained any special characters, as the system was trying to put those key values on the parameter page for additional processing. To resolve this, the system has been updated to suppress exceptions when the parameters from IDP includes special characters. | System Administration |
D67945 | 529718 | PDC JMS Listener accesses conversion of tenant hash to tenant name | A new API method has been added for the PDC JMS listener to access getTenantNameFromTenantHash(). | System Administration |
D70569 | 538507 | Tracer retains modified user settings | User settings in tracer were not shown when the settings window was closed and reopened. Investigation showed that settings are filtered based on watchInsKey, but this parameter was passed as "null" for global tracer because of a missing condition to check the session type. This has been resolved by adding a check so the WatchInsKey parameter is passed if the session type is rule watch. | System Administration |
D71378 | 533280 | Authorization header base 64 format error recategorized as debug logging | Numerous messages were generated indicating that the Authorization Header format was invalid when using the format " : " (Base64 Og==) . As this is the default behavior for a particular class of proxy servers, the error statement has been updated to be logged as a debug statement and will be visible only when that logging is enabled. | System Administration |
D72636 | 536087 | Added handling for Authorization Server login loop | When the Authorization server returned an error, it was redirecting back with error, error_description, and parameters. The system then tried to start the login process again, the same error parameters were returned again, and it continued to loop this way. To resolve this issue, handling has been added for this error scenario from the Authorization Server. | System Administration |
D73002 | 535256 | URL Encryption and Obfuscation made compatible with site-minder | Attempting to download a Mobile App from the Build Server resulted in an error. This was traced to Cipher text using URLEncryption: URLEncryption uses a Pega-supplied base64 to encode the cipher text with MIME type encoding by default, which adds newline character after every 72 characters. This is not compatible with site-minder. which has policies to restrict newline characters in the URL. As a result, none of the encrypted requests were being processed. To resolve this, post-processing logic has been added to remove newline characters from encoded text. This change has also been applied top URLObfuscation. | System Administration |
D74620 | 537490 | Dependent role check added to HaveRole | The HaveRole function was not checking the dependent role. This has been corrected. | System Administration |
D74848 | 536997 | Updated key handling for ProcessJWT | After configuring an authentication service which used the ProcessJWT activity to validate the token received, the error "Unable to process the Json Web Token " was seen. Analysis showed the error was caused by a duplicate Key Id in JWK Endpoint Response: the system removed keys after processing, and in the case of duplicate keys the system was throwing null pointer exception because the key had already been removed. To resolve this, the system has been updated to not remove the keys from the map as part of this process. | System Administration |
D75053 | 540911 | Corrected Agent schedule time conversion | After upgrade, a mismatch between the agent configuration and schedule was seen, causing an agent scheduled at 6PM Europe/London time to execute at 6AM Europe/London instead. Analysis of the Agent schedule rule showed that if the pyStartAmPm property was empty, the internal code miscalculated the AM_PM string as AM. That meant that if an agent was configured with 24 hour clock format and was set to run at 18:00 hrs, it executed at 6AM. The workaround for this issue involved resaving the agent, triggering the data transform pzSetStartAmPm to correct the field pyStartAmPm, but the issue has been corrected by adding handling for the pyStartAmPm == "" corner case. | System Administration |
D75665 | 538640 | Corrected double-encoded URL | A "bad request" error when trying to launch a remote trace was found to be caused by a double-encoded URL. This has been resolved by correcting the URL composition. | System Administration |
D76409 | 540298 | Cleanup added for staging directory | Temporary files from imports and exports (from DevOps) were filling up the staging area disk space because there was no automatic process for cleaning up these local files. This has been resolved by adding an enhancement that will clear the directory on Engine Startup and any time ParUtils.setStagingDirectory gets called to initialize the staging directory. | System Administration |
D76415 | 540319 | Cleanup added for staging directory | Temporary files from imports and exports (from DevOps) were filling up the staging area disk space because there was no automatic process for cleaning up these local files. This has been resolved by adding an enhancement that will clear the directory on Engine Startup and any time ParUtils.setStagingDirectory gets called to initialize the staging directory. | System Administration |
D77004 | 542347 | View Full History will not include private edits | After upgrade, clicking 'View Full History' and then 'History of All Versions', showed the history of discarded private edits of other users. This was an inadvertent side effect of work done to improve the support for rollback and migration, and has been resolved by updating the system to not save the history when in a personal ruleset (checkouts/private edits). The help documentation has also been updated to note there is no history available for checkouts/private edits. | System Administration |
D78045 | 539890 | Cleanup added for staging directory | Temporary files from imports and exports (from DevOps) were filling up the staging area disk space because there was no automatic process for cleaning up these local files. This has been resolved by adding an enhancement that will clear the directory on Engine Startup and any time ParUtils.setStagingDirectory gets called to initialize the staging directory. | System Administration |
D79178 | 543310 | SameSite cookie setting added for Mashup support in Google Chrome v80+ | The Google Chrome browser version 80 and above now treats SameSite with a blank value as "Lax" by default, causing mashup scenarios to break. In order to compensate for this change, support has been added for setting SameSite=None in Cookie Settings in the CSRF LP (DevStudio-> System-> Setting-> CrossSiteRequestForgery) which will enforce HTTPS for the Pega server and mashup. Note: The SameSite cookie may be set to None/Lax/Strict, based on the requirement. For mashups to work, SameSite should be set as None. To follow proper security standards, it should be set as Strict. | System Administration |
D83053 | 544267 | SameSite cookie setting added for Mashup support in Google Chrome v80+ | The Google Chrome browser version 80 and above now treats SameSite with a blank value as "Lax" by default, causing mashup scenarios to break. In order to compensate for this change, support has been added for setting SameSite=None in Cookie Settings in the CSRF LP (DevStudio-> System-> Setting-> CrossSiteRequestForgery) which will enforce HTTPS for the Pega server and mashup. Note: The SameSite cookie may be set to None/Lax/Strict, based on the requirement. For mashups to work, SameSite should be set as None. To follow proper security standards, it should be set as Strict. | System Administration |
D15231 | 484813 | Resolved Java code compilation issue due to localized field value | After installing the French language pack, a java compilation error occurred due to the dynamic parameters being localized, causing a mismatch for the field values. For example, the Field value pyFactory was translated from "com.pega.dsm.dnode.impl.dataset.cassandra.CassandraDataSetFactory" to "Ensemble de données Usine com.pega.dsm.dnode.impl.dataset.cassandra.Cassandra" in all Data-Admin classes and was being interpreted in the generated java. This has been corrected. | User Interface |
D32528 | 502216 | Reduced triggering for checkbox click calling resize | When using Microsoft Internet Explorer, checkboxes were slow to respond. For example, when clicking two checkboxes in succession, the second checkbox did not change. This was traced to the Layout Resize function getting called numerous times by the _toDisableSlideOnTabsClick and _resizeActions functions during onload refresh. This has been resolved by updating the system so that an LG header cell item checkbox click will not trigger the resize. | User Interface |
D35956 | 521641 | Handling enhanced for invalid date values in date/time | Refreshing a section or entering an invalid date was causing the date/time to be reset to the current date. This has been resolved by modifying the logic and adding conditional checks in 'pzpega_ui_formatDateTime.js'. | User Interface |
D37348 | 514838 | Added handling for placeholder in Multi-Select List Control | After adding a placeholder in Multi-Select dropdown properties to hold the default value as 'please specify' by way of a refresh section on the action tab of multi-select property, the multi-select drop was showing the 'please specify' placeholder after refreshing the section even though there was value in it. This has been resolved by adding handling to make the placeholder empty when there are values. | User Interface |
D40778 | 512974 | Asterisk symbol displayed for radio button set to required always | When marked as required, the "Asterisk" symbol did not show up on the radio button label. This was traced to an XML cleanup issue with the pyReqRunOnClient property when required was configured as 'always' and has been corrected. | User Interface |
D40803 | 511591 | JSON parsing error on export resolved by ensuring parameter encoding | Menu items like "PDF" and "Excel" were not loading on click of the "Export" Button, and an "Exception in parsing JSON" message was logged. The export worked as expected when the menu rule actions of each menu item were modified to remove the openurlinwindow actions. This was traced to the Response JSON being broken due to a invalid format created when the "propositionName" was passed as an unencoded parameter when the report was exported. This has been resolved by ensuring the input parameters are encoded before creating the URL. | User Interface |
D40938 | 509684 | Free form layout controls will be converted to dynamic layout | After upgrade, a a pzActionDropdown control that was inside a pyActionDropdownSection was not visible anymore. Using the pzActionDropdown control directly worked as expected. Investigation showed that pyActionDropdownSection was using Freeform layout instead of the upgraded Dynamic Layout, and that the custom control was failing to generate the markup whenever drag/copy-paste was used for the control in any layout. To resolve this, the system has been updated so it will remove the control from a free form layout and use dynamic layout instead. | User Interface |
D40941 | 512591 | Identifier property added for worklist with filter by format | After configuring a Grid layout which displayed a users worklist, one of the properties representing the column in Grid had the property type as boolean. The property was derived from another report definition in the main report and a join was performed to display the property. Investigation showed that the filter for Boolean column did not show any filter values like ( [No Value, Y,N ) when run through a case Manager Portal, however the Boolean Column filter worked when run through Report Definition. Other properties from the same class that were not boolean worked with the filter. This was traced to the WorkListWidgetGridsAuto being set to Optimize code, causing filter by format to not be visible in the column properties of pxPages. To resolve this, code has been added for the identifier property | User Interface |
D41035 | 513204 | Handlign added for OpenAssignment triggered from confirm harness | Triggering openAssignment from the confirm harness was replacing the whole Ajax container DIV, leading to 'submit' no longer working. This has been corrected by adding additional handling for this usage. | User Interface |
D41114 | 508943 | Localization added for 'NoResultys Found" | It was not possible to translate/localize the message 'No Results Found' (autocomplete) to Spanish due to auto complete not containing any property or field value corresponding to this message. This has been corrected by adding the field value and corresponding code handling needed. | User Interface |
D41130 | 510078 | Handling added for precision decimals in cascading dropdown on mobile | A cascading dropdown with a parameterized datapage configuration containing decimal values with precision (such as 22.3,20.000) showed the values as expected on desktop, but the values were empty on mobile. The values did show on mobile as well if precision was not used. This has been resolved by updating templateengine_context so that decimal values will not be treated as a property reference. | User Interface |
D42583 | 514485 | Label of a field is correctly rendered when a section is re-used with a visiblity condition | The label of a field was not being rendered/visible when a section with a 'visible when' condition was re-used in different Page Contexts. The label was displayed correctly if 'Run visibility condition on client' was checked. As part of performance improvements made in a previous version, label generation was moved under the dlcellvisibility flag. Because of this, if a section was re-used at multiple places with different contexts and one place had visibility false and another had visibility true, the labels were not getting generated for the visible section. To resolve this, Label Generation has been moved out of dlcellVisibility to ensure label metadata will always be generated. Updated performance improvements have been made instead by way of a DSS setting (generateCellMetadata) so that when generateCellMetadata is true, the label generation will honor dlcellvisibility to generate the label metadata. | User Interface |
D43740 | 512181 | Added support for Helper Text Question Mark with visibility condition | The Helper Text Question Mark was not displaying if the control was configured with "Help icon with overlay on hover" combined with a visibility condition. This was a missed use case, and the expression visibility support for controls.changes have now been added in the pzpega_ui_DLCellTemplate.js file. | User Interface |
D44769 | 531439 | Resolved non-template harness stale reference for navigation menu | Post upgrade, the navigation menu was initially present but disappeared on click of a menu item. This issue was seen only when the harness was non-template and SPA was enabled on the dynamic container: when launch harness was done on the same harness, change tracker created a new thread object but the client cache was holding the stale reference. When using template harness, mergeBigData adds all the new details into the stale object, preventing this issue. To resolve this issue for non-template harnesses, initChangeTracker in pzpega_ui_doc_lifecycle file has been updated. | User Interface |
D44943 | 527919 | Handling added for mousdown triggers in Firefox dropdown and sutocomplete controls |
After recording a test case that includes entering data into an autocomplete, the data was not actually entered into the autocomplete when the test was executed but the test step was marked as successfully executed. Other tests for other similar autocompletes appeared to execute as expected. This was due to a mismatch between the sequences of events that are fired in the Google Chrome and Firefox browsers: the system is listening for a mousedown event to record a new step, but the browser-specific behavior is different. Google Chrome: mousedown focus click change Firefox: mousedown focus mousedown change As this difference in events order is browser behavior, code has been added that will handle the specific Firefox case where mousedown triggers on invalid target elements related to dropdown and autocomplete controls. |
User Interface |
D45101 | 512527 | Added support for Helper Text Question Mark with visibility condition | The Helper Text Question Mark was not displaying if the control was configured with "Help icon with overlay on hover" combined with a visibility condition. This was a missed use case, and the expression visibility support for controls.changes have now been added in the pzpega_ui_DLCellTemplate.js file. | User Interface |
D45736 | 512895 | Parameter field value correctly resolved for radio button rendering | After creating a section that held a Radio button field that used the field label as a parameter from another section, at run time the radio button displayed the parameter name on the screen rather than its value and the radio buttons did not appear. Investigation showed that when rendering the section, the param.property was not resolved and the control was not rendering. To resolve this, the DLCellTemplate.js has been updated to display the localized value in the Label, and DLCellTemplateMetadata and RunTimeUtil have been modified to include the parameter reference in the current context. | User Interface |
D45828 | 519351 | Added variable null check to resolve refresh condition on dynamic layout not working |
Given a setup where a parent section had several section includes, one of which had a property that was set to refresh and disable another section when the property changed, on change the refresh action was not working and hence the disabling did not work. Refreshing the browser corrected the behavior. Javascript errors were noted on the console. This has been resolved by adding a null check on the variable to avoid exceptions. |
User Interface |
D45848 | 515523 | Added toggle to hold radio button value during multiple service case creation | When a field was implemented with a radio button control in the service case screen, starting two cases of the same or different case type (with the same property and control) resulted in the selected value not sticking in the first case when selections were made for the second case. This was traced to multiple radio buttons with the same name in the dom for different AJAX containers: as per radio buttons behavior, only one could be selected if they have the same name. To correct this issue, updates have been made to change the name on radio buttons which are inside the hidden AJAX container and toggle the changes when the buttons should be shown. | User Interface |
D46543 | 516181 | Error messages made more accessible | In order to improve the accessibility of error messages, an aria-describedby attribute will be placed on the input that will link to the error message. To further support screen reader users, the focus will be moved to the first input field with an error after the user clicks submit. | User Interface |
D47344 | 519890 | Single quotes escaped in RTE title field value | A JSON parse error was caused by single quotes not being escaped in the RTE title field value. This has been corrected. | User Interface |
D47401 | 512616 | Corrected multiplying errors on dirty flag | The error message "Value cannot be blank" was appended on the screen every time the browser gave a dirty flag and OK was clicked. This was due to the context for the error message not being set correctly after toggleErrorMessage, and has been corrected. In addition, due to Context being incorrect when there was a check on the errors on the element, further work has been added to set the correct context before checking if errors exist. | User Interface |
D47583 | 518039 | IsMobile 'when' configurations are properly displayed in mashup preview |
Given two layouts configured based on the 'when' rule pyIsMobile, the mashup preview did not work in the mobile form factor. This was only an issue with App Studio preview of a mashup and did not have an impact on the enduser use of the mashup, and the same mashup code viewed on mobile/desktop worked as expected. Investigation showed that the 'when' rule was evaluated correctly for the application level, but in mashup it was evaluated to false even when opened in mobile view from App studio. The Rule-Utility-Function checks to see if an overridden useragent has been specified and if it has, then it uses it for the preview in App Studio, however in mashup the userAgentDetails did not contain any of the satisfying conditions under which the condition might be returned as false. The issue in this case was traced to the Rule-Utility-Function needing to handle the scenario of Mashup Preview by checking if the thread was from the mashup preview, and that has been implemented. |
User Interface |
D47886 | 514778 | Home icon retains correct color after refresh | By default, the home icon is a svg tag with dark or white filling (based whether it is selected or not), however if another tab was selected and the page refreshed, the icon went black and became a svg img tag. This has been corrected. | User Interface |
D48046 | 512589 | Left panel content visible after window resize | After maximizing or resizing the window, the left pane on Designer Studio or User Portal either did not show the left panel or did not show the panel separator and did not display any content after clicking on separator navigation icon. It was also not possible to expand the Explorers again. This has been corrected. | User Interface |
D49182 | 513736 | Check added for special characters in parameter for table source | A table with a literal string that included the @ symbol for a parameter to its data page source was unable to load the section if it had the optimize code checkbox enabled. This has been resolved with the addition of a check for special characters. | User Interface |
D49305 | 519363 | Tab layout group handling improved | A difference in scrolling speeds between left and right arrows and an issue with the cursor correctly being redirected to mandatory fields were traced to errors in the tab layout group handling. The right scrolling issue was due to the calculation for right tab movement being incorrect in certain resolutions with relatively positioned elements, and has been corrected. The cursor redirect was caused by an error in the layoutgroup focus when used inside a screen flow where the first focus goes to the screenflow navigation on load, and has been resolved by adding a try catch for an invalid selector in case of a div error. | User Interface |
D49468 | 516323 | Parent harness context passed for reference properties in Ajax containers | Attempting to save values failed for any property which was mapped to a parent property that was also a reference property. This was traced to an issue with the harness-level templating status: for the lazy loaded sections of a harness, the harness's template status was being passed instead of the parent harness template status when using an Ajax container. To resolve this, logic has been added to pzpega_ui_doc_serverProxy js for the invokeHandler function to add parameters based on the parent harness context to the safeURL object before invoking the post request. | User Interface |
D49527 | 516296 | Cross-site scripting security added to CKEditor in Richtext Editor | A scenario where HTML objects could be copied and pasted into CKEditor and the click action modified to perform different actions was traced to Pega event attributes present in the RTE content. This has been corrected by blacklisting Pega event attributes like data-click, etc. | User Interface |
D50208 | 517231 | Corrected layout of sort and filter icons for grid tables | The sort and filter icons in a table grid were almost overlapping, and in some cases the sort icon was so small that it was almost not visible unless the width of the specific text was enlarged to see it. This was traced to a CSS snippet present in one of the override files that forced the width of the name column grid header to 100%, and has been corrected by ensuring the sort column is left aligned next to the column header. | User Interface |
D50621 | 519298 | Handling added for Pagelist with brackets in rendering RDL | After configuring four nested embedded sections where the last section included a repeating dynamic layout, the RDL showed up in the included section as raw HTML markup in the UI at runtime. Analysis showed that when rendering the RDL on the last item of the Pagelist which contained PAGE_LIST_NAME<LAST>, the angular brackets were treated as HTML entities that caused the attribute page-context to break. This was a missed use case for First and Last pagelist items that caused an error in appending the page context to attribute, and has been resolved by encoding the HTML for the page context attribute before appending it to the DOM. | User Interface |
D51330 | 515245 | Added toggle to hold radio button value during multiple service case creation | When a field was implemented with a radio button control in the service case screen, starting two cases of the same or different case type (with the same property and control) resulted in the selected value not sticking in the first case when selections were made for the second case. This was traced to multiple radio buttons with the same name in the dom for different AJAX containers: as per radio buttons behavior, only one could be selected if they have the same name. To correct this issue, updates have been made to change the name on radio buttons which are inside the hidden AJAX container and toggle the changes when the buttons should be shown. | User Interface |
D51555 | 516493 | Resolved system hang after changing input field value post note | After upgrade, a session was hanging in a Non-Member Search Phone interaction after navigating back from "Add or edit attachments" window. The same code worked as expected in the Member Search Phone interaction. Investigation showed that changed values (transaction ID, pzFromFrame) were being sent to the client twice, once in the popup window after attaching the note and again to the parent window. When the changed values were consumed and used in next actions, a mismatch resulted in pzFromFrame. To resolve this, the system has been updated so the Client will not consume the pxThread.pxClientExchange value if pxThread.pxClientFrame is different from what the current tracker is using. | User Interface |
D51601 | 516702 | Hover logic updated | When using a dropdown in a grid layout configured with a smartInfo to be displayed on Hover, the smart tip was sometimes not displayed when the hover moved from the top to point to the dropdown. If the hover was done quickly, it was displayed. Previously, the hover was calculated only by cursor x, y positions and elements boundaries: to resolve this issue, the logic has been updated to also consider cases where the element is still hovered without meeting these conditions. | User Interface |
D51776 | 531983 | Check added to resolve Ajax Container instantiation error in log | When using the Microsoft Internet Explorer or Edge browsers, manually launching a Service Intent and clicking the F5 refresh button properly refreshed the screen, but the PegaRULES log file contained the error "(DynamicContainerDataModel) Error occurred while instantiating tab for the thread index." This issue / exception was observed only when pzCustomDCTabHeader was configured (pyEnableCustomTabHeaders) and when there was a AjaxContainer configured in the document. Because the CustomTabHeader recreation (DynamicContainerDataModel.updateCustomTabHeader) should be skipped for AjaxContainer, as CustomTabHeader is applicable only to the top level DC document and not to the AjaxContainer document, a check has been added to resolve this issue. | User Interface |
D52144 | 515670 | When no active document is available on login, first document will be marked active | After logging into the user portal, attempting to perform operations like (opening a case/work object, opening reports etc.) caused the browser request to spin or freeze. The only way to recover was to close and re-launch the browser window/session and re-login. This issue occurred when there was an active reportdefinition document before the browser/node crash in the tabless dynamic container(DC) portal. After recovery, the dynamic container did not recreate the report definition document but instead tried to activate the first document in the portal, which in this case was the default harness configured in the Dynamic Container. As it was not yet loaded, exceptions were thrown. To resolve this, when no active document is available, the first document will be marked as the active document. | User Interface |
D52630 | 519228 | Ad hoc task time validation done on correct thread | The validation on a time value was not working correctly when two cases of the same type were open at the same time. For every ad hoc task, there is some validation on the time property. After submitting a value in a second ad hoc task, the validation was triggered but used the property from the first ad hoc task and showed the error in the second ad hoc task tab. This was traced to the datepicker taking the reference from the previous MDC when it needs to take it from the active MDC. To correct this, the control_datepicker has been upadted to use pega.ctx.getElemById. | User Interface |
D52665 | 518263 | Corrected error when using CharCounter in non-template mode | An error message was generated when trying to save a section with the TextArea's Display CharCounter set to True. This was traced to an error in the remaining character count span generation for non template mode and has been corrected. | User Interface |
D52695 | 515971 | Pagination context switch handling updated for mouse scroll | When using various tables in the client application that have the Pagination mode set to 'Progressive' and that contain hyperlinked elements on which an 'Open Work by Handle' action has been defined, clicking an element that was loaded progressively intermittently generated an alert with the message 'Empty work item handle'. Investigation showed that dragging the scroll bar to access the latest cases worked, but using the mouse to scroll and select replicated the issue immediately. This was caused by context not being properly switched to the current harness while scrolling due to missing context switch handlers. To resolve this, code changes have been made to set the correct context before sending the request. | User Interface |
D52785 | 518649 | Cross-site scripting protection added to layout runtime java and whitelist validation available for host/XFHost | In order to protect against Cross-site scripting issues, filtering has been added to the RepeatDynamicIndex parameter value in layout runtime java. In addition, a validation for X-Forward-Host value has been added which will be read from a local configuration. This is in the form of a white list regex filter for the host/XFHost header to ensure the URL's actions cannot be redirected. | User Interface |
D53260 | 524750 | Added check for section refresh when files are attached offline | After attaching files in offline mode, the files intermittently did not show up in the "recent attachments" list when performing any action on the attachments section. This was traced to the asynchronous reload of sections, and has been resolved by adding a condition in the sectionRefreshCallback() to check if the response matches with the correct reload element. | User Interface |
D53488 | 520013 | Tab layout group handling improved | A difference in scrolling speeds between left and right arrows and an issue with the cursor correctly being redirected to mandatory fields were traced to errors in the tab layout group handling. The right scrolling issue was due to the calculation for right tab movement being incorrect in certain resolutions with relatively positioned elements, and has been corrected. The cursor redirect was caused by an error in the layoutgroup focus when used inside a screen flow where the first focus goes to the screenflow navigation on load, and has been resolved by adding a try catch for an invalid selector in case of a div error. | User Interface |
D53568 | 521144 | Improved post-upgrade compatibility for custom tabbed screen flows | After upgrade, a screen flow with a customized harness saved-as from a TabbedScreenFlow harness and configured with client side validation disabled was displaying a blank white screen if validations failed when moving from one tab to another tab. When a tabbed screen flow has errors the necessary script bundles should be added, but this configuration was created prior to the introduction of templated controls and non-templated controls don't need script files. Because the ‘doesStreamMatchInputProperties’ method sets ‘researchmode’ to true, the ‘doOnlyOnce’ method evaluated to false and script files related to templating controls were not getting appended. For greater backwards compatibility, 'mResearchMode’ will be set to ‘true’ to make stream processing light weight. In addition, the researchmode check will be removed when adding scripts. | User Interface |
D54068 | 518159 | Calendar edit properly disabled when set to no text entry | Clicking the input box of a date control used as Date+calendar popped up the calendar even when the calendar control was disabled and "Allow text entry" was set to No. If "Allow text entry" was set to yes, the entire calendar was disabled. To resolve this, the system has been updated to disable calendar control when 'Allow text entry' is selected to No in the presentation tab. | User Interface |
D54594 | 521632 | Enhancement added to customize the clearing of error messages when performing modal actions | Opening any modal dialog, for example adding a row in Table/Grid layout, cleared any existing validation error messages on UI screen. In order to make this behavior customizable, a flag has been introduced to control the clearing of error messages from primary pages on grid actions. Updates have been made in the ui_grid, ui_grid_dragdrop and ui_repeatlayout JS files to include this flag in activity parameters and the pzdoGridAction activity has been modified to consider the flag. | User Interface |
D54785 | 524801 | Corrected grey area seen when dragging tabbed layout Smartinfo scroll | When using Show Smartinfo in a tabbed layout group, a grey area was seen in the harness while scrolling. Scrolling up so that Smartinfo was out of view port caused another scroll bar to seen: one scrollbar was attached to the workarea div and the other to the body, and the gray area issue was only reproducible when explicitly dragging the (second) scrollbar attached to the body. To resolve this, if the popup is below the viewport using Smartinfo and the height calculated is negative, then the popup's height will be set to 0px. | User Interface |
D54920 | 518271 | Extra checks added for pasting Excel content to RTE | Copying content from Excel into RTE pasted an image of the content either instead of the actual content or in addition to the actual content. This was traced to the handling of the isHTML flag: the flag should be set to true when there is HTML content in the datatransfer item or while pasting images (!isHTML is the condition in if). However, the sequence of the data items in the datatransfer can change depending on the browser/OS, causing isHTML to sometimes not be set to true before it is used in the condition while pasting images. To resolve this, changes have been made to the pasteHandler in the pzpega_ckeditor_extras file so proper checks are made to figure out the type of data from the clipboard that is being pasted. | User Interface |
D55972 | 518643 | SmartInfo disappears if cell clicked | After configuring a smart info on a table cell on hover where the table cell was also clickable to open a case, the smart info remained on the screen when the cell was clicked until the mouse was moved. This was opposite of the expectation that the smart info would disappear on click in this scenario. Analysis showed that the overlay event was not being dismissed if its associated element was removed/hidden, and this has been corrected. | User Interface |
D56038 | 518031 | Corrected top row focus on scroll up for paginated table | When loading results in a table with progressive pagination, scrolling down and waiting for data to load and then scrolling back up resulted in the focus being set on the second row instead of the first as expected. This was due to an incorrect calculation for Scrolltop, which has been corrected. | User Interface |
D56723 | 523836 | Added check to resolve blank screen for embedded Ajax container with tabs | When an Ajax container was within another section with a tab group, trying to open a perform harness resulted in a blank screen. This has been resolved by adding a check to ensure this.headers[this._active] exists before trying to retrieve variables from it. | User Interface |
D57278 | 519460 | Padding added to keep sort icon always visible in Google Chrome | When sorting a grid column on Google Chrome, the sort icon was missing if the header label was large. This was traced to the Sort icon being handled as a background image of 12px in width inside 'display:table-cell' which was forced to shrink by the resize. To resolve this, 'padding: 0 6px;' has been added to each side to keep the space intact for the sort icon to always be visible. | User Interface |
D57629 | 521727 | Navigation sub menu shows all options | The switch app menu was running off the bottom of the screen, and using arrow keys to navigate it caused the whole portal to jump up. This was traced to the sub-menu style attribute 'top' being changed to '0' if it was given a negative value. To resolve this, a condition was added to check whether the rendering sub-menu height is greater than viewport, and adjust the top attribute value accordingly. | User Interface |
D57928 | 526006 | Special characters in field value display as expected | After configuring a text input with a helper text (Help Icon with overlay on hover) that pointed to a Field Value, and the Field Value pointed to a property from the clipboard {.HelperText1} that had a value like (Some text here), in runtime the text in helper was printed with the HTML ASCII number and the text instead of the parentheses around the text. This has been resolved by escaping the special characters so they are displayed as expected. | User Interface |
D58868 | 531797 | Check added for unicode calendar values | After creating a repeating grid section for work report definition with enabled filter option, running the section and giving the filter value in unicode calendar form such as 2019/11/12 did not pass validation. This has been resolved by adding a check for unicode values | User Interface |
D59003 | 522035 | Cross-site scripting security added to RWClasses | Cross-site scripting protections have been added to the RWClasses parameter. | User Interface |
D60367 | 534851 | StretchTabsWidth performance improvements | Slowness was seen when a new intent task was created through an interaction. To improve performance, some of the unnecessary calls to the Layout Group _updateStretchTabsWidth() function have been eliminated, and the function code has been updated to use native javascript performant helper functions so it starts rendering sooner. A flag has also been added to disable addnewtab and resizeactions: these need to be enabled through pega.u.d.DISABLE_LG_RESIZE and pega.u.d.DISABLE_ADDNEWTAB. | User Interface |
D61122 | 522496 | Multi-select in drop down displays subset of a value | In a multi-select drop down, choosing a value (say EMEA-Interior) and then choosing a subset of that value as the second choice (ex, Interior), the second value was not getting selected. If the selection was performed the other way around (Interior first and then EMEA-Interior), it worked as expected. Analysis showed that patterns with similar names did not have the necessary differentiation in the system, and a comma has been added to the generated ID to identify similar values in multiselect capsules. | User Interface |
D62361 | 534808 | Read-Only harness takes precedence over editable section with when condition | Given a harness which was marked as Read Only and contained sections which were configured as editable based on some conditions, when the condition became true, the section became editable and ignored the read only conditions applied on the harness. Investigation showed that when a read-only 'when' rule evaluated to false, it rendered the layout in Edit mode instead of falling back to the read-only status of parent. This has been corrected by ensuring that when read-only evaluates to false, the system will fall back to the parent read-only status. | User Interface |
D62436 | 527200 | Datetime control with Display details readonly works with Edit input | After upgrade, a date time control was being reformatted incorrectly when it was set with Display details as read-only with an Edit input rule configured on the property to convert the date entered (ex, 112019 to 01/01/2019). To resolve this, a data-editinput attribute has been added in the control markup to support this configuration. | User Interface |
D64244 | 532980 | Support added for recording with sIngle-option radio button inside a repeating grid | Recording a test case was not working when a single option radio button (i.e., radio button control with property of type boolean) was configured inside a repeating grid. In this case, it was found that the Radio button markup did not have a data-test-id attribute for non-template single option; this has been added. | User Interface |
D64667 | 531804 | Cursor issue resolved for tab within expandable row | When pressing the “Tab” key on an expanded row, the cursor was not moving inside the expanded part. This has been fixed by adding a check to get the correct first focusable element. | User Interface |
D64694 | 533960 | Check added for Turkish locale in Firefox | When using Firefox in the Turkish locale, attempting to open worklist subsets or edit tables in a modal dialogue caused the browser to hang. This was traced to the character conversion process in the browser and has been resolved with the addition of a check. | User Interface |
D64945 | 534321 | Accessibility enhanced for multiselect | Aria attributes for multiselect items and container have been added to enhance accessibility. | User Interface |
D66095 | 529705 | Cross-site scripting security added to Richtext Editor | A scenario where HTML objects could be copied and pasted into CKEditor and the click action modified to perform different actions was traced to Pega event attributes present in the Rich Text Editor content. This has been corrected by blacklisting Pega event attributes like data-click, etc. In | User Interface |
D66387 | 530841 | ReloadSectionsCache handling improved | Change Tracker was reporting changes properly and ExpressionEvaluator logic identified the correct DOM element related to layout refresh, but the refresh was not getting triggered due to _isInvalidRefresh logic. This was traced to reloadSectionsCache not being optimally maintained, and has been resolved by updating reloadSetionCache to avoid unnecessary reloads and only update the cache after a reload section is completed. | User Interface |
D66436 | 529670 | Correct Value shown for Helper Text controls with labels | Helper Text sourced from a field value was displaying the field value's 'Translate From' value rather than the 'Translate to' value. Analysis showed that the 'title' attribute of the corresponding icon on the DOM was being populated differently depending on whether it was a control with labels (not working) or a caption on a checkbox control (worked as expected). To address this, a check has been added for datetime and checkbox controls to send fieldname as pyCaption and pyActionPrompt respectively instead of pyTooltip to resolve the value. | User Interface |
D67674 | 537587 | Check added to skip validationtype for disabled controls with Accessibility | On enabling Accessibility, a disabled DateTime control was throwing a 'required' error. This was due to the dropdown markup having the validationType="required" attribute set if the control was configured with a required 'when' expression. Even though the expression evaluated as false, validationType="required" was still set. This issue was seen only in non-template datetime control, and has been corrected with a check to skip adding a validationType attribute for a disabled control in Accessibility mode. | User Interface |
D68277 | 541814 | Added logoff check for requestors | After upgrade, the error "java.lang.InterruptedException. Requester has been destroyed" was appearing in the logs. Investigation showed this was related to unregister requests being submitted after logoff, and has been resolved by updating the system to check for logout before sending unregister requests. | User Interface |
D68311 | 535984 | Corrected table row highlighting on iPad | A table row was highlighted when clicked on an iPad in landscape view, but when the device was rotated to portrait view the row was not highlighted. This was traced to the background CSS overriding the selected style, and has been corrected by modifying py-responsive-overrides.css. | User Interface |
D68721 | 532594 | Corrected span tags in non-templated Autocomplete | Span tags were seen in the auto complete list when Results display was selected as "In a list". This appeared only in non-template mode, and was traced to the application of a crossScriptingFilter after adding span.match element to the value. To correct this, the crossScriptingFilter will be applied before adding the span.match markup to the value. | User Interface |
D69452 | 536399 | Layout management corrected for nested gadget sections | Post-upgrade, some buttons were missing or mis-aligned, specifically the 'Reopen' and 'Cancel this Assignment' buttons were missing, and if 'Cancel this Assignment' was clicked, the Back button was missing. Investigation showed that when using nested gadget section includes, the necessary stack management to pop previous gadget parameters was not present. This has been resolved by adding a check for template rendering, as there is separate handling for template rendering to manage the stack. | User Interface |
D70064 | 541961 | Case UI correct following multiple approval levels | After proceeding through different levels of approvals, the UI of the case was incorrect on the final approval submit. This was traced to the forceSkinGeneration parameter, which was set to true, being used by a workformstyles fragment. This has been resolved by changing pzUsePreferenceSkin to "once" and setting the parameter forceSkinGeneration to false after the pyAttachAsPDF activity call. | User Interface |
D70310 | 537139 | Window type check added for icon display logic | When a Role had privileges to use Live UI, Agile WorkBench and Scenario Testing, the Scenario Testing tool icon intermittently did not show. This was traced to an incorrect condition used to check whether current window was of type desktop (portal) window, and has been resolved by adding a check that will also ensure consistency with Agile Studio icon display logic. | User Interface |
D71105 | 532188 | Corrected error when using CharCounter in non-template mode | An error message was generated when trying to save a section with the TextArea's Display CharCounter set to True. This was traced to an error in the remaining character count span generation for non template mode and has been corrected. | User Interface |
D71202 | 535407 | Corrected autocomplete results for parameterized Report Definition in grid | An autocomplete included in a grid and configured with results display as 'List' where the source for the autocomplete was a parameterized report definition and the Report Definition parameter was an associated property of autocomplete did not show any results. If the results display was changed from 'List' to 'Grid', it worked as expected. This has been resolved by adding a null check on rowdetail in the "replaceParamsTokens" method for autocomplete. | User Interface |
D71355 | 537006 | Support added for dynamic CSS class reference in optimized grid | When using the property pyStatusWork in an optimized grid, it was not possible to set a color code for different work statuses. This worked on an unoptimized grid. This has been resolved with the introduction of a dynamic CSS feature. This control can be changed to an autogenerated control like "Formatted text" and apply color coding through classes. To use this, a property value must be specified in cell classes in the presentation tab of the table cell, and then populate each result of a data page with that property which contains some class value appropriate for status value. CSS must be written for the different classes (class name is stamped on <td> in markup). | User Interface |
D71402 | 532330 | Localization added for Pega Call Login screen | Localization has been added to the label "Value can not be blank" on the Pega Call Login screen. | User Interface |
D71522 | 539321 | Radio button error resolved for scenario testing | When creating a scenario test case that selected a radio button and navigated the screen, it worked to complete a case and save the scenario test case in a rule set. However, attempting to then run the scenario test case stopped with the error message "Value cannot be blank" for the radio button even though the value "No" was captured for the button. This was traced to the firing of the change event, and the system has been updated so 'pega.u.d.setProperty' will only fire a click event on a selected radio button option. | User Interface |
D71756 | 533548 | Thread Cleanup error resolved | After upgrade, intermittent exception errors were being generated by the FreeClipboard activity when switching between applications. This was traced to specific use-case issues with Thread Cleanup, and has been resolved. | User Interface |
D71944 | 543729 | Resolved data page loop in templatized UI |
A Layout Group was configured with six dropdowns sourced to Parameterized datapages with "disable automatic refresh" unchecked; every next dropdown depended upon the previous property, and the previous property was sourced as parameter, and so on until last dropdown. When the value in the dropdowns changed, the section kept refreshing and the portal became unresponsive. This was traced to the combination of a Datapage as the source to the dropdown with "disable automatic refresh" unchecked and expression evaluation as well. Templatized UI has 'visible when' expressions for all the properties inside the top level page. Changing the first one fired refresh on the next one, and the next one's refresh fired the other drop down refresh until it became recursive. This did not occur in non-templatized UI as it does not have expression IDs and there are no recursive calls. This issue has been corrected by modifying how the temporary mapping is populated by the reloadCells API in Expression Evaluator to prevent unwanted cell refreshes. |
User Interface |
D72121 | 536408 | Currency Control accepts value on PostValue action set | Currency control in the section was sourced by a decimal property. Irrespective of the value entered, the validation triggered the message "entered value is not a decimal value" and did not allow user to proceed. Investigation showed than on getting the server response for post value action, the target element was updated with the response value when it should be skipped for currency control. To resolve this, an additional check for attribute: data-formatting has been added to the textInput control so when action PostValue is configured on Currency control and there is a change of value, the system will skip replacing the value with formatted value. | User Interface |
D73260 | 536888 | Multiselect control support for offline-enabled iOS app | After a custom mobile application for iOS was built and was running on iPad for an offline-enabled user adding a multiselect control into a section as part a flow caused the screen to hang when a save or submit was performed. This has been resolved by enhancing support for offline multiselect submit with the addition of pzpega_ui_template_multiselect_capsule to offline static bundle. | User Interface |
D73510 | 538662 | Cross-site scripting filtering for ActionStringID | Cross-site scripting filter logic has been added to the ActionStringID function. | User Interface |
D73847 | 536161 | Added exception handler for URL decode error | After logging in to Pega Deployment Manager, clicking Users -> People in the left navigation panel resulted ArrayIndexOutOfBoundsException. This was traced to an incomplete trailing escape (%) pattern and has been resolved by adding checks and exception handling for incomplete data from the browser. | User Interface |
D74008 | 537289 | AAAFilter on the grid shows value for a second click | A Filter on the grid was not showing any record value for a second click. This was traced to a conflict in considering column headers caused by the Filter Icon delegating two Grids, leading the process to take the context of the other Grid instead of the one which had been clicked. To resolve this, a check for the right context of the Grid has been added to the filterOnProperEvent method. | User Interface |
D74057 | 540058 | Updated aria handling for Dynamic Layout Group 'Accordion' | The Dynamic Layout Group display type 'Accordion' was not getting initialized properly on the browser developer inspector. This was traced to the aria-selected attribute set to always be true, and has been resolved by adding logic to set and unset aria- selected only on the active tab. When the tab is not active, then aria-selected will be false. | User Interface |
D74165 | 537512 | DateRange clear button localized | Localization has been added to the 'clear' button in DateRange. | User Interface |
D74704 | 535940 | Section and navigation rule localization added | Localization has been added for sections and navigation rules that include some of the out-of-the-box rules like Locked and Get help. | User Interface |
D75205 | 543565 | Refresh with DT or pre-activity added to dirty pop up check | Given a button which when clicked launched a data transform to set a few properties on the UI followed by a section refresh, a dirty warning popup did not appear when closing the work object even though the property changed via the refresh section. This has been resolved with an additional condition in the dirty pop up check to handle a refresh section using a DT or pre-activity. | User Interface |
D75966 | 537944 | Check added so DT parameters passed when using anchor tag | When using a link control configured such that the value of the text in the link control refers to an anchor tag such as <a href="http://www.google.com">Text</a>, clicking the link to launch a harness and call a DT with passed parameters was not working. Investigation showed that when the link had an anchor tag, pyDataTransformDynamicParams was not getting passed as query string parameter. In pega.desktop.showHarness function, there is a If condition which checks whether any "=" is present in preDataTransformName variable and if there is any, it does not add pyDataTransformDynamicParams. This was not an issue with anchor tag itself, but rather a generic issue: any value with "=" would behave in the same way. To resolve this, the pega.desktop.showHarness API has been updated to check against the proper value (pyDataTransform=) instead of just = to identify old modal parameters. | User Interface |
D76178 | 538600 | Corrected Cosmos dropdown positioning in right-to-left locales | When using the Arabic locale with the Cosmos UI, the dropdown was located on the right side of the field instead of the left side. This has been corrected. | User Interface |
D76348 | 538607 | Right-to-left styling added to Cosmos localization | When using Cosmos, the Preview Screen was displayed in the middle of the screen when using a locale that reads right to left, such as Arabic or Hebrew. This has been resolved by updating the styling to handle right-to-left scenarios. | User Interface |
D76826 | 543094 | Corrected SmartInfo header text overlap with close icon | SmartInfo header text was not consistent in being wrapped to the next line, and when it did not wrap it was overlapping with the close icon. This was traced to the method used for applying the inline style to SmartInfo's header div by getting the body div's offsetWidth. In working scenarios, the body div's width has fractional portion (ex. 368.188px) and offsetWidth returns a rounded number like 368px in this case. This resulted in the header content not fitting in single line because it exceeded the space it was given, and wrapping resulted. In the non-working scenario, the body div's width did not have a fractional portion and therefore matched offsetWidth, meaning the header content fit to single line and overlapped the close icon. To resolve this, SmartInfo Header Div has been updated to be always be slightly less than the SmartInfo Body div. | User Interface |
D77268 | 540565 | Added handling for iOS13 webView scrolling | When using iOS13 both in Native Client and in Safari Browser with the Pega app loaded into webView, there was no ability to scroll it down in order to perform the pull to refresh gesture which reloaded the web view contents. To resolve this, "overflow:auto" has been added to the body tag in the mobile_hybrid.js file for use with iOS13. | User Interface |
D77359 | 542136 | AAAFilter on the grid shows value for a second click | A Filter on the grid was not showing any record value for a second click. This was traced to a conflict in considering column headers caused by the Filter Icon delegating two Grids, leading the process to take the context of the other Grid instead of the one which had been clicked. To resolve this, a check for the right context of the Grid has been added to the filterOnProperEvent method. | User Interface |
D77658 | 542844 | Updated backwards compatibility for custom date/time with extra text | After upgrade, migrated extra text in the custom date format was causing confusion. The previous support of additional text on earlier versions was not intentional, but was allowed by the previous default of non-template mode. In template mode, when custom datetime format includes plain text in single quotes, pega.ui.Formatter.formatDateTime processes the entire format string instead of only the datetime formats. To avoid confusion, updates have been made so if a custom format has plain text in quotes, the system will separate the formats and resolve them. | User Interface |
D78019 | 541192 | Thread Cleanup error resolved | After upgrade, intermittent exception errors were being generated by the FreeClipboard activity when switching between applications. This was traced to specific use-case issues with Thread Cleanup, and has been resolved. | User Interface |
D78562 | 543529 | Calendar Mode accessibility enhanced | Accessibility has been added for datetime control's calendar mode by adding alternative text and an aria-label for the image icon with a value from fieldvalue "Choose from calendar". | User Interface |
D79103 | 543136 | Corrected Finish Assignment error | When trying to open a resolved case using the "open assignment" action in a button by passing an assignment key, finish assignment was not working. This was traced to context not being correctly set before querying for the errorDiv for removal, and has been resolved by explicitly setting the current context before removing the errordiv. | User Interface |
D79777 | 542046 | Corrected top navigation rendering for Robot Manager harness with parameters | When using "Robot Manager", a Single Doc, top navigation enabled portal, with pre DTs or Activities provided to launch a new harness on click of links from multiple places, an invalid data error appeared when a new Harness was rendered as part of some button or link click. If the the tab was closed and the Robot Manager portal was initiated from Dev studio, invalid data was loaded. This was traced to a missing use case for loading the portal center-panel harness when it was configured with preactivity and preDT with parameters. To resolve this, the showdesktop activity has been updated to handle preDT and preactivity parameters of the launch harness action. | User Interface |
D80223 | 542921 | Cross-site scripting filtering for ActionStringID | Cross-site scripting filter logic has been added to the ActionStringID function. | User Interface |
D81779 | 543855 | Logic added to prevent refresh on enter when no action is configured | After configuring a text input followed by an icon with display SmartInfo for click action, switching focus to the text input again after displaying the SmartInfo and hitting enter invoked the refresh harness even though no action was configured for the text input. This has been resolved by updating 'pzpega_ui_events.js' -> keyDownHandler() with logic to call preventDefault() based on certain conditions. | User Interface |
D81900 | 544327 | Thread Cleanup error resolved | After upgrade, intermittent exception errors were being generated by the FreeClipboard activity when switching between applications. This was traced to specific use-case issues with Thread Cleanup, and has been resolved. | User Interface |