Saturday, April 11, 2020

Informatica Data Quality - IDQ - How to call Web Service in Java Transformation

In this article, we are going to understand step by step process to create Informatica Data Quality (IDQ) mapping to make external Web Service calls using Java transformation.

A. Overview of mapping

The mapping contains 5 major components. The first component is the source file. We can use a file or a database table as input this mapping which can hold basic information. The second component is an expression to convert input values to make them suitable for Java transformation. The third component is Java transformation which contains logic to make a call the web service. The next component is an output expression to transform the response from Java expression into output format. The last component is a target file or a database table to populate response.

B. Source Component

The source in the mapping can be a flat file or database table. It will contain the input required for Web Service. e.g. Web Service URL, Username, Password, Context etc.

Source File

C. Source Expression

The source expression will be used to convert input values into suitable Java transformation input. e.g. Join multiple sources attributes to create URL, prepare the web service endpoint URL, populate username and password, or any other custom processing etc.

D. Java Transformation

The Java transformation can be used to call external or internal Web Service. In this example, we are going to call external web service.

a) Import jar file

Import all the required files and store at local system or Unix box. The IDQ mapping should read access to these files so that those can be loaded in JVM. Once all the required jars are stored, set the classpath variable under the Advanced section and point it to each of the jar files.

b) Import classes

Import all the java classes which are required to call web service. Here is screenshot with sample java classes used during the Web Service call.

c)  Call Web Service

Once we have all the required information to call Web Service, write a logic to handle the business requirement. In the java logic below, we are calling web service two times. From the first web service call, we are getting the response and sending that response in second web service call and then we are getting the final output.

The sample code is here,

* Author : Abc
* This Java code is used to get status of the the input task and wait until it become 'SUCCESS'

* Input Parameters:
* taskName - Input taskflow
* urlSubmit - Web service endpoint to get RunId for input taskflow
* urlGetStatus - Web service endpoint to get status using RunId
* loginUid - Userid for authentication
* loginPwd - Password for authentication

       try {
        // Step 1: Get RunId using Web Service endpoint and task name
String url = "https://localhost:8080/TaskName";
// String url = urlSubmit + taskName;
        String name = "abcuser";
       // String name = loginUid;
       String password = "abcpassword;
       // String password = loginPwd;
        String authString = name + ":" + password;
        String authStringEnc = Base64.getEncoder().encodeToString(authString.getBytes());
        Client restClient = Client.create();
        WebResource webResource = restClient.resource(url);
        ClientResponse resp = webResource.accept("application/json").header("Authorization", "Basic " + authStringEnc).get(ClientResponse.class);       
        String stTaskIdMessage = resp.getEntity(String.class);
        // Step 2: Parse response to get RunId from Web Service for given task
        JSONParser jsonParser = new JSONParser();
        JSONObject jsonObj = (JSONObject) jsonParser.parse(stTaskIdMessage);
        String stRunId = (String) jsonObj.get("RunId");
        // Step 3: Call Web service endpoint to get status of input taskflow and check if it not in 'RUNNING' state. 
        // If it is in RUNNING stage, wait until the state changes.
        boolean isRunning = true;
        String stStatus = "";
        while (isRunning) {
          String url2 = "https://localhost:8080/task/status/"+stRunId;
             WebResource webResourceStatus = restClient.resource(url2);
             ClientResponse respStatus = webResourceStatus.accept("application/json").header("Authorization", "Basic " + authStringEnc).get(ClientResponse.class);
             String stStatusMessage = respStatus.getEntity(String.class);
             JSONObject jsonStatusObj = (JSONObject) jsonParser.parse(stStatusMessage);
             stStatus = (String) jsonStatusObj.get("status");
             if (!stStatus.contentEquals("RUNNING") ) {
              isRunning = false;
      } else {
      Thread.sleep(10000); // Value is in millisecond. Currently it is set for 10 seconds

        runId = stRunId;
status = stStatus; // Return status to output field.
catch (Exception e)  { // Required to handle exception which is thrown from JSON Parser.

d)  Call Web Service

The full source code can be accessed from Java -> Full code. This will give broader view of how the Java code executed at run time.

e) Compile code

Once the code completed then compile to code in order to generate .class files load in the memory. In order to compile the code user section - Advanced -> Properties -> Compilation

E. Output Expression

Create output expression to translate the output from Java transformation into the output file or database table.

F. Output Component

Create output file or database table in order to populate the final response output. The output can be used for business use purposes.

Wednesday, April 1, 2020

Top 5 indicators in the Informatica MDM

Are you looking for details about what are the different types of indicators used in the Informatica Master Data Management (MDM) system? Are you also interested in knowing what are the valid values for these indicators and what those values mean? If so, then you reached the right place. In this article, we will understand different indicators such as HUB_STATE_IND, CONSOLIDATION_IND, etc and their values in detail.

Indicators in the Informatica MDM:
Informatica MDM maintains several types of indicators and those are used during internal MDM processing. The indicators maintained in the MDM system are


A)  HUB_STAE_IND indicator
This field present in BO, XREF tables. These indicator fields represent whether the record is in the active, deleted or pending state.
Active Record
Pending Record
Inactive Record


This filed present in the BO table. This indicator field represents whether the record is gone through the match process or not.

The new record (Unmerged record)
The record has gone through the match process and ready for consolidation
Queued for the Merge process
Consolidated or Golden record
The record is on hold. Normally data steward keep records on hold

C)  DIRTY_IND indicator

This field present in the BO table but it is no more in used. It was used for the tokenization process in the earlier release. But now instead of this field, <BO>_DRTY table is used for the tokenization process. Valid values are 1 and 0 for this field. 0 means record is ready for tokenization and 1 means record went through tokenization process.

D)   DELETED_IND indicator

This field present in BO and XREF Tables. It is reserved for future purposes.

E)   AUTOMERGE_IND indicator

This field present in MTCH and HMRG tables. The valid values are 0 and 1.

Records are queued for auto-merge
Records are queued for manual merge

Monday, February 3, 2020

Informatica MDM - Important SQL Query: How to pull all the records from HMRG Table

There are some business use cases during which you may need to analyze data from the HMRG table i.e. History of Merge. Assume that you know the match rule number and Match rule set name then you can use the query below to pull records specific to match rule number from HMRG table.

select * from cmx_ors.c_bo_party_hmrg where rowid_match_rule in
(select rowid_match_rule from cmx_ors.c_repos_match_rule where rowid_match_set in (
select rowid_match_set from cmx_ors.c_repos_match_set where match_set_name='ORG_IDL') and rule_no=1

In this query,
rule_no=1 is a rule number from MDM hub for which we are looking for information
match_set_name='ORG_IDL' is a match set name from MDM hub under which rule_no=1 is present.

The above query will result in all records which satisfy the condition. We can join the result with parent party table and fetch other business attributes as per business needs.

Informatica MDM - The differences between Subject Area based IDD Application and Entity 360 application

Are you looking for details about the differences between Subject Area based IDD Application (aka Legacy IDD Application) and Entity 360 application? Would you be interested in knowing what are the limitations of Entity 360 application? Are also interested to know what are the great features of Entity 360 application? If so, then you reached right place. In this article we will discuss the differences between Subject Area based IDD application and Entity 360 application.

IDD Data View
IDD Business Entity
Use of IDD User Exits
1.       Integral part of IDD Configuration
2.       Easy to implement customization
3.       Easy to deploy as component of IDD
4.       No separate resource configuration required, resources allocated to IDD will be used for User Exist
5.       Error handling follows MDM standard practice, no additional handling is required
6.       No additional security required as it integral part of IDD Application
No User Exit support
1.       Need to write external services (Restful or SOAP based Web Services)
2.       Required additional efforts to build and implement and deploy these external services
3.       For scalability, high availability of external services, additional dedicated servers are required
4.       Need to apply and maintenance security  as these are external services to IDD Business entity
5.       Extra error handling is required to follow MDM standard practice
6.       Extra configuration is required to call external services
7.       Dedicated resources need to be allocated to handle user requests
Fuzzy Search
Extended search functionality using MDM Match Engine to achieve fuzzy search
Elastic search uses Synonym properties file to achieve fuzzy search.
Note: We need to maintain fuzzy keywords in the Synonym file in order to Fuzzy search work.
Data Import template
IDD Data View provides feature to import data. It is very helpful tool when business would like to import bulk data in need basic. No need to create or update requires manually
Do not support Bulk import template.
Need to create or update bulk volume of data manually
Unmerge functionality
It supports both Tree unmerge and linear unmerge.
Note: During Tree unmerge unmerged unmerge records get separated from group. During linear unmerge children records of unmerged record remain associated.
Supports only Tree unmerge
Easy to integrate repots in the IDD application using Jasper Reports
Jaspersoft reports work in a Home page only if it is the only component in the Home page.
If IDD application includes workflows, we must generate the business entity schema as a requirement for Data Director to manage the workflow tasks. However, we need to migrate to business entities
The business entity schema will be generated as part of Business Entity application publish event using Provisioning Tool.
Both Entity and IDD Data Views- Hybrid mode
Informatica recommends that you the Hybrid mode only on a temporary basis
Manual Override of matched record
Manual override  of a value in the Matches view is allowed
Manual override a value in the Matching Records view is not allowed
Hierarchy View
Hierarchy relationships can be configured to show in a section to show duplicate hierarchy records.
The Hierarchy view does NOT permit the following actions:-
·         Finding a duplicate entity.
·         Initiating a merge.
·         Sharing a bookmark URL
1.       In the task inbox on the Home page, you cannot filter tasks by the creation date.
2.       When you export search results that are based on a timeline, the export process ignores the timeline and exports all data.
1.       The Cross Reference page and the Merge Preview page have pagination issues.
2.       In the search results, some rows are empty. The rows represent records that are filtered out because the user does not have permission to view the records.
3.       When a user role does not include the create and read privileges for a business entity, users with this role can still view the tasks associated with the business entity.
4.       In the History view, the timescale labels in the Options menu do not appear correctly initially.
5.       In the Hierarchy view, business entities in the Relationships tab of the history do not open in Business Entity view.
6.       In the Timeline view, you cannot open the relationship records that appear on the Relationships tab.
7.       In the Hierarchy view, in the Entity Details dialog box, when you click More Details, the dialog box closes without opening the selected business entity.
8.       In the Matching Records view, when you merge records, the system can appear unresponsive.
9.       If you delete a record and then search for the record, the ROWID of the deleted record still displays.
10.   In the History view, when you try to view an event detail, an error might occur.

Revolutionizing Healthcare Delivery with Parachute Health

  In the rapidly evolving landscape of healthcare technology, innovations continually emerge to streamline processes and enhance patient car...