9 Generating a Deployment Plan for ODI

This chapter includes the following sections:

9.1 Introduction to Generating a Deployment Plan for ODI

The deployment plan is used to perform the required configurations and deploy the services to the Fusion Middleware server using the AIA Installation Driver. Figure 9-1 illustrates the flow for generating deployment plans for ODI.

Figure 9-1 Generate Deployment Plans for ODI

The image is described in surrounding text

For more information about deployment plans, see Chapter 8, "Generating Deployment Plans and Deploying Artifacts."

9.2 Generating the BOM for ODI

ODI BOM is a hand-coded xml file with the list of artifacts to be imported to ODI along with the list of tokens to be replaced and encrypted. This ODI BOM is provided as input to the Deployment Plan Generator to generate the ODI deployment plan.

9.2.1 Understanding the ODIBOM.xml File

The ODIBOM.xml file consists of the following information:

  1. Passwords to be encrypted in the ODI artifacts.

  2. Tokens to be replaced during deployment time in the ODI artifacts.

  3. The path elements of the master and work repository files to be imported into ODI.

Example 9-1 shows the structure of a sample ODI BOM.

Example 9-1 Sample ODI BOM

<?xml version="1.0" encoding="UTF-8"?>
    
<PipOdi xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
projectCode="ODISample">
<!-- WORK & MASTER REPOSITORIES  -->    
 <Repositories>     
  <MasterRepositoryLocation>${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/master</MasterRepositoryLocation>
  <WorkRepositoryLocation>${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/work</WorkRepositoryLocation>
</Repositories>
 
<CopyDvmstoODIPath>
    <fileset dir="${AIA_
HOME}/PIPS/Industry/Communications/DIS/Collections/setupxmls/">
        <include name="COLLECTION_ACTIONNAME.xml"/>
    </fileset> 
</CopyDvmstoODIPath>
<ODIReplaceTokens>
    <property>siebel.db.username</property>
    <property>brm.username</property>
    <property>ebiz.db.username</property>
</ODIReplaceTokens>
<ODIEncryptPasswords>
    <property>siebel.db.password</property>
    <property>brm.password</property>
    <property>ebiz.db.pwd</property>
</ODIEncryptPasswords> 
<!-- Exported ODI files -->
 <!--  Master Repository objects -->
 <MSTREP_Grp>
<path id="masterFiles" >
     <pathelement location="${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/master/CONT_Global.xml"/>
     <pathelement location="${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/master/CONT_RETL_TO_PSFT.xml"/>
     <pathelement location="${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/master/CONT_RETL_TO_PSFT_DB2.xml"/> 
     <pathelement location="${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/master/CONN_PEOPLESOFTDS.xml"/>
     <pathelement location="${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/master/CONN_PSFT_DB2_DS.xml"/>
     <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/master
/LSC_Peoplesoft.xml"/>
     <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/master
/LSC_PSFT_DB2_LogicalSchema.xml"/>
     <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/master
/LSC_Retail.xml"/>
</path> 
 </MSTREP_Grp>
 
 <!-- Work Repository files-->
 <WRKREP_Grp>
<path id="workFiles" >
   <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work/MFOL_
OracleRetailToPeopleSoft.xml"/>
   <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work/MFOL_
ReIMToPeopleSoftAccountingEntry.xml"/>
   <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work/MFOL_
ReIMToPSFTInvoice.xml"/> 
   <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work/MFOL_
RMSToPeopleSoftAccountingEntry.xml"/>
   <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work/CONN_
PSFT_DB2_DS.xml"/>
   <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work/PROJ_
ReIMToPeopleSoftInvoiceProject.xml"/>
   <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work/PROJ_
ReIMToPSFTAcctEntryProject.xml"/>
   <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work/PROJ_
RMSToPSFTAcctEntryProject.xml"/>          
</path>
 </WRKREP_Grp> 
</PipOdi>

9.2.2 Understanding the Sections in the BOM.xml

This section discusses how to use the sections in the BOM.xml.

9.2.2.1 ODIReplaceTokens

The ODIReplaceTokens section lists the tokens that are to be replaced in ODI artifacts. In AIA 2.x versions, all tokens for artifacts are available as $<token name>$. Change this to <token name>. Token name should be same as the xpath of the property in AIAInstallProperties.xml. Example 9-2 shows an example for a property.

Example 9-2 Structure of a Property in AIAInstallProperties.xml

<pips>
 <siebel>
  <db>
   <jdbc-url>xyz</jdbc-url>
  </db>
  </siebel>
</pips>
 

The above property value in the ODI artifacts should be tokenized with the xpath of the property in AIAInstallProperties.xml, which is, pips.siebel.db.jdbc-url.

9.2.2.2 ODIEncryptPasswords

The ODIEncryptPasswords section lists the passwords that are to be encrypted in ODI artifacts. The password property should be same as the xpath of the corresponding property in AIAInstallProperties.xml. Example 9-3 shows an example for the structure of a password field.

Example 9-3 Structure of a Password Field in AIAInstallProperties.xml

<pips>
 <siebel>
  <db>
   <password>xyz</password>
  </db>
  </siebel>
</pips>
 

9.2.2.3 CopyDvmstoODIPath

The CopyDvmstoODIPath section lists the DVMs that are to be copied to the odi.dvm.path location. List all of the files using the filename tag within the fileset tag. You can have multiple fileset tags within the CopyDvmstoODIPath element.

9.2.2.4 MSTREP_Grp

The MSTREP_Grp section lists the files that are to be imported to the master repository. List all the files using the pathelements inside path tag. They should be listed in the same order in which they must be imported to ODI.

9.2.2.5 WRKREP_Grp

The WRKREP_Grp section lists the files that are to be imported to the work repository. List all the files using the pathelements inside path tag. They should be listed in the same order in which they must be imported to ODI.

9.3 Generating a Deployment Plan for ODI

The command to generate a deployment plan for ODI is similar to the command to generate a deployment plan for the Project Lifecycle Workbench BOM. You must add -DODIinput variable.

To generate a deployment plan for ODI, execute the following steps:

  1. Set environment variables running the command specific to your platform.

    • source <AIA_HOME>/aia_instances/<instance_name>/bin/aiaenv.sh for Linux or Unix based systems.

    • <AIA_HOME>/aia_instances/<instance_name>/bin/aiaenv.bat for Microsoft Windows.

  2. Run the following command for executing Deployment Plan Generator. This can be executed from any location:

ant –f <AIA_HOME>/Infrastructure/Install/AID/AIADeploymentPlanGenerator.xml -DODIinput=<ODI BOM file name along with absolute path of the file> -DDeploymentPlan=<Destination path of the generated DeploymentPlan>

To generate a combined Deployment Plan for Project Lifecycle Workbench BOM and ODI BOM, execute the following command:

ant –f <AIA_HOME>/Infrastructure/Install/AID/AIADeploymentPlanGenerator.xml -Dinput=<BOM file name along with absolute path of the file> -DODIinput=<ODI BOM file name along with absolute path of the file> -DDeploymentPlan=<output path for the Deployment plan along with file name> -DHarvesterSettings=<output path for the runtime Harvester setting file along with file name>

Note:

While generating a combined Deployment Plan, ensure that the <PIP_Name> attribute in the root tags of both BOMs is the same. The Deployment Plan Generator generates a single deployment plan for both the Project Lifecycle Workbench BOM and ODI BOM.

9.3.1 Understanding the ODI Deployment Plan

Once you generate a deployment plan for the sample ODIBOM.xml file discussed in Section 9.2, "Generating the BOM for ODI" the deployment plan shown in Example 9-4 is generated.

Example 9-4 Sample Deployment Plan

<DeploymentPlan component="ODISample" version="3.0">
<Configurations>
   <replace token="siebel.db.username"   value="${siebel.db.username}"    
dir="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/master" />
   <replace token="siebel.db.username"   value="${siebel.db.username}"    
dir="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work" />
   <replace token="brm.username"   value="${brm.username}"   dir="${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/master" />
   <replace token="brm.username"   value="${brm.username}"   dir="${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/work" />
   <replace token="ebiz.db.username"   value="${ebiz.db.username}"   dir"${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/master" />
   <replace token="ebiz.db.username"   value="${ebiz.db.username}"   dir"${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/work" />
<UpdateOdiParams projectCode="ODISample" />
   <OdiEncrypt property="siebel.db.password"   
masterRepositoryLoc="${AIAHome}/PIPS/Core/DIS/RetailToPSFTFin/master"    
workRepositoryLoc="${AIAHome}/PIPS/Core/DIS/RetailToPSFTFin/work" />
   <OdiEncrypt property="ebiz.db.password"   
masterRepositoryLoc="${AIAHome}/PIPS/Core/DIS/RetailToPSFTFin/master"    
workRepositoryLoc="${AIAHome}/PIPS/Core/DIS/RetailToPSFTFin/work" />
   <OdiEncrypt property="brm.password"   
masterRepositoryLoc="${AIAHome}/PIPS/Core/DIS/RetailToPSFTFin/master"    
workRepositoryLoc="${AIAHome}/PIPS/Core/DIS/RetailToPSFTFin/work" />
<copy todir="${odi.dvm.path}">
   <fileset dir="${AIA_
HOME}/PIPS/Industry/Communications/DIS/Collections/setupxmls/">
        <include name="COLLECTION_ACTIONNAME.xml"/>
    </fileset>
</copy>
 
</Configurations>
<Deployments>
<OdiImportObject import_mode="SYNONYM_INSERT_UPDATE" />
   <path id="masterFiles" >
     <pathelement location="${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/master/CONT_Global.xml"/>
     <pathelement location="${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/master/CONT_RETL_TO_PSFT.xml"/>
     <pathelement location="${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/master/CONT_RETL_TO_PSFT_DB2.xml"/> 
     <pathelement location="${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/master/CONN_PEOPLESOFTDS.xml"/>
     <pathelement location="${AIA_
HOME}/PIPS/Core/DIS/RetailToPSFTFin/master/CONN_PSFT_DB2_DS.xml"/>
     <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/master
/LSC_Peoplesoft.xml"/>
     <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/master
/LSC_PSFT_DB2_LogicalSchema.xml"/>
     <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/master
/LSC_Retail.xml"/>
   </path>
</OdiImportObject>
<OdiImportObject workrepname="${pips.ODISample.odi.workrep.name}"  import_
mode="SYNONYM_INSERT_UPDATE" />
   <path id="workFiles" >
     <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work
/MFOL_OracleRetailToPeopleSoft.xml"/>
     <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work
/MFOL_ReIMToPeopleSoftAccountingEntry.xml"/>
     <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work
/MFOL_ReIMToPSFTInvoice.xml"/> 
     <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work
/MFOL_RMSToPeopleSoftAccountingEntry.xml"/>
     <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work
/CONN_PSFT_DB2_DS.xml"/>
     <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work
/PROJ_ReIMToPeopleSoftInvoiceProject.xml"/>
     <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work
/PROJ_ReIMToPSFTAcctEntryProject.xml"/>
     <pathelement location="${AIA_HOME}/PIPS/Core/DIS/RetailToPSFTFin/work
/PROJ_RMSToPSFTAcctEntryProject.xml"/>          
   </path>
</OdiImportObject>
</Deployments>
 

The macros in the generated deployment plan handle the following tasks.

9.3.1.1 OdiImportObject

The OdiImportObject macrodef shown in Example 9-5 imports the contents of an export file into a repository. This macrodef internally invokes the OdiImportObject utility provided as a part of Oracle Data Integrator tools.

Example 9-5 Sample Syntax of OdiImportObject

<OdiImportObject  workrepname="<work_rep_name>"  import_mode="SYNONYM_INSERT_
UPDATE" >
  <path id="workFiles" >
   <pathelement location="${AIAHome]/PIPS/Core/DIS/RetailToPSFTFin/src/work/MFOL_
OracleRetailToPeopleSoft.xml"/> 
   <pathelement location="${AIAHome]/PIPS/Core/DIS/RetailToPSFTFin/src/work/MFOL_
ReIMToPeopleSoftAccountingEntry.xml"/>
  </path>
</OdiImportObject>
 

import_mode is optional. If you do not include import_mode, the value will be set to SYNONYM_INSERT_UPDATE. You should include all the names to be listed using the pathelement tags. For the master repository files, workrepname attribute should not be present.

9.3.1.2 OdiEncrypt

The OdiEncrypt macrodef encrypts the passwords and replaces the password tokens in the ODI artifacts with the encrypted values. When AIA Install Driver is launched it decrypts all of the values in AIAInstallProperties.xml and loads them into memory. Using OdiEncrypt macrodef, the values in memory will be encrypted and the files in master and work repository directories are updated with the new values.

Syntax of OdiEncrypt:

<OdiEncrypt property="<property name in AIAInstallProperties.xml>" masterRepositoryLoc="" workRepositoryLoc="" />

9.3.1.3 UpdateOdiParams

UpdateOdiParams macrodef updates the odiparams.sh(bat) script under $ODI_HOME/agent/bin with the current ODI server details. It picks up the required properties from AIAInstallProperties.xml. The password fields will be encrypted using the $ODI_HOME/agent/bin/encode.sh(bat) script. The syntax of UpdateOdiParams will be as below:

<UpdateOdiParams projectCode="ODISample"/>

The replace tokens, UpdateOdiParams, ODIEncrypt and Dvm Copy tags are generated in the Configurations section. The ODIImportObject tags that are used for ODI artifacts import are generated in the Deployments section.

Once the deployment plan is generated, deploy the services using commands specified in Section 8.5, "Deploying Artifacts"