Sending Emails from Informatica Cloud Application Integration (ICRT) without using Salesforce.com

A casual search of the Informatica Network Knowledge Base for the terms “send email notification from ICRT process” will yield https://network.informatica.com/thread/52346 in the top results. This is a fine solution if the process is being used with Salesforce or related to a Salesforce integration.

If your integration does not have a Salesforce component to it, you would continue to search and most likely run across KB article 441540 “HOW TO: Email from an Informatica Process Designer (IPD) in ICRT”. I can guarantee this approach will work as I have implemented it successfully after figuring out that:

  1. The BPR deployment targets are reversed (eventually obvious when looking at the file names)
  2. The process must be called from the Secure Agent, meaning to call from an exposed service it must be called as a sub-process

At the end of the steps, the article notes that

“As of Jan 2016 there is no direct service or function exposed that the users could leverage to send an email to some recipient.”

I appreciate that they date the point in time when this is the case as good a documentation best practice. Another best practice I have used is to create a support ticket to check for when an update is available and then update the dated documentation I have published. I recently discovered this is not shared by everyone 😛

If you are reading this now, I suggest you save some time and skip the above references and go to the February 2016 release notes (yup, with just a few weeks of the helpful KB date) and discover the Email Connector that is now available. It does all the same stuff, with the same limitation of needing to call from the Secure Agent, but with much less hassle.

I discovered the availability of the new Email connector when I was putting together reference links in preparation for this article. Using the connector is very straight-forward. The connection configuration screen is mostly intuitive, though you have to select a Specific Agent for the Run On option even though the option for Cloud Server or Any Secure Agent is available in the drop down.

You can download a basic set of example components to see how to use the email functionality here > ICRT_Test_Email_Example.zip. To use the example, follow these steps:

  1. Open TestEmailConnection, select a valid Secure Agent for the Run On setting and update the Connection Properites with valid email server and credential values, then save and publish.
  2. Close the TestEmailConnection, refresh your screen, then open TestEmailProcess and select the same Secure Agent you selected for the TestEmailConnection Run On setting for the Run Process On setting, then save and publish.
  3. Close the TestEmailProcess, refresh your screen, then publish TestEmailGuide.
  4. Finally, click the Run Guide link next to the TestEmailGuide name and see for yourself that it works.

I found no mention of the additional settings described in KB article 441540 in reference to using the connector, and that could be because they are no longer necessary. Note that I did not have an ORG where I had not already used the KB solution and I did not roll back those changes for a start-to-finish test because of the amount of time it would have added to making this article available. You may need to refer to the KB solution for additional settings when adding this functionality to your own ORG.

Facebooktwittergoogle_plusredditpinterestlinkedinmailFacebooktwittergoogle_plusredditpinterestlinkedinmail

Informatica Cloud SAP iDoc Writer Connector GPK and GFK Gotcha

It is great that Informatica provides an SAP iDoc connector rather than having to manage such a complex integration manually. Connector-specific validations happen at the connector level, so it makes sense that the required GFK or GPK fields are validated as having a value at run time rather than design time.

In the version as of this writing, the validation only checks that the fields have values set, and not that the values are valid within the same iDoc. To clarify, the GFK and GPK values specific to a mapping would be impossible for the connector to validate as they are very enterprise-specific. However, while it could be assumed that validation within the specific mapping instance would occur to check if a GFK in one segment matches the GPK of the segment it must relate to, that is not the case. The developer must be careful that these values are set correctly within the mapping and valid between the segments.

Facebooktwittergoogle_plusredditpinterestlinkedinmailFacebooktwittergoogle_plusredditpinterestlinkedinmail

ICRT Process User Roles and URLs

I am in complete agreement with the current wisdom of designing security in from the start. When developing, it is often more expedient to leave the security out until everything else has been tested to reduce the number of parts that need to be evaluated when debugging, and I (for better or worse) take the expedient path most of the time.

Recently I built some Informatica Cloud Real Time (ICRT) Processes intended for use as web services and built them with Anonymous access allowed up until completion, at which point I added the authorized users to the list to lock them down. And then found that they would not run when provided the correct authentication.

I will spare you the many things I looked at to resolve the issue and simply point that my excuse for it taking so long was the nature of the response when calling the service, which was “HTTP Status 403 – User is not authorized to perform operation within tenant context”. With that error my pursuits at debugging were focused on security configuration.

The actual source of the issue is that once the process is deployed requiring authentication, it uses a different URL format. To wit the unauthenticated structure is:

https://[SEGEMENT] .rt.informaticacloud.com/active-bpel/public/soap/[ORG ID]/[PROCESS NAME]

and the authenticated URL is:

https://[SEGEMENT] .rt.informaticacloud.com/active-bpel/soap/[PROCESS NAME].

So, be sure to publish the correct authenticated URL to clients while developing and update your test client when finalizing.

Facebooktwittergoogle_plusredditpinterestlinkedinmailFacebooktwittergoogle_plusredditpinterestlinkedinmail

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.

Facebooktwittergoogle_plusredditpinterestlinkedinmailFacebooktwittergoogle_plusredditpinterestlinkedinmail

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
Facebooktwittergoogle_plusredditpinterestlinkedinmailFacebooktwittergoogle_plusredditpinterestlinkedinmail

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
Facebooktwittergoogle_plusredditpinterestlinkedinmailFacebooktwittergoogle_plusredditpinterestlinkedinmail

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.

Facebooktwittergoogle_plusredditpinterestlinkedinmailFacebooktwittergoogle_plusredditpinterestlinkedinmail

Establishing Address Doctor Web Service Account Password

As part of the Informatica Cloud Master Certification process, there is a series of graded labs to be performed using Address Doctor web services. The web services are very nicely documented, though I struggled for some time about why I was not able to get the initial authentication working. I made the incorrect assumption that the password used to create the dashboard login account is the same as that used for making service calls. It is not.

Perhaps it is only with the free account used for training, but the web service account password was never sent to me. Once I figured out that it was a different password, I then needed to figure out how to change it, which I will share here.

Step 1: Locate your account ID

AD_DQC_PW_SCR01

Step 2: Log out of the Data Quality Center and click the link to Login Using Account ID

AD_DQC_PW_SCR02

Step 3: Click Forgot My Password

AD_DQC_PW_SCR03

Step 4: Provide the Account ID and your Email Address

AD_DQC_PW_SCR04

Step 6: Use the password that is emailed to you to log in and run Web Services

You can change this provide password if you like from the screen where your obtained your account ID.

Facebooktwittergoogle_plusredditpinterestlinkedinmailFacebooktwittergoogle_plusredditpinterestlinkedinmail