Fixing Event Queue Knowledge Module

Certain ETL maps that use the IKM BIAPPS Oracle Event Queue Delete Append KM can fail, requiring changes to the IKM BIAPPS Oracle Event Queue Delete Append KM.

Error Message

You must fix the IKM BIAPPS Oracle Event Queue Delete Append KM when ETL maps fail with the following error:

ODI-17517: Error during task interpretation.
Task: 11 java.lang.Exception: BeanShell script error: Sourced file: inline evaluation
of: `` if (errLogSupport.equalsIgnoreCase("Y")  &&
errLogOption.equalsIgnoreCase("Y")  . . . '' : Attempt to resolve method: 
equals() on undefined variable or class name: isPartitioned : at Line: 8 : in
file: inline evaluation of: `` if (errLogSupport.equalsIgnoreCase("Y")  && 
errLogOption.equalsIgnoreCase("Y")  . . . '' : isPartitioned .equals ( "Y" )

Affected Scenarios

The maps affected by the KM are listed here. After the Knowledge Module (KM) fix, regenerate the scenarios present in these mapping folders. The Post Load Process (PLP) and Source Independent Load (SIL) scenarios are mandatory and Source Dependent Extract (SDE) scenarios of the PLVs you use need to be regenerated. For example, if you are using Oracle E-Business Suite, then regenerate those SDE, SIL, and PLP scenarios.

PLP:

  • PLP_WorkforceCompensationFact_Quarter

  • PLP_SupervisorHierarchy_Analysis_Top

  • PLP_SupervisorStatusDimension

  • PLP_WorkforceBalanceAggregate_Temp

  • PLP_WorkforceCompensationFact_Year

  • PLP_WorkforceEventFact_Age

  • PLP_WorkforceEventFact_Merge

  • PLP_WorkforceEventFact_Month

  • PLP_WorkforceEventFact_Pow

  • PLP_Workforce_GainLossFact_NonSupChanges

  • PLP_Workforce_GainLoss_Tmp_SupChanges

  • PLP_Workforce_Gen01_GainLossFact_Frozen

  • PLP_Workforce_Gen01_GainLossFact_Live

SIL

  • SIL_AbsenceEventFact

  • SIL_AssignmentSupervisorDimension

  • SIL_WorkforceEventFact

Fusion SDE

  • SDE_FUSION_AssignmentSupervisorDimension

  • SDE_FUSION_AssignmentSupervisorDimension

  • SDE_FUSION_DomainGeneral_ProjectAwardFundingSource

  • SDE_FUSION_DomainGeneral_ProjectAwardInstitution

  • SDE_FUSION_DomainGeneral_ProjectAwardKeyword

  • SDE_FUSION_PersistedStage_WorkforceEvent

  • SDE_FUSION_PersistedStage_WorkforceEvent

  • SDE_FUSION_WorkforceEventFact

  • SDE_FUSION_WorkforceEventFact

E-Business Suite SDE

  • SDE_ORA_AssignmentSupervisorDimension

  • SDE_ORA_HRPersonLegDimension

  • SDE_ORA_PersistedStage_WorkforceEvent

  • SDE_ORA_PersistedStage_WorkforceEvent_Supervisor

  • SDE_ORA_WorkforceEventFact

PeopleSoft SDE

  • SDE_PSFT_AssignmentSupervisorDimension

  • SDE_PSFT_HRPersonLegislation_XLegs

  • SDE_PSFT_PersistedStage_WorkforceEvent

  • SDE_PSFT_PersistedStage_WorkforceEvent_Headcount

  • SDE_PSFT_PersistedStage_WorkforceEvent_PositionHolder

  • SDE_PSFT_PersistedStage_WorkforceEvent_WorkerPosition

  • SDE_PSFT_WorkforceEventFact

To make the changes required:
  1. In ODI Designer, log in as a user with privileges to edit KMs.
  2. In the repository, expand Knowledge Modules, then Integration (IKM), and open the IKM BIAPPS Oracle Event Queue Delete Append KM.
  3. Double-click Create I$ Table.
  4. Enter the following code:
    <$ if (errLogSupport.equalsIgnoreCase("Y") 
    && errLogOption.equalsIgnoreCase("Y") ) { $>
    
    /* Creates the flow table which is the replica of Target table during Error Logging Mode */
    CREATE TABLE  <%=odiRef.getTable("L", "INT_NAME", "W")%>
    AS SELECT <%=odiRef.getColList("", "[COL_NAME],", "\n\t", "", "(INS and REW)")%>
             CAST('' AS VARCHAR2(100)) ERROR_TYPE_IND 
             ,CAST('' AS UROWID) DIAGNOSTIC_ROWID
             ,CAST('' AS VARCHAR2(10)) IND_UPDATE
    FROM  <%=odiRef.getTable("L","TARG_NAME","A")%> <%=odiRef.getOption("FLOW_TABLE_OPTIONS")%>
    WHERE 1=2
    <$ } 
    else if ("<%=odiRef.getOption("FLOW_CONTROL")%>".equals("1") ||
       ("<%=odiRef.getOption("OBI_EVENT_QUEUE_UPDATE")%>".equals("1") && "<%=refreshType%>".equals("TARGET")) ||
       ("#IS_INCREMENTAL".equals("Y") ) && (errLogSupport.equalsIgnoreCase("N") || errLogOption.equalsIgnoreCase("N") ))  { $>
    CREATE TABLE <%=odiRef.getTable("L", "INT_NAME", "W")%>
    (  <%=odiRef.getColList("", "[COL_NAME]\t\t[DEST_WRI_DT] NULL", ",\n\t", "", "UK")%>
     <%=odiRef.getColList(",\n\t", "[COL_NAME]\t\t<? if (\u0022[DEST_DT]\u0022.equals
    (\u0022NUMBER\u0022)) {?>NUMBER<?} else if (\u0022[DEST_DT]\u0022.equals
    (\u0022VARCHAR2\u0022)) {?>VARCHAR2(4000)<?} else {?>[DEST_WRI_DT]<?}?> NULL", ",\n\t", "", "NOT UK")%>
    )
    <%=odiRef.getOption("FLOW_TABLE_OPTIONS")%>
    <$ }
    else { $>
    /* Step bypassed. It runs only in error logging mode if ETL diagnostics is supported */
    <$ } $>
    
  5. Regenerate the scenarios.