*DataStage*DSR_SELECT (Action=3); check DataStage is set up correctly in project

Error

Error

Having encountered this DataStage client error in Linux a few times recently, I thought I would document the solution, which has worked for me.

Error Message:

Error calling subroutine: *DataStage*DSR_SELECT (Action=3); check DataStage is set up correctly in project

(Subroutine failed to complete successfully (30107))

Probable Cause of Error

  • NodeAgents has stopped running
  • Insufficient /temp disk space

Triage Approach

To fix this error in Linux:

  • Ensure disk space is available and you may want clean up the /tmp directory of any excel non-required files.
  • Start the NodeAgents.sh, if it is not running

Command to verify Node Agent is running

ps -ef | grep java | grep Agent

 

Command to Start Node Agent

This example command assumes the shell script is in its normal location, if not you will need to adjust the path.

/opt/IBM/InformationServer/ASBNode/bin/NodeAgents.sh start

Node Agent Logs

These logs may be helpful:

  • asbagent_startup.err
  • asbagent_startup.out

Node Agent Logs Location

This command will get you to where the logs are normally located:

cd /opt/IBM/InformationServer/ASBNode/

Netezza – [SQLCODE=HY000][Native=46] ERROR: External Table : count of bad input rows reached maxerrors limit

SQL (Structured Query Language)

SQL (Structured Query Language)

While helping a customer we encountered the [SQLCODE=HY000][Native=46] ERROR, which was a new one for me. So here are a few notes to help the next unlucky soul may run into the error.

Netezza Error Reason:

  • [SQLCODE=HY008][Native=51] Operation canceled; [SQLCODE=HY000][Native=46] ERROR: External Table : count of bad input rows reached maxerrors limit

What Does the Error Mean

  • In a nutshell, it mean invalid data was submitted and could not be inserted.

What To Do

  • Basically, you need to go to the Netezza logs to see why the rows were reject and resolve input data error, then resubmit your transactions. The logs are temporary and reused, so, you need to get to them before they are over written.

Where Are The Data Logs

  • In linux the logs can be found in /tmp:

For nzload Methods Logs

  • /tmp/database name.table name.nzlog
  • /tmp/database name.table name.nzbad

For External Table Load Logs

  • /tmp/external table name.log
  • /tmp/external table name.bad

Related References

 

What is the URL for InfoSphere Information Analyzer

Information Analyzer Icon

Information Analyzer Icon

This is one of those things, which usually comes up during new installs.   To access the Infosphere information analyzer thin client there are two approaches. First, is via the Infosphere launchpad page and, the second is to go directly to the information analyzer page. Both URLs are provided in below.

InfoSphere LaunchPad URL

https:// <<Host_Server>> : 9443/ibm/iis/launchpad/

Information Analyzer URL 

https:// <<Host_Server>> : 9443/ibm/iis/dq/da/login.jsp

 

 

Related References

InfoSphere Datastage – How to Improve Sequential File Performance Using Parallel Environment Variables

APT_FILE_EXPORT_BUFFER_SIZE and APT_FILE_IMPORT_BUFFER_SIZE in DataStage Administrator

APT_FILE_EXPORT_BUFFER_SIZE and APT_FILE_IMPORT_BUFFER_SIZE in DataStage Administrator

While extensive use of sequential files is not best practice, sometimes there is no way around it, due to legacy systems and/or existing processes. However, recently, I have encountered a number of customers who are seeing significant performance issues with sequential file intensive processes. Sometimes it’s the job design, but often when you look at the project configuration they still have the default values. This is a quick and easy thing to check and to adjust to get a quick performance win, if they’ve not already been adjusted.These are delivered variables, but should seriously be considered for adjustment in nearly all data stage ETL projects. The adjustment must be based on the amount of available memory, the volume of work load that is sequential file intensive, and the environment you’re working in. Some experiential adjustment may be required, but I have provided a few recommendations below.

 

Environment Variable Properties

 

Category Name Type Parameter Name Prompt Size Default Value
Parallel > Operator Specific String APT_FILE_EXPORT_BUFFER_SIZE Sequential write buffer size Adjustable in 8 KB units.  Recommended values for Dev: 2048; Test & Prod: 4096. 128
Parallel > Operator Specific String APT_FILE_IMPORT_BUFFER_SIZE Sequential read buffer size Adjustable in 8 KB units.  Recommended values for Dev: 2048; Test & Prod: 4096. 128

Related References

 

 

InfoSphere DataStage – How to calculate age in a transformer

Age

Age

Occasionally, there is a need to calculate the between two dates for any number of reasons. For example, the age of a person, of an asset, age of an event.  So, having recently had to think about how to do this in a DataStage Transformer, rather in SQL, I thought it might be good to document a couple of approaches, which can provide the age.  This code does it at the year level, however, if you need the decimal digits or other handling them the rounding within the DecimalToDecimal function can be changed accordingly.

Age Calculation using Julian Date

DecimalToDecimal((JulianDayFromDate(<>) – JulianDayFromDate(Lnk_In_Tfm.PROCESSING_DT) )/365.25, ‘trunc_zero’)

Age Calculation using Julian Date with Null Handling

If a date can be missing from you source input data, then null handling is recommended to prevent job failure.  This code uses 1901-01-01 as the null replacement values, but it can be any date your business requirement stipulates.

DecimalToDecimal((JulianDayFromDate( NullToValue(<>, StringToDate(‘1901-01-01’,”%yyyy-%mm-%dd”) ) )  – JulianDayFromDate(Lnk_In_Tfm.PROCESSING_DT)) /365.25, ‘trunc_zero’)

Calculate Age Using DaysSinceFromDate

DecimalToDecimal(DaysSinceFromDate(<>, <>) /365.25 , ‘trunc_zero’)

Calculate Age Using DaysSinceFromDate with Null Handling

Here is a second example of null handling being applied to the input data.

DecimalToDecimal(DaysSinceFromDate(<>, NullToValue(<< Input date (e.g.Date of Birth) >>, StringToDate(‘1901-01-01’,”%yyyy-%mm-%dd”) ) ) /365.25 , ‘trunc_zero’)

 

 

 

 

Netezza Connector Stage, Table name required warning for User-defined SQL Write mode

Recently, while working at a customer site and I encountered an anomaly in the Netezza Connector stage, when choosing ‘User-defined SQL’ write mode, the ‘Table name’ displays a caution / warning even though a table name should not be required.  If you are using a user-defined SQL statement and/or have parametrized your SQL scripts to make the job reusable, each SQL and/or SQL script would have its own schema and table name being passed in.  After some investigation, a workaround was found, which both allows you to populate table name and leverage with different schema and table names within your SQl statement and/or.

Table Name, User-defined SQL, Warning

You will notice, in a screen shot below the ‘User-defined SQL’, ‘write mode’, property has been chosen, a parameter has been placed in the ‘User-defined SQL’ property, and ‘Read user defined SQL from a file’ property has been set to ‘Yes’.  However, yellow triangle displays on the ‘Table name’ property marking it as a required item.  This, also, occurs when placing SQL statements in the User-defined SQL property, whether reading from a file of not.

Netezza Connector User-Defined SQL , Table Name Required , Warning

Netezza Connector User-Defined SQL , Table Name Required , Warning

Table Name, User-defined SQL, Warning Workaround

After some experimentation, the workaround is straight forward enough.  Basically, give the ‘table name’ property something to read successfully, so it can move on to the user-defined SQL and/or user defined SQl file script, which the process actually needs to execute. In the screenshot below, the SYSTEM.DEFINITION_SCHEMA._V_DUAL view was used, so, it could be found, then the script file passed by the parameter runs fine.  Another view or table, which the DataStage user has access to, should just as well.

Netezza Connector, User-Define SQL, Table Name Required Fix

Netezza Connector, User-Define SQL, Table Name Required Fix

Related References

 

Surrogate Key File Effective Practices

Database Table, Surrogate Key File Effective Practices

Surrogate Key File Effective Practices

Here are a few thoughts on effectively working with IBM Infosphere, Information Server, DataStage surrogate key files, which may prove useful for developers.

 

Placement

  • The main thing about placement is that it be in a consistent location. Developers and production support teams should need to guess or look up where it is for every DataStage project. So, it is best to put the surrogate keys in same base path and that each project has its own subfolder to facilitate migrations and to reduce the possibility of human error. Here Is the patch structure, which is commonly use:

Path

  • /data/SRKY/<<Project Name>>

Parameter Sets

  • As a best practice, the surrogate key file path should be in a parameter set and the parameter used in the jobs, as needed.  This simplifies maintenance, if and when changes to the path are required, and during migrations.

Surrogate Key Parameter Set Screenshot – Example Parameter Tab

Surrogate Key Parameter Set Screen Screen

Surrogate Key Parameter Set Screenshot

Surrogate Key Parameter Set Screenshot – Example Values Tab

Surrogate Key Parameter Set Screenshot – Example Values Tab

Surrogate Key Parameter Set Screenshot – Example Values Tab

Surrogate Key Job Parameter Example Path using Parameter

Surrogate Key Job Parameter Example Path using Parameter

Surrogate Key Job Parameter Example Path using Parameter

Permissions

  • DataStage must have permissions to:
    • The entire parent path
    • The project folder, and
    • The surrogate key files themselves.

To ensure the DataStage has access to the path and Surrogate files, ensure:

  • The ‘dsadm’ (owner) and ‘dstage’ (group) have access to folders in the path, with at least a “-rw-r–r–“ (644) permissions level. Keeping the permissions to a minimum can, for obvious reasons,  prevent inadvertent overwrites of the surrogate key files; thus, avoiding some, potentially, serious cleanup.
  • The ‘dsadm’ (owner) and ‘dstage’ (group) have access to the surrogate key files

Surrogate Key File Minimum Permissions

Surrogate Key File Minimum Permissions

Surrogate Key File Minimum Permissions

Productivity Tip – Quickly create a new surrogate key file

Linux

Linux

This productivity tip, is how we can quickly create a new surrogate key file in Linux.  This example is leveraging native capabilities of Red Hat Enterprise Linux (RHEL) to skip a few commands, by using an existing surrogate key file to create a new surrogate file with a minimum of keys strokes and command line entries.

Creating a New Surrogate Key File From an Existing File

The basic process consists of just a few steps:

  1. Navigate to the location of your existing surrogate key files
  2. Copy an existing surrogate file
  3. Empty the new surrogate key file

Navigate to the location of your existing surrogate key files

This step is preparatory step; you will need to look at the path variable for the project you are working with to know where to go.  The actual path to the surrogate files your project can vary by project.

Copy an existing surrogate file

Assuming you have existing surrogate key files configured as needed, the use of the copy (cp) command can and the interactive and preserve options can eliminate the need to create the file, then set groups and permissions.   The interactive (-i) option prevent you from overwriting an existing files, in case you made a filename typo and the preserver (-p) option preserve the specified attributes (e.g. ownership, and permissions).

Basic Command

  • Here is the command formats with interactive and preserve, either format works
    • cp -ip <<FileName to Be Copied>> <<New Filename>>
  • Here is the command formats with only preserve
    • cp -p <<FileName to Be Copied>> <<New Filename>>

Example Command

  • cp -ip srky  blogexampl.srky
Copy Surrogate Key With Permissions

Copy Surrogate Key With Permissions

Empty the new surrogate key file

Setting the newly create surrogate key file to null will empty the file, so, DataStage can begin from the point configure in your DataStage job.

Basic Command

  • cat /dev/null > <<FileName>>

Example Command

  • cat /dev/null > blogexample.srky
Empty Surrogate Key File

Empty Surrogate Key File

Related References

 

Productivity Tip – Changing Owner and Groups on Surrogate Key File

Linux

Linux

 

This practice tip, is how we quickly update surrogate key file owner and group in Linux.  This example is leveraging native capabilities of Red Hat Enterprise Linux (RHEL) to skip a few commands, by using a combined command to set both the owner and group of a surrogate key file in a single command.

Surrogate Key File Owners and Groups

To ensure the DataStage has access to the path and Surrogate files, ensure the ‘dsadm’ (owner) and ‘dstage’ (group) have access to the surrogate key files

Setting Surrogate Key File Owners and Groups

You can change the ownership and group of a surrogate file at the same time, in Linux, with the change owner command. To do this navigate the surrogate key path containing the file, then execute the chown combined command.

Command chown basic format

  • chown <<OWNER>>:<<Group>> <<File Name>>

Example chown command

  • chown dsadm:dstage Blogexampl.txt
Chown On Surrogate Key File

Chown On Surrogate Key File

Related Reference

 

 

Infosphere Datastage – Client Tier Image Requirements

InfoSphere Information Server (IIS) DataStage Client Tools

InfoSphere Information Server (IIS) DataStage Client Tools

A frequent question encountered in the early stages of a client engagement is: what are the recommended Windows Client Tier Image Requirements (Virtual machine image or Desktop)?  However, I have never found this information to be satisfactorily documented by IBM.  So, invariably, we end up providing our best guidance based on experience, which in the case of the normal InfoSphere Information Server (IIS) installation is provided in the table below.

Recommended Developer Client Tier Characteristics

Item Quantity Notes

Application Directory Storage

8 GB or Larger

Memory

6 GB or More This should be a developer images, so, more is better.  Especially, given the other applications, which the developer may also be using simultaneously.
CPU Cores 2 or more This should be a developer images, so, more is better.  Especially, given the other applications, which the developer may also be using simultaneously.

Permissions

N/A Users performing the client software installation, must have full Administrative rights on the Virtual Machine image or individual workstation.

Protection Software

N/A All Firewalls and virus protection software needs to be disabled on the client, while client software installation is in progress.  Also, required Infosphere firewall ports for the client tools must be open to use the tools.

 

Related References

Are the Infosphere Windows Client 32 bit or 64 bit?

InfoSphere Information Server (IIS) DataStage Client Tools

InfoSphere Information Server (IIS) DataStage Client Tools

The question of whether or not the IBM InfoSphere Windows client tools 32 bit or 64 bit, actually, comes up rather frequently. The short answer to the question is that the InfoSphere Windows client tools, actually, are 32 bit applications, will run on supported 64 bit windows system.  This is what IBM calls 64-Tolerate: (32-bit applications that can run in a 64-bit operating system environment), however, the client tools do not run in native 64-bit mode and do not exploit the 64-bit operating environment to improve performance.

Related References

 

IBM InfoSphere Licensing – DataStage and DataQuality

IBM InfoSphere Licensing - DataStage and DataQuality

IBM Infosphere Information Server (IIS)

Licensing is one of the major factors which can limit Infosphere performance, flexibility, and extensibility. Licensing can affect you performance through the type of product which being licensed and the Quality of CPU’s Cores being licensed, and the operating system for the license was purchased.

The Type Of Product For Which Was Licensed Was Or Is Being Purchased

The type of product license purchased reduce your ability to tune and achieve optimal performance by reducing the ability to perform parallel processing.  For Example, the difference between the IBM InfoSphere DataStage licenses:

  • IBM InfoSphere DataStage Server Edition – A standalone ETL solution without full parallel processing framework capabilities.
  • IBM InfoSphere DataStage – Includes parallel processing capabilities to handle a massive volume, velocity, and variety of data.

Also, Information server packs and special environment licenses provide enhanced capability in specific environment scenarios.  For example:

  • IBM InfoSphere DataStage MVS Edition – Provides capability to generate COBOL programs that run natively on the mainframe to access and integrate mainframe data sources to load into a data warehouse.
  • IBM InfoSphere Information Server Pack for Oracle Applications – Allows data extraction from the entire Oracle E-Business Suite of applications, including Oracle Financials, Manufacturing, CRM and others, in a DataStage ETL job.
  • IBM InfoSphere Information Server Pack for PeopleSoft Enterprise – Provides a graphical way to extract data from PeopleSoft Enterprise in a DataStage ETL job.
  • IBM InfoSphere Information Server Pack for Salesforce.com – Enables a no-programming, meta-data based, fully configurable integration between salesforce.com and other enterprise applications and data repositories.

The Quality Of CPU’s Cores For The Licensed Was Or Is Being Purchased

The proper sizing of the license to acquire has a significant effect on DataStage’s ability to leverage the system CPU’s/cores and is frequently undersized.  While there is a balance between cost and performance, under sizing your license can add cost in support, as well as, increase processing times.  Furthermore, most performance issues reported to IBM are with system licensed for less than eight (8) CPU/Cores

Related References

  • Licensed IBM InfoSphere DataStage editions and feature packs activation and deactivation
  • Viewing a list of activated IBM InfoSphere DataStage editions and feature packs

How to Schedule an Infosphere Datastage Job in crontab

This is a quick, easy, shortcut way to schedule an InfoSphere DataStage job in Linux crontab to take advantage of capabilities within crontab not available in the InfoSphere graphical user interface (GUI).

For this example, the job has been adjusted from the stand InfoSphere scheduler graphical user interface (GUI) setting to run every 15 minutes, which is not available in the GUI.

The Basic crontab Scheduling Process

  • Schedule the job in DataStage Director
  • Login into Linux as the user, who created the schedule
  • Run ‘crontab -e’ command
Linux crontab -e

Linux crontab -e

  • Edit crontab command line using VI commands
Edited InfoSphere Crontab Command 5 minute Intervals

Edited InfoSphere Crontab Command 15 minute Intervals

  • Saves changes

 

Note: The revised schedule if different from the InfoSphere scheduler GUI standard setting will not display as changed in the GUI.  However, the jobs will run as scheduled, if edited correctly, and can be verified in the Director Client.

Related links:

Infosphere Datastage – Useful Links

Documentation, Infosphere, information server, Datastage , Useful Links

IIS Datastage – Useful Links

Here are some items, which I have found useful when working with IBM InfoSphere Information Server(IIS) and DataStage.

Documentation

Location

IBM
Infosphere Information Server product documentation

http://www-01.ibm.com/support/knowledgecenter/SSZJPZ/welcome

Infosphere
Datastage Parallel Framework Standard Practices

http://www.redbooks.ibm.com/abstracts/sg247830.html

DSXchange

http://www.dsxchange.com/

IBM
Infosphere Datastage Data Flow and Job Design

http://www.redbooks.ibm.com/abstracts/sg247576.html?Open

IBM
DeveloperWorks

http://www.ibm.com/developerworks/

Infosphere
Information Server, Version 11.5.0.1 for Windows

http://www-01.ibm.com/support/docview.wss?uid=swg24040703

Infosphere
Information Server, Version 11.5.0.1 for Linux

http://www-01.ibm.com/support/docview.wss?uid=swg24040702

Infosphere
Information Server, Version 11.5.0.1 for AIX

http://www-01.ibm.com/support/docview.wss?uid=swg27016382

InfoSphere
Information Server V11.5.0.1 detailed system requirements

http://www-01.ibm.com/support/docview.wss?uid=swg27047977

InfoSphere
Information Server 11.7.0, IBM DataStage Flow Designer
(DataStage/DataQuality Thin Client)

·       https://www.ibm.com/support/knowledgecenter/SSZJPZ_11.7.0/com.ibm.swg.im.iis.ds.fd.nav.doc/containers/cont_iisinfsrv_fd.html

Related References

IIS Datastage Naming Conventions and Standards

Standards, Infosphere, Information Server, Datastage Naming Conventions and Standards

Standards

The standardized naming conventions ease the burden on developers switching from one project to another.  Knowing the names and where things are located are very useful to understand jobs or sequences and aides in the time to productivity of new team members.  This is also true for augmentation resources, which may need to be brought in assist your team.

The following tables identify DataStage elements and their standard naming convention.

Job Naming Conventions

Entity Convention
Parallel Job <<Application>>_<<job_Name>>_Prl
Server Job <<Application>>_<<job_Name>>_Svr
Sequence <<Application>>_<<job_Name>>_Seq
Extract Job  (Multipart processes only) <<Application>>Src<<job_Name>>_<<Job Type (Prl or Svr)>>
Load (Multipart processes only) <<Application>>Load<<job_Name>>_<<Job Type (Prl or Svr)>>
File Generation/Output (Multipart processes only) <<Application>>_FG<<job_Name>><<Job Type (Prl or Svr)>>

 

Properties Naming Conventions

Entity Convention
Parallel Shared Container <<Application>>_<<job_Name>>_Psc
Parameter <<Application>>_<<job_Name>>_Parm
Parameter_set <<Application>>_<<job_Name>>_ParmSet
Server Shared Container <<Application>>_<<job_Name>>_Ssc

Job Processing Stage Naming Conventions

Entity Convention
Aggregator Agg_<<PrimaryFunction>>
Change Apply ChAp_<<PrimaryFunction>>
Change Capture  ChCp_<<PrimaryFunction>>
Copy Cp_<<PrimaryFunction>>
Funnel Funl_<<PrimaryFunction>>
Join (Inner) InJn_<<PrimaryFunction>>
Join (Left Outer) LOJn_<<PrimaryFunction>>
Join (Right Outer) OJn_<<PrimaryFunction>>
Join (Full Outer) FOJn_<<PrimaryFunction>>
FTP Enterprise Ftp_<<PrimaryFunction>>
Lookup Lkp_<< Value Name or table Name>>
Merge Mrg_<<PrimaryFunction>>
Column Export CExp_<<PrimaryFunction>>
Column Import XImp_<<PrimaryFunction>>
Pivot Pivt_<<PrimaryFunction>>
Remove Duplicates RmDp_<<PrimaryFunction>>
Row Generator RGen_<<Job_Name>>
Slowly Changing Dimension SCD__<<PrimaryFunction>>
Sort Srt_<<PrimaryFunction>>
Surrogate Key Generator SKey_<<PrimaryFunction>>

 

Links Naming Conventions

Entity Convention
Reference (Lookup) Ln_Ref_<<Number or Additional descriptor, if needed to form a unique object name>>
Reject (Lookup, File, DB) Ln_Rej_<<Number or Additional descriptor, if needed to form a unique object name>>
Get (Shared Container) Ln_Get_<<Number or Additional descriptor, if needed to form a unique object name>>
Put (Shared Container) Ln_Put_<<Number or Additional descriptor, if needed to form a unique object name>>
Input Ln_In_<<Number or Additional descriptor, if needed to form a unique object name>>
Output Ln_Out_<<Number or Additional descriptor, if needed to form a unique object name>>
Delete Ln_Del_<<Number or Additional descriptor, if needed to forma a unique object name>>
Insert Ln_Ins_<<Number or Additional descriptor, if needed to form a unique object name>>
Update Ln_Upd_<<Number or Additional descriptor, if needed to form a unique object name>>

 

Database Stage Naming Conventions

Entity Convention
Reject Rej_<<Table or Object Name>>
Lookup Lkp_<<Table or Object Name>>
Source Src_<<Table or Object Name>>
Target Tgt_<<Table or objectName>>

Transformer Stage Naming Conventions

Entity Convention
Loop Variable Lv_<<objectName>>
Stage Variable SV Sv_<<objectName>>
Transformer (native parallel) Tfm__<<objectName>>

File Stage Naming Conventions

Entity Convention
Sequential File SF__<<objectName>>
Complex Flat File CFF__<<objectName>>
File Set FS__<<objectName>>
Parallel dataset DS__<<objectName>>
Lookup File Set LFS__<<objectName>>
External Source XSrc__<<objectName>>
External Target XTgt__<<objectName>>

XML & Real-Time Stages Naming Conventions

Entity Convention
RTI Input RTIi_<<objectName>>
RTI Output RTIo_<<objectName>>
XML Input XMLi_<<objectName>>
XML Output XMLo_<<objectName>>
XML Transformer XMLt_<<objectName>>

Sequence Object Naming Conventions

Entity Convention
Sequence <<Application>>_SEQ_<<Application job Stream Name>>
Master Control Sequence (parent) <<Application>>_SEQ_Master_<<Application job Stream Name>>

 

Sequence Stage Naming Conventions

Entity Convention
Error Handler EH_<<PrimaryFunction>>
Job Activity Job_<<PrimaryFunction>>
Nested Condition NC_<<PrimaryFunction>>
Routine Activity Rtn_<<PrimaryFunction>>
Sequencer (All) SeqAll_<<Identifier>>
Sequencer (Any) SeqAny_<<Identifier>>
Notify Notify_<<PrimaryFunction>>
Terminator Activity TA__<<PrimaryFunction>>
Sequence Links (Non-messages) Lnk_<<Number or Description>>
Sequence Links (messages) Msg_<<Number or Description>>

Related References

 

IBM InfoSphere DataStage Migration Checklist

IBM InfoSphere DataStage Migration Checklist

IBM Infosphere Information Server (IIS)

Assuming that your InfoSphere instance has been installed and configured, here is a quick migration checklist to assist in making sure that you have performed the essential tasks.

 

Major Tasks Parent-Tasks Child-task Completion Status
Create Migration Package
Create Database scripts
Export DataStage components
Gather support files
Compress migration package
Baseline migration package in CM Tool
Upload package to target environment
Deploy Database Components
Backup target databases
Deploy database components
Resolve script errors
  Create JDBC, ODBC,  and/or TNSNAMES entries
  Install and Configure RDBMS client on Infosphere server
Load configuration and conversion data (if not loaded by ETL)
Deploy Support Files
  Create File Structures
WSDLs
Certificates
  Surrogate Key Files
  System Administration Scripts
  Job Scripts
  Node Configuration Files
Deploy DataStage Components
  Create Project (if required)
  Configure Project and/or Project Parameters (if required)
Import ETL’s into DataStage
Update Parameters and Parameter sets (if required)
File paths
Database names
Database credentials
Update job properties
File paths
Compile ETL using Multiple Job Compile
Resolve compilation errors
Smoke Test
Finalize CM Baseline