12Sample Configuration and Script Files

Sample Configuration and Script Files

This chapter provides examples of the following:

Sample Configuration Files

This topic provides examples of the following configuration files:

  • ssadq_cfg.xml, which is used by Oracle Data Quality Matching Server

  • ssadq_cfgasm.xml, which is used by Oracle Data Quality Address Validation Server

    ssadq_cfg.xml

    The ssadq_cfg.xml file is used by Oracle Data Quality Matching Server. An example ssadq_cfg.xml file follows.

    <?xml version="1.0" encoding="UTF-16"?>
    <Data>
       <Parameter>
          <iss_host>hostName</iss_host>
       </Parameter>
       <Parameter>
          <iss_port>1666</iss_port>
       </Parameter>
       <Parameter>
          <rulebase_name>odb:0:userName/passWord@connectString</rulebase_name>
       </Parameter>
       <Parameter>
          <id_tag_name>DQ.RowId</id_tag_name>
       </Parameter>
       <Parameter>
          <Record_Type>
             <Name>Account_Denmark</Name>
             <System>SiebelDQ_Denmark</System>
             <Search>search-org</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
       <Parameter>
          <Record_Type>
          <Name>Account_USA</Name>
             <System>SiebelDQ_USA</System>
             <Search>search-org</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
       <Parameter>
          <Record_Type>
             <Name>Account_Germany</Name>
             <System>SiebelDQ_Germany</System>
             <Search>search-org</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
       <Parameter>
          <Record_Type>
             <Name>Account</Name>
             <System>SiebelDQ</System>
             <Search>search-org</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
       <Parameter>
          <Record_Type>
             <Name>Account_China</Name>
             <System>siebelDQ_China</System>
             <Search>search-org</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
       <Parameter>
          <Record_Type>
             <Name>Account_Japan</Name>
             <System>siebelDQ_Japan</System>
             <Search>search-org</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
       <Parameter>
          <Record_Type>
             <Name>Contact_Denmark</Name>
             <System>SiebelDQ_Denmark</System>
             <Search>search-person-name</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
       <Parameter>
          <Record_Type>
             <Name>Contact_USA</Name>
             <System>SiebelDQ_USA</System>
             <Search>search-person-name</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
       <Parameter>
          <Record_Type>
             <Name>Contact</Name>
             <System>SiebelDQ</System>
             <Search>search-person-name</Search>
          </Record_Type>
       </Parameter>
       <Parameter>
          <Record_Type>
             <Name>Contact_Germany</Name>
             <System>SiebelDQ_USA</System>
             <Search>search-person-name</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
       <Parameter>
          <Record_Type>
             <Name>Contact_China</Name>
             <System>SiebelDQ_China</System>
             <Search>search-person-name</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
       <Parameter>
          <Record_Type>
             <Name>Contact_Japan</Name>
             <System>SiebelDQ_Japan</System>
             <Search>search-person-name</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
       
       <Parameter>
          <Record_Type>
             <Name>Prospect</Name>
             <System>SiebelDQ</System>
             <Search>search-prospect-name</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
       <Parameter>
          <Record_Type>
             <Name>Prospect_Denmark</Name>
             <System>SiebelDQ_Denmark</System>
             <Search>search-prospect-name</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
       <Parameter>
          <Record_Type>
             <Name>Prospect_USA</Name>
             <System>SiebelDQ_USA</System>
             <Search>search-prospect-name</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
       <Parameter>
          <Record_Type>
             <Name>Prospect_China</Name>
             <System>SiebelDQ_China</System>
             <Search>search-prospect-name</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
       <Parameter>
          <Record_Type>
             <Name>Prospect_Japan</Name>
             <System>SiebelDQ_Japan</System>
             <Search>search-prospect-name</Search>
                         <no_of_sessions>25</no_of_sessions>
          </Record_Type>
       </Parameter>
    </Data>
    

      ssadq_cfgasm.xml

      The ssadq_cfgasm.xml file is used by Oracle Data Quality Address Validation Server. An example ssadq_cfgasm.xml file follows.

      <?xml version="1.0" encoding="UTF-8"?>
      <Data>
         <Parameter>
            <iss_host>hostname</iss_host>
         </Parameter>
         <Parameter>
            <iss_port>1666</iss_port>
         </Parameter>
         <Parameter>
            <format_zip>TRUE</format_zip>
         </Parameter>
            <Parameter>
            <datacleanse_mapping>
               <mapping>
                  <field>Name</field>
                  <ssafield>Organization</ssafield>
                  <std_operation>Upper</std_operation>
               </mapping>
               <mapping>
                  <field>Street_spcAddress</field>
                  <ssafield>Street1</ssafield>
                  <std_operation>Upper</std_operation>
               </mapping>
               <mapping>
                  <field>City</field>
                  <ssafield>Locality</ssafield>
            </mapping> 
               <mapping>
                  <field>Postal_spcCode</field>
                  <ssafield>Zip</ssafield>
               </mapping> 
               <mapping>
                  <field>State</field>
                  <ssafield>Province</ssafield>
               </mapping>
               <mapping>
                  <field>Country</field>
                  <ssafield>Country</ssafield>
               </mapping>
               <mapping>
                  <field>First_spcName</field>
                  <ssafield>FName</ssafield>
                  <std_operation>Upper</std_operation>
               </mapping>
               <mapping>
                  <field>Middle_spcName</field>
                  <ssafield>MName</ssafield>
               <std_operation>Upper</std_operation>
               </mapping>
               <mapping>
                  <field>Last_spcName</field>
                  <ssafield>LName</ssafield>
                  <std_operation>Upper</std_operation>
               </mapping>
                        <mapping>
                  <field>Personal_spcPostal_spcCode</field>
                  <ssafield>Zip</ssafield>
            </mapping>
               <mapping>
                  <field>Personal_spcCity</field>
                  <ssafield>Locality</ssafield>
               </mapping> 
               <mapping>
                  <field>Personal_spcState</field>
                  <ssafield>Province</ssafield>
               </mapping>
               <mapping>
                  <field>Personal_spcStreet_spcAddress</field>
                  <ssafield>Street1</ssafield>
                  <std_operation>Camel</std_operation>
               </mapping>
               <mapping>
                  <field>Personal_spcStreet_spcAddress 2</field>
                  <ssafield>Street2</ssafield>
                  <std_operation>Camel</std_operation>
               </mapping>
               <mapping>
                  <field>Personal_spcCountry</field>
                  <ssafield>Country</ssafield>
               </mapping>
            </datacleanse_mapping>
         </Parameter>
      </Data> 
      

        IDS_IDT_ACCOUNT_STG.SQL

        The following sample SQL script can be used for incremental data load.

        /*
        '============================================================================'
        ' Need to change TBLO before executing the scripts on target database.       '
        '============================================================================'
        */
        SET TERMOUT ON
        SET FEEDBACK OFF
        SET VERIFY OFF
        SET TIME OFF
        SET TIMING OFF
        SET ECHO OFF
        SET PAUSE OFF
        DROP MATERIALIZED VIEW ACCOUNTS_SNAPSHOT_VIEW;
        CREATE MATERIALIZED VIEW ACCOUNTS_SNAPSHOT_VIEW AS
        SELECT
           T2.ROW_ID   ACCOUNT_ID,
           T2.NAME   ACCOUNT_NAME,
           T3.ROW_ID   ACCOUNT_ADDR_ID,
           T3.ADDR   ADDRESS_LINE1,
           T3.ADDR_LINE_2   ADDRESS_LINE2,
           T3.COUNTRY   COUNTRY,
           T3.STATE   STATE,
           T3.CITY   CITY,
           T3.ZIPCODE   POSTAL_CODE,
           DECODE(T2.PR_BL_ADDR_ID,T3.ROW_ID,'Y','N')   PRIMARY_FLAG,
           FLOOR((ROWNUM-1)/&BATCH_SIZE)+1   BATCH_NUM
           FROM
              dbo.S_CON_ADDR T1,
              dbo.S_ORG_EXT T2,
              dbo.S_ADDR_PER T3
           WHERE
              T1.ACCNT_ID = T2.ROW_ID
           AND
              T1.ADDR_PER_ID = T3.ROW_ID
        -- Comment the following line for Multiple address match option
        --   AND T2.PR_BL_ADDR_ID=T3.ROW_ID
        /
        SELECT '============================================================================' 
        || CHR(10) ||
               '                  REPORT ON ACCOUNTS SNAPSHOT' || CHR(10) ||
               '============================================================================' 
        || CHR(10)  "  "
               FROM DUAL
        /
        SELECT BATCH_NUM BATCH, COUNT(*)  "NUMBER OF RECORDS"
        FROM ACCOUNTS_SNAPSHOT_VIEW
        GROUP BY BATCH_NUM
        ORDER BY BATCH_NUM
        /
        

          IDS_IDT_CONTACT_STG.SQL

          The following sample SQL script can be used for incremental data load.

          /*
          ============================================================================
           Need to change TBLO before executing the scripts on target database.
          ============================================================================
          */
          SET TERMOUT ON
          SET FEEDBACK OFF
          SET VERIFY OFF
          SET TIME OFF
          SET TIMING OFF
          SET ECHO OFF
          SET PAUSE OFF
          SET PAGESIZE 50
          DROP MATERIALIZED VIEW CONTACTS_SNAPSHOT_VIEW;
          CREATE MATERIALIZED VIEW CONTACTS_SNAPSHOT_VIEW AS
          SELECT
             T1.CONTACT_ID CONTACT_ID,
             T2.FST_NAME || ' ' || LAST_NAME NAME,
             T2.MID_NAME MIDDLE_NAME,
             T3.ROW_ID   ADDRESS_ID,
             T3.CITY     CITY,
             T3.COUNTRY COUNTRY,
             T3.ZIPCODE  POSTAL_CODE,
             T3.STATE   STATE,
             T3.ADDR    STREETADDRESS,
             T3.ADDR_LINE_2 ADDRESS_LINE2,
             DECODE(T2.PR_PER_ADDR_ID,T3.ROW_ID,'Y','N') PRIMARY_FLAG,
             T4.NAME    ACCOUNT,
             T2.BIRTH_DT BirthDate,
             T2.CELL_PH_NUM  CellularPhone,
             T2.EMAIL_ADDR  EmailAddress,
             T2.HOME_PH_NUM  HomePhone,
             T2.SOC_SECURITY_NUM  SocialSecurityNumber,
             T2.WORK_PH_NUM  WorkPhone,
             FLOOR((ROWNUM-1)/&BATCHSIZE)+1 BATCH_NUM
          FROM
             dbo.S_CON_ADDR T1,
             dbo.S_CONTACT T2,
             dbo.S_ADDR_PER T3,
             dbo.S_ORG_EXT T4
          WHERE
             T1.CONTACT_ID = T2.ROW_ID AND
             T1.ADDR_PER_ID      = T3.ROW_ID AND
          --    OR (T1.ADDR_PER_ID IS NULL))  Do we need contacts with no address?
          --Comment the following line for Multiple address match option
          --    T2.PR_PER_ADDR_ID   = T3.ROW_ID (+) AND
              T2.PR_DEPT_OU_ID    = T4.PAR_ROW_ID (+)
          /
          SELECT '============================================================================' 
          || CHR(10) ||
                 '                  REPORT ON CONTACTS SNAPSHOT' || CHR(10) ||
                 '============================================================================' 
          || CHR(10)  "  "
                 FROM DUAL
          /
          SELECT BATCH_NUM BATCH, COUNT(*)  "NUMBER OF RECORDS"
          FROM CONTACTS_SNAPSHOT_VIEW
          GROUP BY BATCH_NUM
          ORDER BY BATCH_NUM
          /
          

            IDS_IDT_PROSPECT_STG.SQL

            The following sample SQL script can be used for incremental data load.

            /*
            '============================================================================'
            ' Need to change TBLO before executing the scripts on target database.       '
            '============================================================================'
            */
            SET TERMOUT ON
            SET FEEDBACK OFF
            SET VERIFY OFF
            SET TIME OFF
            SET TIMING OFF
            SET ECHO OFF
            SET PAUSE OFF
            SET PAGESIZE 50
            DROP MATERIALIZED VIEW PROSPECTS_SNAPSHOT_VIEW;
            CREATE MATERIALIZED VIEW PROSPECTS_SNAPSHOT_VIEW AS
            SELECT
               CON_PR_ACCT_NAME  ACCOUNT_NAME,
               CELL_PH_NUM CELLULAR_PHONE,
               CITY   CITY,
               COUNTRY COUNTRY,
               EMAIL_ADDR EMAIL_ADDRESS,
               FST_NAME || ' ' || LAST_NAME  NAME,
               HOME_PH_NUM HOME_PHONE,
               MID_NAME MIDDLE_NAME,
               ZIPCODE POSTAL_CODE,
               SOC_SECURITY_NUM SOCIAL_SECURITY_NUMBER,
               STATE STATE,
               ADDR  STREETADDRESS,
               ADDR_LINE_2  ADDRESS_LINE2,
               WORK_PH_NUM WORK_PHONE,
               ROW_ID PROSPECT_ID,
               FLOOR((ROWNUM-1)/&BATCH_SIZE)+1 BATCH_NUM
            FROM
               dbo.S_PRSP_CONTACT T2
            /
            SELECT '============================================================================' 
            || CHR(10) ||
                   ' REPORT ON PROSPECTS SNAPSHOT' || CHR(10) ||
                   '============================================================================' 
            || CHR(10)  "  "
                   FROM DUAL
            /
            SELECT BATCH_NUM BATCH, COUNT(*)  "NUMBER OF RECORDS"
            FROM PROSPECTS_SNAPSHOT_VIEW
            GROUP BY BATCH_NUM
            ORDER BY BATCH_NUM
            /
            

              IDS_IDT_CURRENT_BATCH.SQL

              The following sample SQL script can be used for incremental data load.

              SET FEEDBACK ON
              DROP TABLE IDS_IDT_CURRENT_BATCH
              /
              CREATE TABLE IDS_IDT_CURRENT_BATCH
                 (  BATCH_NUM INTEGER)
              /
              INSERT INTO IDS_IDT_CURRENT_BATCH VALUES (1)
              /
              

                IDS_IDT_CURRENT_BATCH_ACCOUNT.SQL

                The following sample SQL script can be used for incremental data load.

                CREATE OR REPLACE VIEW INIT_LOAD_ALL_ACCOUNTS AS 
                SELECT
                   ACCOUNT_ID,     
                   ACCOUNT_NAME, 
                   ACCOUNT_ADDR_ID,
                   ADDRESS_LINE1,  
                   ADDRESS_LINE2, 
                   COUNTRY,        
                   STATE,          
                   CITY,           
                   POSTAL_CODE,    
                   PRIMARY_FLAG   
                FROM
                   ACCOUNTS_SNAPSHOT_VIEW
                WHERE
                   BATCH_NUM=
                (SELECT BATCH_NUM FROM IDS_IDT_CURRENT_BATCH)
                /
                

                  IDS_IDT_CURRENT_BATCH_CONTACT.SQL

                  The following sample SQL script can be used for incremental data load.

                  CREATE OR REPLACE VIEW INIT_LOAD_ALL_CONTACTS AS 
                  SELECT
                     CONTACT_ID,   
                                                           NAME,
                     MIDDLE_NAME,  
                                                           ADDRESS_ID,   
                                                           CITY,         
                                                           COUNTRY,      
                                                           POSTAL_CODE,  
                                                           STATE,        
                                                           STREETADDRESS,
                                                           ADDRESS_LINE2,
                                                        PRIMARY_FLAG,
                     BirthDate,
                     CellularPhone,
                     EmailAddress,
                     HomePhone,
                     SocialSecurityNumber,
                     WorkPhone,
                     ACCOUNT
                  FROM
                     CONTACTS_SNAPSHOT_VIEW
                  WHERE 
                     BATCH_NUM=
                  (SELECT BATCH_NUM FROM IDS_IDT_CURRENT_BATCH)
                  /
                  

                    IDS_IDT_CURRENT_BATCH_PROSPECT.SQL

                    The following sample SQL script can be used for incremental data load.

                    CREATE OR REPLACE VIEW  INIT_LOAD_ALL_PROSPECTS AS
                    SELECT 
                       ACCOUNT_NAME,
                    CELLULAR_PHONE,
                       CITY,
                       COUNTRY,
                       EMAIL_ADDRESS,
                       NAME,
                       HOME_PHONE,
                       MIDDLE_NAME,
                       POSTAL_CODE,
                       SOCIAL_SECURITY_NUMBER,
                       STATE,
                       STREETADDRESS,
                       WORK_PHONE,
                       PROSPECT_ID
                    FROM
                       PROSPECTS_SNAPSHOT_VIEW
                    WHERE
                       BATCH_NUM=
                    (SELECT BATCH_NUM FROM IDS_IDT_CURRENT_BATCH)
                    /
                    

                      IDS_IDT_LOAD_ANY_ENTITY.CMD

                      The following sample SQL script can be used for incremental data load.

                      Note: Use this file for Microsoft Windows.
                      @echo off
                      REM ************************************************************************
                      REM *                                             *
                      REM *  1. Change informaticaHome to point to your IIR installation folder  *
                      REM *  2. Change initLoadScripts to point to your Initial Load scripts    *
                      REM *                                             *
                      REM ************************************************************************
                         if  %1.==. goto Error
                         if  %2.==. goto Error
                         if  %3.==. goto Error
                         NOT %4.==. goto GIvenBatchOnly
                      REM ************************************************************************
                      REM *                                             *
                      REM *  Setting parameters                        *
                      REM *                                             *
                      REM ************************************************************************
                      set current=%1
                      set workdir=%2
                      set dbcredentials=%3
                      set machineName=%computername%
                      set informaticaHome=C:\InformaticaIR
                      set initLoadScripts=C:\InformaticaIR\InitLoadScripts
                      REM ************************************************************************
                      REM *                                             *
                      REM *  Find the number of batches in the current Entity records snapshot   *
                      REM *                                             *
                      REM ************************************************************************
                      FOR /F "usebackq delims=!" %%i IN (`sqlplus -s %dbcredentials% @GetBatchCount%1`) DO set 
                      xresult=%%i
                      set /a NumBatches=%xresult%
                      echo %NumBatches%
                      del /s/f/q %workdir%\*
                      setlocal enabledelayedexpansion
                      set /a counter=1
                      REM ************************************************************************
                      REM *                                             *
                      REM *  Loop through all the batches         *
                      REM *                                             *
                      REM ************************************************************************
                      for /l %%a in (2, 1, !NumBatches!) do (
                         set /a counter += 1
                         (echo counter=!counter!)
                         sqlplus %dbcredentials% @%initLoadScripts%\SetBatchNumber.sql !counter!  
                         cd /d %informaticaHome%\bin
                         idsbatch -h%machineName%:1669 -i%initLoadScripts%\idt_%current%_load.txt -
                      1%workdir%\idt_%current%_load!counter!.log -2%workdir%\idt_%current%_load!counter!.err 
                      -3%workdir%\idt_%current%_load!counter!.dbg
                      )
                      goto DONE
                      :GivenBatchOnly
                         echo Processing Batch %4....
                         sqlplus %dbcredentials% @%initLoadScripts%\SetBatchNumber.sql %4 
                         cd /d %informaticaHome%\bin
                         idsbatch -h%machineName%:1669 -i%initLoadScripts%\idt_%current%_load.txt -
                      1%workdir%\idt_%current%_load%4.log -2%workdir%\idt_%current%_load%4.err -
                      3%workdir%\idt_%current%_load%4.dbg
                         goto DONE
                      :Error
                         ECHO Insufficient parameters
                         echo usage "IDS_IDT_LOAD_ANY_ENTITY.CMD <Object_Name> <Work_Dir> <DBUser/
                      DBPassword@TNS_Entry_Name> [Optional Batch Number]"
                         ECHO
                         echo e.g. IDS_IDT_LOAD_ANY_ENTITY.CMD ACCOUNT C:\InformaticaIR\InitLoadScripts 
                      ora1234/ora1234@ora_db
                         GOTO END
                      :DONE
                         Echo Process completed. Please examine error and log files in %workdir% 
                         OFF
                         set /a errorcount = 0
                         %%R in (*.err) do if %%~zR neq 0   set /a errorcount += 1
                         error Count =%errorcount%
                         if %errorcount% neq 0 goto batcherror
                         GOTO END
                      :batcherror
                         echo %errorcount% batch/es have failed. Please check the following batches:
                         for %%R in (*.err) do if %%~zR neq 0   echo %%R
                         goto DONE
                      :END
                      

                        IDS_IDT_LOAD_ANY_ENTITY.sh

                        The following sample SQL script can be used for incremental data load.

                        Note: Use this file for UNIX.
                        #!/bin/bash
                        #################################################################################
                        # Prerequisite check block                              #
                        #################################################################################
                        # Checking IIR system variables are set. If not then throw error and exit.
                        if [ -z "$SSABIN" ] && [ -z "$SSATOP" ]
                        then
                           echo "Err #LOAD-01: Informatica IIR system variables not set. Please use 'idsset' 
                        script"
                           exit
                        else
                           # checking if required idsbatch utility exists at $SSABIN location
                           if [ -f $SSABIN/idsbatch ]
                           then 
                              echo "idsbatch utility found."
                           fi
                        fi
                        #################################################################################
                        # Param block                                             #
                        #################################################################################
                        # INPUT PARAMETERS 
                           current=$1
                           workdir=$2
                           dbcredentials=$3
                        # ENVIRONMENT RELATED PARAMETERS
                        #  scriptdir=/export/home/qa1/InformaticaIR/initloadscripts
                        #  informaticadir=/export/home/qa1/InformaticaIR
                           scriptdir=$SSATOP/initloadscripts
                           =$SSATOP
                        # DEBUG OPTION - 1 for ON and 0 for OFF
                           debug=1
                           
                        # Passing DB credentials as argument
                        # ISS DATABASE CREDENTIALS and CONNECT INFO
                        #  dbcredentials=ora32155/ora32155@sdchs20n532_qa532a
                           dbcredentials=$3
                        # MACHINE NAME
                           machineName=`hostname`
                        #################################################################################
                        # Execution block                                         #
                        #################################################################################
                        if [ $debug -eq 1 ]; then
                           echo using Script dir: $scriptdir
                           using Informatica Home: $informaticadir
                        fi
                        if [ $# -lt 3 ]
                        then
                           echo "Err #LOAD-03: Error in $0 - Invalid Argument Count"
                           echo Usage LoadAnyEntity "<Entity Account,Contact or Prospect> <WorkDir> <dbuser/
                        dbpass@tnsname> [Optional Batch Number]"
                           echo Insufficient parameters
                           echo e.g "Syntax: $0 Entity_name  Account  Log_directory  /temp"
                           exit
                        fi
                        if [ -f $scriptdir/idt_$current\_load.txt ] 
                           then
                           if [ $debug -eq 1 ]; then
                              echo Using Load file $scriptdir/idt_$current\_load.txt
                           fi
                           else
                           Load file cannot be loaded. Please check and rerun process
                        fi
                        if [ $# -eq 4 ]
                           then
                           Specific bath to be loaded: $4
                        fi
                        if [  -d $workdir ]; then
                           cd $workdir
                           rm -r -f *.err
                        fi
                        if [ $# -eq 3 ] 
                           then 
                           read_sql_stmt() {
                           typeset stmt=$1
                           typeset login=$2
                           
                           echo "
                              set feedback off verify off heading off pagesize 0
                              $stmt;
                              exit 
                              " |  sqlplus -s  $login
                           }
                           
                           read_sql_stmt "select max(batch_num) from "$current"s_SNAPSHOT_VIEW" 
                        "$dbcredentials" | while read u 
                           do
                           
                           batches=$u
                           
                           counter=2
                           if [ $debug -eq 1 ]; then
                              echo current=$current 
                              echo workdir=$workdir 
                              echo counter=$counter
                              echo number of batches to be processed is: $batches
                           fi
                           
                        #  for counter in $(seq 2 $batches);
                           for ((counter=2; counter <= $batches; counter++));
                           
                        currentbatch=$(
                        sqlplus -S $dbcredentials <<!
                        set head off feedback off echo off pages 0
                        UPDATE IDS_IDT_CURRENT_BATCH set batch_num=$counter
                        /
                        select batch_num from IDS_IDT_CURRENT_BATCH
                        /
                        !
                           echo 
                           echo 
                           echo "#########################################"
                           echo "# Curently Processing Batch: $currentbatch     #"
                           echo "#########################################"
                           cd $informaticadir/bin
                           if [ $debug -eq 1 ]; then
                           echo InformaticaDrive: ${PWD}
                              echo Processing following command:
                              echo idsbatch -h$machineName:1669 -i$scriptdir/idt_$current\_load.txt -1$workdir/
                        idt_$current\_load$counter.log -2$workdir/idt_$current\_load$counter.err -
                        3$workdir\idt_$current\_load$counter.dbg
                              echo "#########################################"
                           fi
                           idsbatch -h$machineName:1669 -i$scriptdir/idt_$current\_load.txt -1$workdir/
                        idt_$current\_load$counter.log -2$workdir/idt_$current\_load$counter.err -
                        3$workdir\idt_$current\_load$counter.dbg
                           done
                           done
                        else
                           counter=$4
                           echo "#########################################"
                           echo Processing Batch $4....
                           currentbatch=$(
                                 sqlplus -S $dbcredentials <<!
                                 set head off feedback off echo off pages 0
                                 UPDATE IDS_IDT_CURRENT_BATCH set batch_num=$counter
                                 /
                                 select batch_num from IDS_IDT_CURRENT_BATCH
                                 /
                                 !
                                 )
                           echo "#########################################"
                           cd $informaticadrive/bin
                           idsbatch -h$machineName:1669 -i$scriptdir/idt_$current\_load.txt -1$workdir/
                        idt_$current\_load$counter.log -2$workdir/idt_$current\_load$counter.err -
                        3$workdir\idt_$current\_load$counter.dbg
                        fi
                           echo "Process completed. Please examine error and log files in "$workdir
                           # errorcnt=0
                        if [  -d $workdir ]; then
                           cd $workdir
                        fi
                           errorcnt=$(find ./ -depth 1 -name "*.err" ! -size 0 | wc -l)
                        echo Errors encountered is: $errorcnt
                        if [ $errorcnt -eq 0 ]; then
                           echo Successfully processed all the batches
                           else
                           echo #########################################
                           echo # Failed batch report  #
                           echo #########################################
                           echo $errorcnt batch/es have failed. Please check the following batches:
                           find ./ -depth 1 -name "*.err"
                        fi
                        

                          Sample Siebel DQ.sdf File

                          The following is an example of a SiebelDQ.sdf file.

                          Section: System
                          *-----------------------------------------------------------------------
                          *
                          *************
                          * Create a System for each Country. Use separate SDF files for each Country. Use Smallar 
                          case for System Name.
                          *************
                          system-definition
                          *=================
                          NAME= siebeldq
                          ID= s1
                          DEFAULT-PATH= "+"
                          *
                          idt-definition
                          *=============
                          NAME= IDT_ACCOUNT
                          *
                          idt-definition
                          *=============
                          NAME= IDT_CONTACT
                          *
                          idt-definition
                          *=============
                          NAME= IDT_PROSPECT
                          *
                          idx-definition
                          *=============
                          NAME= IDX_ACCOUNT
                          ID= 1s
                          IDT-NAME= IDT_ACCOUNT
                          KEY-LOGIC= SSA, 
                                     System(default),
                                     Population(usa), 
                                     Controls("FIELD=Organization_Name
                                     KEY_LEVEL=Standard"),
                                    Field(Name), Null-Key("K$$$$$$$")
                          OPTIONS= No-Null-Key,
                                   Compress-Key-Data(150)
                          *
                          idx-definition
                          *=============
                          NAME= IDX_CONTACT_NAME
                          ID= 2s
                          IDT-NAME= IDT_CONTACT
                          KEY-LOGIC= SSA,
                                     System(default),
                                     Population(usa),
                                     Controls("FIELD=Person_Name KEY_LEVEL=Standard"),
                                     Field(Name),
                                     Null-Key("K$$$$$$$")
                          OPTIONS= No-Null-Key,
                                   Compress-Key-Data(150)
                          *
                          idx-definition
                          *=============
                          NAME= IDX_CONTACT_ADDR
                          ID= 3s
                          IDT-NAME= IDT_CONTACT
                          KEY-LOGIC= SSA,
                                     System(default),
                                     Population(usa),
                                     Controls("FIELD=Address_part1 KEY_LEVEL=Standard"),
                                     Field(StreetAddress),
                                     Null-Key("K$$$$$$$")
                          OPTIONS= No-Null-Key,
                                   Compress-Key-Data(150)
                          *
                          idx-definition
                          *=============
                          NAME= IDX_CONTACT_ORG
                          ID= 4s
                          IDT-NAME= IDT_CONTACT
                          KEY-LOGIC= SSA,
                                     System(default),
                                     Population(usa),
                                     Controls("FIELD=Organization_Name KEY_LEVEL=Standard"),
                                     Field(Account),
                                     Null-Key("K$$$$$$$")
                          OPTIONS= No-Null-Key,
                                   Compress-Key-Data(150)
                          *
                          idx-definition
                          *=============
                          NAME= IDX_PROSPECT
                          ID= 5s
                          IDT-NAME= IDT_PROSPECT
                          KEY-LOGIC= SSA,
                                     System(default),
                                     Population(usa),
                                     Controls("FIELD=Person_Name KEY_LEVEL=Standard"),
                                     Field(Name),
                                     Null-Key("K$$$$$$$")
                          OPTIONS= No-Null-Key,
                                   Compress-Key-Data(150)
                          *
                          *
                          *********************************************************************
                          * Loader and Job Definitions for Initial Load. You can remove the parameter 
                          OPTIONS=APPEND, if you are not doing an incremental load
                          *********************************************************************
                          *
                          loader-definition
                          *====================
                          NAME= All_Load
                          JOB-LIST= job-account,
                             job-contact,
                             job-prospect
                          *
                          loader-definition
                          *====================
                          NAME= siebel_prospect
                          JOB-LIST= job-prospect
                          OPTIONS= APPEND
                          *
                          loader-definition
                          *====================
                          NAME= siebel_contact
                          JOB-LIST= job-contact
                          OPTIONS= APPEND
                          *
                          loader-definition
                          *====================
                          NAME= siebel_account
                          JOB-LIST= job-account
                          OPTIONS= APPEND
                          *
                          job-definition
                          *=============
                          NAME= job-account
                          FILE= lf-input-account
                          IDX= IDX_ACCOUNT
                          *
                          job-definition
                          *=============
                          NAME= job-contact
                          FILE= lf-input-contact
                          IDX= IDX_CONTACT_NAME
                          OPTIONS= Load-All-Indexes
                          *
                          job-definition
                          *=============
                          NAME= job-prospect
                          FILE= lf-input-prospect
                          IDX= IDX_PROSPECT
                          *
                          *
                          logical-file-definition
                          *======================
                          NAME= lf-input-account
                          PHYSICAL-FILE= IDT_ACCOUNT
                          *PHYSICAL-FILE= "+/data/account.xml"
                          *************
                          * If Loading directly from Table, set PHYSICAL-FILE as Table Name,If loading from xml 
                          file set PHYSICAL-FILE as XML file name 
                          *************
                          INPUT-FORMAT= SQL
                          *FORMAT= XML
                          **********
                          *If Loading directly from Table, set INPUT-FORMAT as SQL, If loading from xml file use 
                          INPUT-FORMAT as XML
                          *********
                          *
                          logical-file-definition
                          *======================
                          NAME= lf-input-contact
                          PHYSICAL-FILE= IDT_CONTACT
                          INPUT-FORMAT= SQL
                          *
                          logical-file-definition
                          *======================
                          NAME= lf-input-prospect
                          PHYSICAL-FILE= IDT_PROSPECT
                          INPUT-FORMAT= SQL
                          *
                          user-job-definition
                          *==================
                          COMMENT= "Load Accounts"
                          NAME= AccountLoad
                          *
                          user-step-definition
                          *===================
                          COMMENT= "Step 0 for acct load"
                          JOB= AccountLoad
                          NUMBER= 0
                          NAME= runAccountLoad
                          TYPE= "Load ID Table"
                          PARAMETERS= ("Loader Definition",siebel_account)
                          *
                          user-job-definition
                          *==================
                          COMMENT= "Load contacts"
                          NAME= ContactLoad
                          *
                          user-step-definition
                          *===================
                          COMMENT= "Load Contacts"
                          JOB= ContactLoad
                          NUMBER= 0
                          NAME= runContactLoad
                          TYPE= "Load ID Table"
                          PARAMETERS= ("Loader Definition",siebel_contact)
                          *
                          user-job-definition
                          *==================
                          COMMENT= "Load Prospects"
                          NAME= ProspectLoad
                          *
                          user-step-definition
                          *===================
                          COMMENT= "Step 0 for prospect load"
                          JOB= ProspectLoad
                          NUMBER= 0
                          NAME= runProspectLoad
                          TYPE= "Load ID Table"
                          PARAMETERS= ("Loader Definition",siebel_prospect)
                          *
                          search-definition
                          *================
                          NAME= "search-person-name"
                          IDX= IDX_CONTACT_NAME
                          COMMENT= "Use this to search and score on person"
                          KEY-LOGIC= SSA,
                                     System(default),
                                     Population(usa),
                                     Controls("FIELD=Person_Name SEARCH_LEVEL=Typical"),
                                     Field(Name)
                          SCORE-LOGIC= SSA,
                                       System(default),
                                       Population(usa),
                                       Controls("Purpose=Person_Name MATCH_LEVEL=Typical"),
                                       Matching-
                          Fields("Name:Person_Name,StreetAddress:Address_Part1,City:Address_part2,State:Attribut
                          e1,PrimaryPostalCode:Postal_area")
                          *
                          **********
                          * Depending on the Business requirement, you can add or remove the fields to be used for 
                          matching from the "Matching-Fields" section
                          *********
                          search-definition
                          *================
                          NAME= "search-address"
                          IDX= IDX_CONTACT_ADDR
                          COMMENT= "Use this to search and score on person"
                          KEY-LOGIC= SSA,
                                     System(default),
                                     Population(usa),
                                     Controls("FIELD=Address_part1 SEARCH_LEVEL=Typical"),
                                     Field(StreetAddress)
                          SCORE-LOGIC= SSA,
                                       System(default),
                                       Population(usa),
                                       Controls("Purpose=Address MATCH_LEVEL=Typical"),
                                       Matching-Fields 
                          ("Name:Person_Name,StreetAddress:Address_Part1,City:Address_part2,State:Attribute1,Pri
                          maryPostalCode:Postal_area")
                          *
                          search-definition
                          *================
                          NAME= "search-company"
                          IDX= IDX_CONTACT_ORG
                          COMMENT= "Use this to search for a person within a company"
                          KEY-LOGIC= SSA,
                                     System(default),
                                     Population(usa),
                                     Controls("FIELD=Organization_Name SEARCH_LEVEL=Typical"),
                                     Field(Account)
                          SCORE-LOGIC= SSA,
                                       System(default),
                                       Population(usa),
                                       Controls("Purpose=Contact MATCH_LEVEL=Typical"),
                                       Matching-Fields 
                          ("Account:Organization_Name,Name:Person_Name,StreetAddress:Address_Part1")
                          *
                          search-definition
                          *================
                          NAME= "search-prospect-name"
                          IDX= IDX_PROSPECT
                          COMMENT= "Use this to search and score on prospect person"
                          KEY-LOGIC= SSA,
                                     System(default),
                                     Population(usa),
                                     Controls("FIELD=Person_Name SEARCH_LEVEL=Typical"),
                                     Field(Name)
                          SCORE-LOGIC= SSA,
                                       System(default),
                                       Population(usa),
                                       Controls("Purpose=Person_Name MATCH_LEVEL=Typical"),
                                       Matching-
                          Fields("Name:Person_Name,StreetAddress:Address_Part1,City:Address_Part2,State:Attribut
                          e1,PostalCode:Postal_Area")
                          *
                          search-definition
                          *================
                          NAME= "search-org"
                          IDX= IDX_ACCOUNT
                          COMMENT= "Use this to search and score on company"
                          KEY-LOGIC= SSA,
                                     System(default),
                                     Population(usa),
                                     Controls("FIELD=Organization_Name SEARCH_LEVEL=Typical"),
                                     Field(Name)
                          SCORE-LOGIC= SSA,
                                       System(default),
                                       Population(usa),
                                       Controls("Purpose=Organization MATCH_LEVEL=Typical"),
                                       Matching-Fields 
                          ("Name:Organization_Name,PAccountStrAddress:Address_Part1,PAccountCity:Address_Part2")
                          *
                          multi-search-definition
                          *======================
                          NAME= "multi-search-direct-contact"
                          SEARCH-LIST= "search-person-name,search-company,search-address"
                          IDT-NAME= IDT_CONTACT
                          *
                          multi-search-definition
                          *======================
                          NAME= "multi-search-contact"
                          SEARCH-LIST= "search-person-name,search-company"
                          IDT-NAME= IDT_CONTACT
                          *
                          multi-search-definition
                          *======================
                          NAME= "multi-search-person"
                          SEARCH-LIST= "search-person-name,search-address"
                          IDT-NAME= IDT_CONTACT
                          *
                          multi-search-definition
                          *======================
                          NAME= "multi-search-division"
                          SEARCH-LIST= "search-company,search-address"
                          IDT-NAME= IDT_CONTACT
                          *
                          Section: User-Source-Tables
                          *
                          *********************************************************************
                          *                        Initial Load Database Source Views
                          **********************************************************************
                          **************************************
                          * Staging Table for Account Data
                          * Please refer the DQ Admin guide before changing the sequence of the fields
                          **************************************
                          create_idt IDT_ACCOUNT
                          sourced_from odb:15:ssa_src/ssa_src@ISS_DSN
                          INIT_LOAD_ALL_ACCOUNTS.ACCOUNT_NAME     Name     V(100),      
                          INIT_LOAD_ALL_ACCOUNTS.ACCOUNT_ADDR_ID     DUNSNumber    V(60),   
                          INIT_LOAD_ALL_ACCOUNTS.ACCOUNT_ID      (pk1)  RowId     C(30)  ,    
                          INIT_LOAD_ALL_ACCOUNTS.CITY       PAccountCity    V(100),      
                          INIT_LOAD_ALL_ACCOUNTS.COUNTRY      PAccountCountry    V(60), 
                          INIT_LOAD_ALL_ACCOUNTS.POSTAL_CODE     PAccountPostalCode   V(60), 
                          INIT_LOAD_ALL_ACCOUNTS.STATE      PAccountState    V(20),       
                          INIT_LOAD_ALL_ACCOUNTS.ADDRESS_LINE1     PAccountStrAddress   V(100),
                          INIT_LOAD_ALL_ACCOUNTS.ACCOUNT_ADDR_ID  (pk2) PAccountAddressID C(60) 
                          SYNC REPLACE_DUPLICATE_PK   
                          TXN-SOURCE NSA
                          ;
                          **********************************************************************
                          *      Sample entries if Loading the data from Flat File
                          **********************************************************************
                          *create_idt
                          *   IDT_ACCOUNT
                          * sourced_from FLAT_FILE 
                          *      Name W(100),
                          *      DUNSNumber W(60),
                          *      PAccountCity W(100),
                          *      PAccountCountry W(60),
                          *      PAccountPostalCode W(60),
                          *      PAccountState W(20),
                          *      PAccountStrAddress W(100),
                          *            (pk) RowId C(30)
                          * 
                          *SYNC REPLACE_DUPLICATE_PK 
                          *TXN-SOURCE NSA
                          *;
                          **************************************
                          * Staging Table for Contact Data
                          **************************************
                          create_idt IDT_CONTACT
                          sourced_from odb:15:ssa_src/ssa_src@ISS_DSN
                          INIT_LOAD_ALL_CONTACTS.BIRTHDATE     BirthDate    V(60), 
                          INIT_LOAD_ALL_CONTACTS.CELLULARPHONE     CellularPhone    V(60), 
                          INIT_LOAD_ALL_CONTACTS.EMAILADDRESS     EmailAddress    V(60), 
                          INIT_LOAD_ALL_CONTACTS.NAME      NAME     V(100),
                          INIT_LOAD_ALL_CONTACTS.HOMEPHONE     HomePhone    V(60), 
                          INIT_LOAD_ALL_CONTACTS.MIDDLE_NAME     MiddleName    V(100),
                          INIT_LOAD_ALL_CONTACTS.ACCOUNT      Account     V(100),
                          INIT_LOAD_ALL_CONTACTS.CONTACT_ID    (pk1)  RowId     C(30),
                          INIT_LOAD_ALL_CONTACTS.SOCIALSECURITYNUMBER    SocialSecurityNumber   V(60),
                          INIT_LOAD_ALL_CONTACTS.WORKPHONE     WorkPhone    V(60) ,
                          INIT_LOAD_ALL_CONTACTS.CITY      City     V(60),
                          INIT_LOAD_ALL_CONTACTS.COUNTRY      Country     V(20),
                          INIT_LOAD_ALL_CONTACTS.POSTAL_CODE     PrimaryPostalCode   V(20),
                          INIT_LOAD_ALL_CONTACTS.STATE      State     V(20),
                          INIT_LOAD_ALL_CONTACTS.STREETADDRESS     StreetAddress    V(100),
                          INIT_LOAD_ALL_CONTACTS.ADDRESS_ID  (pk2) ContactAddressID C(60)
                          SYNC REPLACE_DUPLICATE_PK 
                          TXN-SOURCE NSA
                          ;
                          **************************************
                          * Staging Table for Prospect Data
                          **************************************
                          create_idt IDT_PROSPECT
                          sourced_from odb:15:ssa_src/ssa_src@ISS_DSN
                          INIT_LOAD_ALL_PROSPECTS.ACCOUNT_NAME    Account     V(100), 
                          INIT_LOAD_ALL_PROSPECTS.CELLULAR_PHONE    CellularPhone    V(60), 
                          INIT_LOAD_ALL_PROSPECTS.CITY     City     V(60), 
                          INIT_LOAD_ALL_PROSPECTS.COUNTRY     Country     V(30), 
                          INIT_LOAD_ALL_PROSPECTS.EMAIL_ADDRESS    EmailAddress    V(60), 
                          INIT_LOAD_ALL_PROSPECTS.NAME     NAME     V(100), 
                          INIT_LOAD_ALL_PROSPECTS.HOME_PHONE    HomePhone    V(60), 
                          INIT_LOAD_ALL_PROSPECTS.MIDDLE_NAME    MiddleName    V(100), 
                          INIT_LOAD_ALL_PROSPECTS.POSTAL_CODE    PostalCode    V(20), 
                          INIT_LOAD_ALL_PROSPECTS.SOCIAL_SECURITY_NUMBER  SocialSecurityNumber   V(60), 
                          INIT_LOAD_ALL_PROSPECTS.STATE     State     V(20), 
                          INIT_LOAD_ALL_PROSPECTS.STREETADDRESS    StreetAddress    V(100), 
                          INIT_LOAD_ALL_PROSPECTS.WORK_PHONE    WorkPhone    V(100), 
                          INIT_LOAD_ALL_PROSPECTS.PROSPECT_ID  (pk)  RowId     C(30) 
                          SYNC REPLACE_DUPLICATE_PK 
                          TXN-SOURCE NSA
                          ;
                          Section: Files
                          Section: Views