CA Process Automation 4.0 SP1 Cumulative Patch Available

Discussion created by Kaj.Wierda Employee on Oct 19, 2012
CA Process Automation cumulative patch PAM_4.0.115_SP01_CP02_20120921 is now available from support.ca.com as RO51161.
This patch may be applied against CA Process Automation 4.0 SP01, and rolls up and supplants all previous cumulative patches for this code line.[size=5][size]

[size=5]Issues resolved by cumulative patch PAM_4.0.115_SP01_CP02_20120921[size]

Failure to start PAM instance after applying patch CP01
A critical defect was found with patch PAM_4.0.113_SP01_CP01_20120828, where if this patch was applied, and a Java based classic PAM connector was installed (e.g. vSphere), the PAM instance could not be started, and an exception similar to:

[font=Courier New]2012-09-11 14:46:26,671 ERROR [com.optinuity.c2o.util.SimpleCastorXMLUtil] [ Initialization] element "Attributes" occurs more than once. (parent class: org.exolab.castor.mapping.MapItem) location: /Attributes/Attributes/Attributes/Attributes/Attributes.[font]

would be seen.

IF patch CP01 has been applied, applying patch CP02 is insufficient to address this issue, as CP01 has made a persistent change to an internal file which CP02 will not correct. Patch CP01 was withdrawn before it was generally available, but because it was available internally, and a few selected external site, support has prepared a utility which will undo this damage. In the unlikely event, your site does have need of this utility please contact support.

Problem with Auto Complete and Datasets
A problem where auto completion of Dataset element names would not work when the Dataset is stored under a folder whose name contained a space charachter has been corrected.

"Internal Server Error" thrown when saving a double dimensional array
2012-09-11 14:46:26,671 ERROR [com.optinuity.c2o.util.SimpleCastorXMLUtil] [ Initialization] element "Attributes" occurs more than once. (parent class: org.exolab.castor.mapping.MapItem) location: /Attributes/Attributes/Attributes/Attributes/Attributes.

[size=5]Issues also resolved by superseded cumulative patch PAM_4.0.113_SP01_CP01_20120828[size]

"Internal Server Error" thrown when saving a double dimensional array
Error "Internal Server Error" may be thrown when user saves a double dimensional array under PAM 4.0 which has been imported from PAM 3.1.

Radio group selection is not retained on saving the Form
Radio group Selection is not correctly retained on Saving the Form in the specific case where one or more values associated for the radio button are substrings of the value for the button selected.
E.g. If you create a Form and add a Radio Group and some radio buttons, and change the values of these radio buttons as say “value”, “value1”, “value2”, after saving the form you will see the button for “value” selected regardless of which button was actually chosen. You would not see this problem if for instance the values were “Tom”, “Dick”, and “Harry”.

Forms preview section does not show Scroll Bar
Forms Preview section will now show scroll bar under circumstances where previously it would be cut off.

Memory leak in UCF/Catalyst operator causes exception
Running Execute Operator with Start, Hold, Release and Cancel operations in a loop would exhaust memory leading to a java.lang.OutOfMemoryError: GC overhead limit exceeded exception.
[13492, 13291]

Problems when changing Data type for an array element in a Dataset from integer to value map
Changing Data type for an array element in a Dataset from integer to value map was not changing the element to value map type.

Browser crash seen when process watch accessed through the process watch palette
A Browser crash could be seen if a Process Watch imported from another PAM instance was accessed through the process watch palette in the Operations Tab. This was not reliably reproducible, and was only observed in case of a clustered PAM instance.

Macro replacement is not working in SOAP custom operators imported from PAM 3.1
For SOAP custom operators imported from PAM 3.1, textual macro replacement was not working after import into PAM 4.0.

JavaScript method getEEMArtifactToken would throw exception if passed variable of data type Password
JavaScript method getEEMArtifactToken now supports being passed a variable with type Password as its second parameter.

WSDL Explorer is not able to parse WSDL for which elementFormDefault="qualified" is not present
Code was assuming that if schema element has a namespace prefix it would always get it. This is not the case if WSDL has elementFormDefault="qualified" defined and namespace prefix is empty.

Problems with Loop operator
Various problems were corrected for the Loop operator, including
· No count for the loop when entering the loop for the first time (should be zero).
· Dataset of the loop operator only shows up after exit from the loop. E.g. If you are in iteration 3 of 5 inside a loop and have a breakpoint in the loop, you don't see the CurrentLoopIteration data.
· Reset of the loop is not resetting the loop Dataset. If process ends with a Start or if user puts a loop inside a loop, the second time loop should get a counter of 0 when entering the loop again.

Assignment failure to HTML form field within IRF
Assigning a value to an HTML form field within an Interaction Request Form would fail at run time IF no value had been given to the field at design time.

Users could occasionally get “SERVER_CONNECT_FAILED CODE 400” when connecting to an Orchestrator. Root of issue was that PAM was saving state information in a cookie, and size of cookie was exceeding limits. Code was amended to remove this possibility.

Error executing Custom Operator based on Run Process in Inline mode
Processes with Custom Operator based on Run Process in Inline mode were remaining in Queued state after execution and backend logs would show NullPointerException.

Forcing consistent values in Custom Operator fields
In order to enforce expected behavior, if “readonly” is selected for a field then “disabled” is also set as true, and if “hidden” is selected, then both “readOnly” and “disabled” are set as true.
[13341, 13322]

Problem with SOAP message header format generated by PAM
The ReplyTo element in the default SOAP message header generated by PAM for SOAP operators is declared as an EndpointReferenceType, but is created as a simple string element.
E.g. for an asynchronous SOAP call

[font=Courier New]<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:c2o="http://optinuity.com/c2o" xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing">
<wsa:ReplyTo>URL of the PAM Orchestrator</wsa:ReplyTo>
<wsa:Action>Action Requested</wsa:Action>

This will cause problems if the Web Service called validated the message format against the schema. For reasons of backwards compatibility the header format being generated could not be modified, but modifications were made to the SOAP Module operator’s behavior as follows:
[*]When a SOAP call in PAM consists of the entire SOAP message (including Envelope, Header and Body), PAM does not modify the SOAP call and sends it as is to the destination server. This allows for users to add the SOAP header in any format.
[*]One exception is that for asynchronous SOAP calls the right MessageID is inserted before making the SOAP call even if user has defined the entire header. If the MessageID element is already present in header PAM will change its value to the right MessageID and if it is not present will add a MessageID element with the right value.
[*]If the Address Element within ReplyTo is left empty, PAM will insert the correct URL for the Orchestrator.

If the user needs to communicate with a Web Service which enforces schema compliance, the user will need to specify the SOAP header, and the ReplyTo element will need to conform to a EndpointReferenceType.

[font=Courier New]<xs:complexType name="EndpointReferenceType">
<xs:element name="Address" type="wsa:AttributedURI" />
<xs:element name="ReferenceProperties" type="wsa:ReferencePropertiesType" minOccurs="0" />
<xs:element name="PortType" type="wsa:AttributedQName" minOccurs="0" />
<xs:element name="ServiceName" type="wsa:ServiceNameType" minOccurs="0" />
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded">
<xs:documentation>If "Policy" elements from namespace "http://schemas.xmlsoap.org/ws/2002/12/policy#policy" are used, they must appear first (before any extensibility elements).</xs:documentation>
<xs:anyAttribute namespace="##other" processContents="lax" />

Not all of these elements will need to be specified and as noted above PAM will fill in some of the essential information. So for instance for an Asynchronous call the following minimum could be provided:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:c2o="http://optinuity.com/c2o" xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing">
<wsa:Action>Action Requested</wsa:Action>

This would be sent by PAM as:

[font=Courier New]<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:c2o="http://optinuity.com/c2o" xmlns:wsa="http://schemas.xmlsoap.org/ws/2003/03/addressing">
<wsa:MessageID>UUID of Asynch SOAP Operator</wsa:MessageID>
<wsa:ReplyTo><wsa:Address>URL of the PAM Orchestrator</wsa:Address></wsa:ReplyTo>
<wsa:Action>Action Requested</wsa:Action>
</env:Envelope>[font=Courier New][font][font]


Expressions are not evaluated for ObjectReference type fields of a form
If a field in a SRF or IRF is set as ObjectReference type, literal value of the field was being used instead of evaluating the expression even if flag to evaluate the field as expression was set to true.

Able to delete Agent when Domain is not locked
The necessary restriction that the Domain be locked is now enforced as it was under PAM 3.1 and earlier.

Issues with evaluating expressions in Custom Operators ported into 4.0 SP1
Expressions, based on input parameters of a Custom Operators, in Custom Operators were not being evaluated after migration to 4.0 SP1. Instead literal values of those expressions were being used.

Problem populating form fields
Because of logic errors in mapping form components, user could see inconsistent results when populating form fields. E.g. using getDataFromSQL to obtain values with a database query, not all fields would be updated with the expected values.

Difficulties deleting Touchpoints
Problems with reliably removing Touchpoints and having the configuration browser reflect this, particularly in a clustered environment have been addressed..

Problem creating drop-down list using Dataset expressions
Users can now create a drop-down list using a Dataset expression which evaluates to a ValueMap of Keys and Values array.

Design time protection against losing array values
When a user changes the data type of a variable, and if that variable is an array that has populated data, the data will be lost. Because there is the potential for significant work to be lost, a popup warning is now shown to the user, forcing the user to confirm that the change should be made and the data lost.

Cannot run Start Request Forms imported from 3.1
A problem with running Start Request Forms imported from an earlier version of PAM has been corrected.

Starting a Process though an SRF, the hierarchy dropdown is empty
In PAM 4.0, running a process shows a hierarchy dropdown that can be used to navigate through the process hierarchy. The hierarchy dropdown works correctly the Process is started directly, but if the process was started though a Start Request Form, the hierarchy dropdown was empty or blank.

Syntax error in form script causes repeated error messages upon save
On clicking save on a form script in some cases, repeated error messages were generated when there was a syntax error in the script.

Invoke Java operator throws a ClassCastException if the user's java code explicitly uses a different class loader than the operator's class loader
The Invoke Java operator uses a chain of class loaders to load classes while running the user's java code. This chain was designed as follows (I am dropping some details for the sake of clarity):

1. Operator Class Loader: Base class loader that loads the classes provided at the operator level
2. Module Class Loader: URL class loader that loads the classes provided at the module level
3. Context class loader
4. Regular java Class.ForName

The operator consults each class loader before moving to the next (if the class is not found). This chain allows separation of conflicting classes that are loaded by PAM and the operator/module, and also allows the operator to override conflicting classes loaded by the module. This chain works fine as long as the code that the user is executing does not explicitly use its own class loader to load a class. In this case, the user will see a 'ClassCastException' in the logs.

To resolve this, a new field was added in the Invoke Java operators to allow the user to set the context class loader of the operator to either:
- The Operator class loader (this is the class loader that loads the jars provided in the operator properties)
- The Module class loader (this is the class loader that loads the jars provided in the module properties)
- Default class loader (if the code does not load classes using the context class loader). This is the case implicitly used before this enhancement, and is set as the default value of the new input field.

By setting the context class loader to the 'Invoke java' operator's class loader, the user can force the Java factories (called by the user's code) to use the 'Invoke Java' operator's class loader, hence getting rid of the ClassCastException.


CRLF characters lost for existing multiline strings in Dataset upon save
Carriage Return/Linefeed characters (line breaks) were being lost when saving multiline strings in a Dataset.

Host Group enhancement
Resolving a operator target using Host Groups could be very inefficient, as the Host Groups were considered last during target evaluation. An option has been added to force evaluation against Host Groups only, along with other improvements to improved the efficiency of target resolution.

Various internal issues
The following are internal issues addressed by this patch, which are improvements or fixes asymptomatic from the customer’s perspective.
[13384, 13383, 13382, 13381, 13379, 13370, 13369, 13368, 13366]