Informatica – Generating Mapping Configuration Tasks in ICRT

Printer-friendly version

Informatica – Generating Mapping Configuration Tasks in ICRT

Informatica exposes an endpoint that allows the generation of new mapping configuration tasks. In order to integrate it into an Informatica process, we need to know more about how an action in a service connection needs to be configured in order to communicate with this endpoint.

Before we attempt to spawn a new mapping configuration task with this endpoint, we require the server URL and a valid session ID. Covering the login endpoint is beyond the scope of this blogpost, so we assume that this action is already in place and provides the output variables serverURL and icSessionID

The way the binding is configured is heavily depended on the use case. For this blogpost, I’m using a scenario I encountered in my last project as an example. We needed to move one specific customer identified by an ID from one database to another. The ID is passed to the process as a parameter. A complete reference on the binding elements for the endpoint can be found here: 

http://community.informatica.com/docs/DOC-3671

Let’s take a look at the underlying mapping:

While the details of DestDB are not relevant for our task, we need to identify the name of the source entity (in our case the customer table), the name of the ID column (in our case “customer_ID”) and its datatype (integer). It is also important that we set the filter on the source to “Fully Parameterized.” The name of the parameter is not important, but I suggest to use a descriptive, generic name, such as “ParamInputFilter.”

Now we go into the Informatica Process Designer and open the target service connector. We click on the Actions tab and add a new action. After giving it a name (e.g. “MoveCustomer”), we click on the Input tab and add the following input fields:

 

Under Binding we fill out the fields as indicated in the next image:

 

Note: the URL is a composition of the server URL (which we will receive from the login action) and the relative path that points to the endpoint generates the new task configuration. We also need to provide the session token in the header and set the binding type to custom.

After selecting custom as a binding type, a new field appears that we use to tailor the content we are going to send to the endpoint. Based on the Informatica documentation, we assembled the following XML document:

<mtTask>

<parameters>

    <parameter>

      <name>$SrcDB$</name>

      <type>EXTENDED_SOURCE</type>

      <text>SrcDB</text>

      <label>SrcDB</label>

 <extendedObject>

            <object>

               <name>Customer</name>

               <label>Customer</label>

               <metadataUpdated>false</metadataUpdated>

               <relations/>

               <children/>

            </object>

            <filters>

               <filter>

                  <field>customer_id</field>

                  <objectName>Customer</objectName>

                  <operator>equals</operator>

                  <type>INT</type>

                  <value>{$id}</value>

               </filter>

            </filters>

            <sortFields/>

         </extendedObject>

    </parameter>

</parameters>

  <name>{$taskName}</name>

  <agentId><INSERT THE ID OF YOUR SECURE AGENT></agentId>

  <mappingId><INSERT THE ID OF YOUR MAPPING></mappingId>

</mtTask>

What we essentially did in this binding is to identify the source object in our mapping and add a filter to it that is determined by the ID parameter we pass to this endpoint. The filter is very simple and ensures that only one row from the customer table (where ID = X) is returned. The other interesting aspect is the name of the task is also determined by an input parameter (taskName). Since task names are unique in Informatica for a particular organization, it wouldn’t be very wise to hard code a name directly into the binding. Instead, we need to calculate a proper task name each time our process is called that ensures the uniqueness of the name to avoid errors due to name collisions. We can either pass a unique task name to the process endpoint and let the client application figure out a unique name or calculate a unique name directly in the process itself. I recommend using a prefix and a GUID that is generated by the function util:generateUUID() within a formula.

Last thing we need to do is to configure the outbound tab. After the successful generation of a mapping task, the endpoint returns its ID, which is very useful for future processing (such as starting it). We can grab it from the “ID” property found in the result. Informatica allows us to bind an output variable to this value:

Now we completed defining the action and it’s ready to be used in one of our processes. A typical chain the process would look similar to this:

About the Author:

TopLine Strategies delivers the complete integration and development of sales, marketing and customer service technologies that enable corporate clientele to improve revenue streams and strengthen customer interactions. Our project management and consulting is designed to achieve timely delivery, 100 percent user adoption of the technologies we implement and deliver measurable returns on investments for our clients.

Comments (0)

Related Blogs

TheReact Native Open Source roadmap was announced in Q4 2018 after they decided to invest more in the React Native open source community.

October is not just about pumpkins, fall foliage, and cooler temps anymore. October 2018 also means the exciting introduction of Microsoft Dynamics 365 for Customer Engagement.

Back in 2016, Microsoft introduced its intentions to refresh its CRM and ERP strategy with Dynamics 365. At the heart of its services was the Common Data Model (CDM).