Fix Event Queue Knowledge Module

Certain ETL maps which 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 need to 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 below. After the KM fix, the scenarios present in these mapping folders need to be regenerated. PLP and SIL scenarios are mandatory and the SDE scenarios of the PLVs you use need to be regenerated. For example, if you are using E-Business Suite, then those SDE, SIL, and PLP scenarios need to be regenerated.

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 on Create I$ Table
  4. Enter the below 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.