Sometimes Two Processes are Better than One

This is a short post to save people the time of discovering that what is usually thought to be more efficient is not in one case…

I’m working on some ETL integrations where the source is sometimes so complicated that it is too painful to work with it within the Informatica Cloud Mapping Designer. Fortunately, the customer also has Informatica Cloud Real Time, which has some handy APIs for accessing and re-arranging data from ReST and SOAP services. In one particular case I need to get check each record before sending the result set to a Mapping Task. I followed an example where one process calls a sub-process that is designated to apply to only the object type of the record being processed (a simplified version is depicted below).

Top Process calling Sub-Process for a List
Top Process calling Sub-Process for a List
Sub Process that Writes a Particular Object Type to a file.
Sub Process that Writes a Particular Object Type to a file.

This worked as described, though looking at the resulting process, it seemed that I could eliminate the sub-process by recursing the file writer call inside the first process.

One Recursive Process Writing a List to a File
One Recursive Process Writing a List to a File

The recursion approach worked, but it was much, much slower than the approach of handing off the file writing task to the sub-process. This seemed unexpected given the minimal processing being done, but there you have it.

If you found this interesting, please share.

© Scott S. Nelson

Why Fat Browser Clients are Evil

I spent nearly an hour trying to figure out what was wrong with the deployment package:

Start Import...
Start Import…
Import error message...
Import error message…

When I went to another tab in the browser, the answer became obvious:

What we have here is a failure to communicate!
What we have here is a failure to communicate!
If you found this interesting, please share.

© Scott S. Nelson

How to Encrypt and Transmit Files in Informatica Cloud with a Single Mapping Object

Recently I had the need to encrypt a file before sending it via FTP. A colleague of mine (JayJay Zheng) had discovered that a Mapping object could perform an FTP by configuring the Source transformation with a File Processor connection and then entering the FTP connection details as Query Options on the connection as shown below:

SFTP with a Mapping Object
SFTP with a Mapping Object

When it came time to encrypt the file prior to transmission, I found KB 476543, HOW TO: Encrypt the data in Data Synchronization task within Informatica Cloud, which did the trick. But in a later design review session, the same colleague pointed out that the number of objects to be maintained could be reduced by using the same Mapping configuration approach as done for FTP with the encryption and running them in sequence within the mapping:

Encrypt and FTP in one Mapping with Piping
Encrypt and FTP in one Mapping with Piping
If you found this interesting, please share.

© Scott S. Nelson

How Not to Miss Your New Informatica Cloud Connection

Today I was faced with a requirement clarification where the target of a File Connector needed to be on a network drive rather than on the SecureAgent server. This is pretty straightforward on Linux where you simply mount the network drive and point to the mount point, but this was a Windows installation which I have not worked with much lately.

To be cautious, I made copies of my working objects to test the change before updating something that I knew worked, specifically the Mapping and Flat File Connection. The change failed, with the cryptic error message “Invalid mapping import and no import log generated.”

I will spare you the various things I tried that caused me to thump my head on my desk repeatedly.

Turns out, when you change the Connection for the same type of Connection, even though the Object name remains unchanged on the screen, if you click the Select button next to the Object name you will find that the Target Object has been reset to the default, which is an existing file. Perfectly fine for updating an existing file, but not so great when your goal is to generate a new file each time. The fix is to set it back afterwards. Screens below for clarification:

Before Connection Change
Before Connection Change
After Connection Change
After Connection Change
If you found this interesting, please share.

© Scott S. Nelson

One More Solution to “Integrated Weblogic domain was not built successfully” on Windows

If you search for this issue you will find all sorts of fixes that actually work. To summarize the two key ones:

  1. Exit JDeveloper, delete [JDEV_USER_HOME]\system11.1.1.9.40.66.73\DefaultDomain
  2. Make sure the path to [JDEV_USER_HOME] contains no spaces or dots

Another, newer “common” issue is solved by:

I’m running Windows 7, so the Jython fix was not for me, and the first two I have used successfully in the past, but they failed me today. Before giving up entirely and going to a pre-build VM fall-back position, I opened up [MIDDLEWARE_HOME]\Middleware11119\wlserver_10.3\common\bin\commEnv.cmd and found something funny (not “ha ha” funny but “&#%!@?!” funny). Instead of the JAVA_HOME path I provided during the JDeveloper Studio installation that is also reflected in the Help > About > Properties it has the path from System properties placed there by an Oracle 12c installation.

So I changed the JAVA_HOME in commEnv.cmd, deleted [JDEV_USER_HOME]\system11.1.1.9.40.66.73\DefaultDomain one more time and was off and running.

If you found this interesting, please share.

© Scott S. Nelson