Monday, July 23, 2012

Parties not merging in MDM 10 (with Initiate Matching)

I have a default MDM 10 instance with the Initiate engine turned on, which I am using for a demo (as discussed in a previous entry).  I added three very similar parties, with suspect processing enabled, and they did not merge as expected using default matching rules (they have identical SSNs and addresses, and similar names).



I ran createSuspects using the IVT - no dice.  No suspects were generated.  So I went to the version 10 developers guide for the party domain, and did some investigation.  In order to properly perform suspect processing, the Initiate engine and MDM need to be kept in sync.  In fact, a new transaction "synchronizeeMe" was included for this very purpose.  I also found that the Evergreen Console from v9 has been updated to include this transaction (so I can run all parties through standardization, synchronization, create suspects, and collapse).


This accomplished what I was looking for - my parties created suspects and collapsed into one.  The Initiate engine tables were populated with values for future matching.  However, what if I want the synchronization step to be automatic?  I can perhaps understand why I might want the sync step controllable if I am running a batch load with many threads, and the synchronization might affect performance adversely.  But for a demo, where we want to show off features as simply as possible, I wanted it to be automatic.

Fortunately, the developers' guide has a solution for this as well via the CONFIGELEMENT table.

update configelement set value='true',last_update_dt = current_timestamp where name = '/IBM/DWLCommonServices/DerivedDataSynchronization/enabled';

Once I updated this value and recycled MDM, I emptied my database of operational data and re-ran the batch.  All parties merged!  

Note that only 1 party is in the contact table.  I inserted 3 records, so we wound up with the desirable result: 1 add and 2 updates.

By the way, don't forget to clean out the Initiate tables (EME_RECBKTD, EME_RECCMPD, EME_RECHEAD) when you are cleaning operational data from your system.  You will otherwise get an error if the deleted parties match with any new ones.

MDM 10 - DSUI Can Add But Not View Parties / getParty issues

I have been working on a VM for a Demo for my company lately and encountered this issue.  We installed MDM 10 (with Initiate Matching Engine) along with the DSUI on an RHEL instance on a VM.  DB2, MQ, and WAS ND are present as well with all security options turned on.

I can add a party just fine, but when I go to read or search for parties, I get an error.


In the above picture you can see the screen after hitting submit on Add.  The DSUI, under the covers, does an addParty and a subsequent getParty.  The addParty was successful (I turned on XML tracing to verify).

I traced the results to the OTS in the default v10 installer.  I never found out exactly what the issue was but was able to turn off OTS and have successful getParty calls.

To do this, open up tcrm_extension.properties and modify the optimized.sql property so it says "false".


I'm interested in finding out what was wrong with the OTS but this allowed me to continue.

Tuesday, July 17, 2012

Content Is Not Allowed In Prolog

I have gotten this error many times, and most of the time the issue comes from some accidental leading characters in the XML request to MDM.  However today, while migrating from one database to a brand new one, I got the error.  However, I validated my XML was clean.

Here is what the debug log:







From the logs, you can see that the configuration piece is not working (messages like getConfigItem: Item Name /IBM/DWLCommonServices/MultiTimeZoneDeployment/enabled cannot be found!).  It turns out when I did my export/import of the configuration tables from the old database (APPSOFTWARE, CONFIGELEMENT, APPDEPLOYMENT), the LOB(s) in APPSOFTWARE did not come in.

I used the .del format in my original import and changed to use .ixf

C:\CONFIGDATA>db2 export to appsoftware.ixf of ixf lobfile lob1 select * from ap
psoftware
SQL3104N  The Export utility is beginning to export data to file
"appsoftware.ixf".

SQL3105N  The Export utility has finished exporting "1" rows.


Number of rows exported: 1

{{CONNECT TO THE NEW DATABASE}}

C:\CONFIGDATA>db2 import from appsoftware.ixf of ixf insert into appsoftwar
SQL3150N  The H record in the PC/IXF file has product "DB2    02.00", date
"20120717", and time "121406".

SQL3153N  The T record in the PC/IXF file has name "appsoftware.ixf",
qualifier "", and source "            ".

SQL3109N  The utility is beginning to load data from file "appsoftware.ixf"

SQL3110N  The utility has completed processing.  "1" rows were read from th
input file.

SQL3221W  ...Begin COMMIT WORK. Input Record Count = "1".

SQL3222W  ...COMMIT of any database changes was successful.

SQL3149N  "1" rows were processed from the input file.  "1" rows were
successfully inserted into the table.  "0" rows were rejected.


Number of rows read         = 1
Number of rows skipped      = 0
Number of rows inserted     = 1
Number of rows updated      = 0
Number of rows rejected     = 0
Number of rows committed    = 1
--------------

Note, I had to delete configelement & appinstance before adding these rows, then add them back due to foreign key dependencies.

Things seem to work fine now.