Abstract
Readme documentation for IBM® InfoSphere™ Master Data Management Server for Weblogic® and IBM WebSphere® Application Server for Version 10.1.0.0.30 including installation-related instructions, prerequisites and co-requisites, and list of fixes.
Readme file for: IBM® InfoSphere™ Master Data Management Server for WebSphere® Application Server
Product/Component Release: 10.1.0
Update Name:10.1.0.0.30
Fix ID: MDM_10.1.0.0.30_ifix_WAS
Contents
Download location
Prerequisites and co-requisites
Installation
information:
Prior to installation
Installing
Important Changes
Contacting IBM Software support
List
of fixes
Copyright and trademark information
Download
location
Download fixes from Fix Central (select Information Management -> InfoSphere MDM Server -> 10.1.0 -> AIX)
http://www-933.ibm.com/support/fixcentral/
Below is a list of products/components names, platforms, and file names that apply to this ReadMe file.
Product/Component Name: |
Platform: |
File Name: |
InfoSphere MDM Server 10.1.0.0.30 |
WebSphere Application Server |
MDM1010030_WAS.jar |
Prerequisites and co-requisites
This is a roll-up fix that contains all the fixes from 10.1.0.0.1 to 10.1.0.0.29. It can be installed directly on top of MDM 10.1.0, or any hot fix from 10.1.0.0.1 to 10.1.0.0.29
Client customizations or extensions may impact the update process. Please consider the impact of custom configurations and extensions before proceeding with the update of this hot fix to your environments.
To install, replace or merge the assets (such as jars, properties files, XSDs, etc.) in your environment with the assets included in this hot fix, execute the provided scripts (if provided) and redeploy. Remember to make a backup of the original environment before applying the hot fix in the event that there is cause to roll back the hot fix. For more details on how to deploy a hot fix, please refer to the document 'DeployFix_Guidelines.pdf'.
UIs installation (iFix10.1.0.0.16):
**************************
The fix uses
the "Double Submit Cookies" technique mentioned in the
XSRF Prevention Cheat Sheet. When the server gets a POST request
from the client, it will check to see if the request contains a
csrfToken
parameter (which is
the session ID). If it matches with the server's value, it will
continue with the request. Otherwise, it redirect to the specified
page in the filter. With this fix, the UI need to add a new hidden
field within all the form tags to include the csrfToken
in its request.
Steps
to apply fix (For non-customized UI):
1. Go to WAS Admin
Console, then go to Servers -> Server Types -> WebSphere
application servers, Stop UI instances. (BAUI, DSUI & PUI)
2. Go to
Applications -> Application Types -> WebSphere enterprise applications,
Export original UI .ear files.
3. Open propertiesUI.jar in the new UI .ear file, change default UI
setting by copying mdmUIConfiguration.properties from the original propertiesUI.jar and replacing the new mdmUIConfiguration.properties.
4. Go to
Applications -> Application Types -> WebSphere enterprise applications,
Update with new UI .ear file. (For PUI update only: Check Deploy Web services option on the Install New Application page)
5. Go to System
administration -> Save changes to master
repository, check Synchronize changes with Nodes and Save.
6. Go to Servers
-> Server Types -> WebSphere application
servers, Start UI instances.
Steps
to apply fix (For customized UI):
1. Adjust the SessionFilter.java
(CommonUIUtilities/src/com.ibm.mdm.ui.filter and CommonUIModel/src/com.ibm.mdm.ui.filter packages) by adding
the following section of code after the closing of the "if(httpSession == null)" section of code (since the CSRF
check will only be done when there is a valid session) in the "doFilter" method:
//
Check to see if the csrfToken in session is up-to-date
String
sessionId = httpSession.getId();
String
idInSession = (String)httpSession.getAttribute("csrfToken");
if( idInSession == null || idInSession.compareTo(sessionId)
!= 0){
httpSession.setAttribute("csrfToken",sessionId);
logger.info("Updated
csrfToken in session");
}
//Check
CSRF Token
String
requestMethodType = httpRequest.getMethod();
if(requestMethodType.compareToIgnoreCase("POST")==0
&&
!(url.endsWith("j_security_check")) &&
!(url.endsWith("ibm_security_logout")) ){
logger.info("Handling
a POST request");
//
is a POST Request, need to check csrfToken
Enumeration<String>
namesEnum = httpRequest.getParameterNames();
boolean isTokenMatched =
false;
while(namesEnum.hasMoreElements()){
String
paramName = namesEnum.nextElement();
if(paramName.endsWith("csrfToken")){
String
csrfToken = httpRequest.getParameter(paramName);
if(csrfToken.compareTo(sessionId) == 0){
isTokenMatched = true;
break;
}
}
}
if(!isTokenMatched ){
logger.error("CSRF
Token not found");
httpResponse.sendRedirect(httpRequest.getContextPath() +
"/faces/login.jsp");
return;
}
logger.info("CSRF Token
matches session ID");
}
2. Apply the following code in all .jsp
pages where there is a "</h:form>"
tag (can just do a search for the tag):
<h:inputHidden id="csrfToken" value="#{csrfToken}"></h:inputHidden>
3. Adjust the web.xml
(ProductWeb/WebContent/WEB-INF)
by changing the SessionFilter
url-pattern from /faces/*
to /*. (Apply to PUI only)
<filter-mapping>
<filter-name>SessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
**************************
Below are an example how to set it up, please have a look as reference.
==> Configure in DB:
insert into appinstance(INSTANCE_ID,DEPLOYMENT_ID,NAME,LAST_UPDATE_DT,LAST_UPDATE_USER) values(00000001,4401286828768937, ‘NODE1INST01’,current_timestamp,’cusadmin’); insert into appinstance (INSTANCE_ID,DEPLOYMENT_ID,NAME,LAST_UPDATE_DT,LAST_UPDATE_USER) values(00000002,4401286828768937, ‘NODE1INST02’,current_timestamp,’cusadmin’); insert into configelement (ELEMENT_ID,DEPLOYMENT_ID,NAME,VALUE,VALUE_DEFAULT,INSTANCE_ID,LAST_UPDATE_DT,LAST_UPDATE_USER) values (7000001,4401286828768937,'/IBM/CoreUtilities/KeyGeneration/instancePKIdentifier','',‘01', 00000001,current_timestamp,’cusadmin’); insert into configelement ELEMENT_ID,DEPLOYMENT_ID,NAME,VALUE,VALUE_DEFAULT,INSTANCE_ID,LAST_UPDATE_DT,LAST_UPDATE_USER) values (7000002,4401286828768937,'/IBM/CoreUtilities/KeyGeneration/instancePKIdentifier','',‘02', 00000002,current_timestamp,’cusadmin’);
==> Configure in WAS:
In WAS you would configure a WAS variable and a JVM custom
property. Having the WAS variable makes it easier to define the
scope of
which the instance name is configured. In your
case you will want multiple MDM_INSTANCE_NAME variables, with
different values
scoped to individual servers.The Server's
JVM custom property value always stays the same
(${MDM_INSTANCE_NAME}), this will indicate to WAS to use a WAS
variable value.
=> Define MDMS
instance ids as WAS variables (one for Each JVM):
Go to the
WAS Admin Console, choose the scope properly depending on where
this WAS variable is designed to use, add a new WAS Variables in
Environment ---> WAS Variables: WAS Variable Name Node JVM
Variable Value
CAT_MDM_INSTANCE_NAME Node1 JVM1
NODE1INST01
CAT_MDM_INSTANCE_NAME Node1 JVM2 NODE1INST02
=>Define MDMS instance ids as WAS JVM properties (one
for each JVM)
Go to the WAS Console, under each server, go
to the "Process definition" - > JVM - > custom
properties, add a custom properties like below: JVM Property Name
Node JVM JVM Property Value
MDM_INSTANCE_NAME Node1 JVM1
${CAT_MDM_INSTANCE_NAME}
MDM_INSTANCE_NAME Node1 JVM2
${CAT_MDM_INSTANCE_NAME}
Replace ASIDefaultTransformation.jar in customer.ear/lib/ (e.g.
/usr/IBM/WebSphere/AppServer/profiles/Node01/installedApps/Cell01/EVE0MDM101D10102012T1150WAS1AIXDB2BE03.ear/lib)
with the one in the fix(iFix10.1.0.0.13)
Run
the following SQL statements and then restart the application
server:
update ASIDEFINITION set
adapter_name='com.ibm.mdm.asi.MDMDefaultResponseAdapter',
last_update_dt=current_timestamp where asi_name in
('http://www.ibm.com/mdm/port',
'http://www.ibm.com/mdm/admin/port') and transform_tp_cd=2;
Note: This will replace the default WS ports. If the
customer has their own, they need to modify their custom entries
to use com.ibm.mdm.asi.MDMDefaultResponseAdapter.
Replace ASIDefaultTransformation.jar in customer.ear/lib/ (e.g. /usr/IBM/WebSphere/AppServer/profiles/Node01/installedApps/Cell01/EVE0MDM101D10102012T1150WAS1AIXDB2BE03.ear/lib) with the one in the fix.
Replace the mdmeme-core.jar, madapi.jar, madcommon.jar and properiate native library (e.g. libMAD.a, libMAD.so, or mad.dll) specified in shared library 'eME JNI' with the ones in the fix.
Contacting IBM Software support
IBM Software Support provides assistance with product defects.
Before you submit your problem to IBM Software Support,
ensure that your company has an active IBM software maintenance
contract, and that you are authorized to submit problems to IBM. The
type of software maintenance contract that you need depends on the
type of product you have.
Product support can be
obtained through the following methods.
On the Web |
Go to http://www.ibm.com/software/data/masterdata/customer/
|
By Telephone |
If you are in North America,
call 1-800-IBM-SERV (1-800-426-7378)
If you are outside of North
America, check the Web page http://www.ibm.com/planetwide/
for contact information for your area. |
|
Incident/PMR
|
Description |
1 |
PMR# 16755,227,000 |
Scripts and data in <MDM_INSTALL_HOME>/Upgrade/MDM/Level-II are missed for upgrading from an existing InfoSphere MDM Server 9.0.2 database to 10.1.0. If you are upgrading MDM Server 9.0.2 database to 10.1.0, please see more detail in MDM Server information center(http://pic.dhe.ibm.com/infocenter/mdm/v10r1/index.jsp). Otherwise, this iFix can be skipped. |
2 |
PMR 46997,999,616 |
Fixed code to enable PartyAddress duplicate validation for PartyAddress data extension. |
3 |
PMR 70874,227,000 |
Fixed code to set IdPk/PrimaryKey for EObjEntityPrivPref properly. |
4 |
Defect#31022 |
Fixed code to generate pluggable SQL correctly for inline table extensions which inherit primary key from base entities. |
5 |
PMR 48288,999,616 |
Enhance code so it allow to read instance.name from applicaton server (e.g WAS) to prevent from the "duplication primary keys" error. |
6 |
PMR 49328,999,616 |
Fix code so that if the existing contractPartyRoleIdentifier record on DB expire, the mdm logic should not consider as duplicate. |
7 |
Defect 32477 |
Fixed code to solve NullPointerException while running XML composite transaction with multiple updateCategoryRelationship sub transactions. |
8 |
Defect 32472 |
Fixed code to handle ProductRelationshipEndDate properly in ProductRelationshipBObj while running add/update transactions. |
9 |
PMR00890,130,702 |
Fixed code to resolve addProductPartyRole random failure issue when running with BatchProcessor concurrently. |
10 | PMR00891,130,702 | Added new metadata in table BUSINESSTXREQRESP to make availableResultsCount returned when searching party with IdentificationNum and IdentificationType and pagination enabled. |
11 |
PMR29722,012,649 |
Fixed code to resolve a SQL Error caused by missing CONTACT table in SQL FROM clause when searching party with PartyFilter of ACTIVE and returnPartyIDsOnlyFlag of true. |
12 |
N/A |
Fixed a security vulnerability in MDM Server HTML documentation generated by the Javadoc tool. Please refer to this documentation link for more information regarding the security vulnerability: http://www-01.ibm.com/support/docview.wss?uid=swg21641206. |
13 |
PMR 48766,697,760 | When client create a contract inline extension by using MDM v10.1 workbench tool, the generated code in EObjXContractExtDataImpl.java would generate duplicate LAST_REVIEW_DT column in the insert-sql code. |
14 |
PMR 86896,004,000 | Fixed code to display webservice response properly with nested extension structure. |
15 |
PMR 81204,122,000 | Fixed code to solve NullPointerException while loading asidefinition data in concurrent. |
16 |
PMR 53149,999,616 | Fixed code to solve NoSuchMethodException in addPartyContactMethod transaction after configure normalization with PhoneNumber extension. |
17 |
PMR 80053,012,649 | Enhanced "unhandledData" logic in PhoneNumberInfoServerConverter. |
18 |
PMR53641,697,760 | Fixed code to make StatusConverter pluggable. |
19 |
PMR 56649,057,649 | Pluggable SQL not using QS standardized firstname and phone on custom search when using phone no , first and last name as search criteria, this result in returning incorrect search result. |
20 |
PMR13119,L6Q,000 | Fixed code to solve NullPointerException while running addPartyContactMethod method with english_lang_id "9". |
21 |
PMR 38307,999,616 | Fixed code to optimize deletePartyAddress method in TCRMPartyAddressComponent. |
22 |
PMR01986,130,702 | Fixed code to process party relationship roles in transaction collapseMultipleParties. |
23 |
PMR45930,228,631 | Fixed code to handle Batch Processor output message id properly for restart option. |
24 | PMR24149,004,000 | In previous releases, SearchPersonProbabilistic and SearchOrganizationProbabilistic will return the same error message 'No record found' when there are no search results found or when the search criteria provided are too common for the search to be executed. In the iFix, if the provided search criteria are too common, the search transactions will now return the error message, 'The search criteria supplied did not result in search buckets'. When this error message is encountered, the requester should provide additional search criteria, especially those corresponding to the bucketing strategy defined for the matching algorithms in MDM Workbench |
25 |
PMR80360,012,649 | With standardization enabled, adding certain last names contains space or hyphen like "Ho Ward" or "Ho-Ward" are not able to be found with a standard search with GivenNameOne and LastName provided in the search request. |
26 | PMR22448,379,000 | addAddress transaction does not validate mandatory input as documented in the transaction reference guide. an addAddress transaction will succeed when ZipPostalCode is not provided and ProvinceStateValue is provided instead of ProvinceStateType in the request. |
27 |
PMR83410,211,788 | Fixed code not to return empty tag of last nullable extension attribute in Web Services. |
28 | PMR26787,211,788 | Address search SQL for duplicate address throws SQL -104 error when CityName is not present. New extension point is needed at SearchAddressValidationRule to allow customizing Address search SQL. |
29 | PMR80451,012,649 | As a result of inaccurate search sql in TCRMSearchSQL class, the searchOrganization service only returns the organizations which have a name with a usage type equal to the first value configured in /IBM/Party/Search/ReturnValue/organizationNameUsageType |
30 |
PMR66633,999,616 | Fixed code to resolve getTransactionLog pagination issue with SQLException of ORA-00923 on Oracle database. |
31 |
PMR 88106,057,649 | Fix code to resolve NULL pointer exception when do the search by name with using pluggable SQL. |
32 |
PMR15307,057,649 | This is the additional fix of 10.1.0.0.5 since it can't read the MDM_INSTANCE_NAME variable from some WAS environment.. The fix again is used to retrieve varaible of MDM_INSTANCE_NAME from applicaton server (e.g WAS) in order to prevent from the "duplication primary keys" error |
33 |
PMR27400,211,788 | Removed DWLExtension element from TCRMInteractionBObjType and TCRMInteractionRelationshipBObjType in MDMCommon.xsd to avoid both TCRMExtension and DWLExtension returned in responses. |
34 | PMR03433,130,702 |
The addPartyRelationshipRole transaction does not check existence of party relationship. As a consequence, an invalid entry is created in ENTITYROLE refering a non-existent Party Relationship ID. Add validation to check if a party relationship exist or not. Return error message if it's inactive or not exist. |
35 | PMR81236,012,649 |
The Nyssiss phonetic key generator creates keys with an incorrect maximum length as defined in TCRM.properties when the generated key length is larger then the specified maximum length. This was fixed in the class Nyssiss to trim the generated key to the correct maximum length. |
36 | PMR03559,130,702 |
When transactions of data addition with subtypes are invoked simultaneously with multiple threads after a server restart, some of these transactions may fail due to NullPointerException. Once the server becomes stable, the NullPointerException won't happen again until the server is restarted. |
37 | PMR04149,130,702 |
When there are a large number of records in MDM code tables, the MDM runtime may exhaust the available memory. With this fix, the code table caching mechanism is enhanced to load and cache only the required records of each code table, instead of loading and caching all records. This fix would also enhance the runtime performance as a result of more memory being available for the services. |
38 | PMR81362,012,649 |
Supplying a literal 'NULL' string for an attribute of any business object extension may produce incomplete resposne xml. This problem is only applicable to webservice calls. |
39 | PMR77707,999,649 |
Fixed code not to send empty TAIL messages to JMS destination when a transaction TAIL is disabled. |
40 | PMR87763,057,649 |
Fixed code to resovle DWLDuplicateKeyException when persisting TAIL. |
41 | PMR91075,019,866 |
Fixed code to make Servcie Activity Monitor thread-safe to avoid logging duplciate rows in transactiondata.log and add a new MDMIDFacroty to avoid duplicate transaction id.. |
42 | PMR03680,130,702 | Fixed code to avoid NullPointerException when running addParty Transaction over SOAP. |
43 | PMR02857,49R,000 | Fixed code to enable deletePartyWithHistory to execute successfully even though the history records are not populated in BIL |
44 | PMR15017,130,702 | Log an additional error message 'MPI_MxmRunSearch: MPI_MemNextSect() failed when processing member(<memrecn>).' to indicate the source member when itegrity error happens. |
Copyright
and trademark information
http://www.ibm.com/legal/copytrade.shtml
Notices
INTERNATIONAL BUSINESS MACHINES
CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some
jurisdictions do not allow disclaimer of express or implied
warranties in certain transactions, therefore, this statement may
not apply to you.
This information could include
technical inaccuracies or typographical errors. Changes are
periodically made to the information herein; these changes will be
incorporated in new editions of the publication. IBM may make
improvements and/or changes in the product(s) and/or the program(s)
described in this publication at any time without notice.
Microsoft, Windows, and Windows Server are trademarks of
Microsoft Corporation in the United States, other countries, or
both.
Intel, Intel logo, Intel Inside, Intel
Inside logo, Intel Centrino, Intel Centrino logo, Celeron, Intel Xeon, Intel SpeedStep, Itanium, and Pentium are
trademarks or registered trademarks of Intel Corporation or its
subsidiaries in the United States and other countries.
Other company, product, or service names may be trademarks or
service marks of others.
THIRD-PARTY
LICENSE TERMS AND CONDITIONS, NOTICES AND INFORMATION
The license agreement for this product refers you to this file for
details concerning terms and conditions applicable to third party
software code included in this product, and for certain notices and
other information IBM must provide to you under its license to
certain software code. The relevant terms and conditions, notices
and other information are provided or referenced below. Please note
that any non-English version of the licenses below is unofficial and
is provided to you for your convenience only. The English version of
the licenses below, provided as part of the English version of this
file, is the official version.
Notwithstanding
the terms and conditions of any other agreement you may have with
IBM or any of its related or affiliated entities (collectively
"IBM"), the third party software code identified below are
"Excluded Components" and are subject to the following
terms and conditions: