IBM Support

IJ21094: INTERMITTENT PROBLEM WITH PORTFOLIO COST CODE HIERARCHY PATH BEING GENERATED INCORRECTLY

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as documentation error.

Error description

  • Problem type:
    Platform â “ Cost Code Hierarchy â “ Missing/Incorrect hierarchy
    path
    
     Found in Platform Version:
    Reported and replicated in 3.6.0.3 Impacts version 3.6.0.3 and
    earlier. See release notes after 3.6.0.3 for resolution.
    
    Problem Title:
    Intermittent problem with Portfolio Cost Code Hierarchy Path
    being generated incorrectly
    
    
    Symptom/Description:
    When using integrations to create triCostCode records,
    occasionally we find that the triPathSY system field that is
    written to the cost code record does not show the correct path,
    even though the cost code appears where it should in the
    Hierarchy.  This happens regardless of what form is used.
    
    In support testing, after generating 1M+ new cost code records
    in the hierarchy, a very small number of the resulting records
    were found to have this incorrect path in either the T_ table or
    IBS_SPEC.
    
    The cost codes are organized this way: Under the \Cost Code
    hierarchy, there is a small, top-level list of â œOrganization
    Cost Codes⠝.  Under this org cost code, a Location Cost Code
    is created for the building.  Under this location cost code,
    Service Cost Codes from the test Accounting Service Code Group
    are created.  The location is traversed down through the floor
    and spaces, each getting their own collection of Location and
    Service Cost Codes.  It looks like this:
    
    Organization Cost Code (with a set of buildings under this
    organization)
      -> Location Cost Code for Building #1
                -> Service Cost Codes created from Accounting
    Service Code group and Accounting Service Codes
                -> Location Cost Code for Floor of this Building
                            -> Service Cost Codes created the same
    way
                            -> Location Cost Code for Space on this
    Floor
                                        -> Service Cost Codes
    created the same way
                            -> Location Cost Code for Space #2 on
    this Floor
                                        -> Service Cost Codes
    created the same way
                            â ¦
                -> Location Cost Code for Floor #2 of this Building
                            (repeat Service Cost Codes, Location
    Cost Codes for Spaces (and their Service Codes)
      -> Location Cost Code for Building #2
       (same detail of cost code creation for this building, floors,
    and spaces)
    â ¦
    -> Location Cost Code for Building #N
      (same detail for cost code creation for this building, floors,
    and spaces)
    
    Steps to Reproduce:
    
    DATA CREATION STEPS â “ CREATING INITIAL SETUP DATA
    
    ⦁ Import the OM package CostCodeGenerator.zip.  It has some
    new workflows in the patch helper and calculation helper BOs, a
    slight change to the calculation helper BO and Forms to
    introduce a ⠜triProcess⠝ transition from which to trigger an
    async workflow that runs the actual cost code generator in
    multiple workflow threads (to ramp up throughput).  There is a
    ClassLoader record as well with some custom code that detects
    and corrects triCostCode records that have an incorrect record
    path but are linked into the hierarchy table correctly (ie *THE
    ISSUE*).
    
    ⦁ After the package imports, retire some workflows in the
    triCostCode module:
    
    triCostCode - Associate - Associate Parent Code to Child
    triCostCode - Associate - triStatus - Create Notification
    Details
    triCostCode - triActivate - Submit for Approval and Dependant
    Record Update
    triCostCode - triCreate - Refresh the Rollup
    A new ⠜bypass⠝ workflow is in the package to simply push the
    cost code to the Active state without using any approval
    workflows, objects, etc for speed.
    
    The Associate Parent Code to Child workflow sets the cost code
    level number, which is already being done in the workflows that
    create the cost codes now, so itâ ™s not necessary to run this.
    
    ⦁ Create Organization cost code records.  This is done by
    creating some Calculation Helper records, treating them as a
    DTO, then having a patch helper workflow run to create the
    actual Org Cost Code records from these.
    ⦁ Load the file create-org-cc.txt using Data Integrator
    ⦁ Module triHelper, BO/form triCalculationHelper, triCalculate
    action
    ⦁ Create a new patch helper record with the name ⠜Create Org
    Cost Code⠝ and click Calculate.  This will trigger the
    workflow â œcstPatchHelper - triCalculate - Create Test Org Cost
    Codes⠝ that goes through the DTOs created above and processes
    them into actual Organization Cost Code records.
    
    ⦁ Create a new Accounting Service Code group classification
    record named ⠜Test Cost Code Structure⠝
    ⦁ In the Accounting Service Codes section of this new record,
    add Accounting Service Codes here.  I added new test Accounting
    Service Codes to add here to attain *27* associated Accounting
    Service Codes.  The number of service codes here is what is
    added under each Location Cost code described in the intro.  The
    more you have set up here, the more overall cost codes will get
    created.
    
    ⦁ Create Location Category ⠜CostCode Test⠝
    
    ⦁ Load the 1700 building records from the
    bldg.-test-create.txt file via data integrator to Location /
    triBuilding BO and Form with the action triCreateDraft..  The
    file loads each building under the CostCode Test from above, and
    should look like this when loaded (I activated the buildings but
    that isnâ ™t necessary to do for this test):
    
    
    DATA CREATION STEPS â “ CREATING LARGE QUANTITY OF COST CODES IN
    BULK
    
    ⦁ The cost codes are created by a DTO record that is loaded
    into the Calculation Helper BO.  Load the DTOs from the file
    ⠜costcode-create-dto.txt⠝ using Data Integrator.  Load into
    the triHelper Module / triCalculationHelper BO/Form with the
    ⠜triCalculate⠝ action.
    
    ⦁ Create a new Patch Helper record with the name ⠜Create
    Cost Codes⠝, and click triCalculate.  This starts the workflow
    â œcstPatchHelper - triCalculate - Process Cost Code Create
    DTOs⠝.  All this workflow does is select the DTOs from step1,
    iterates through them all and triggers the new triProcess action
    added to the triCalculationHelper BO via the initial OM package
    import.
    
    ⦁ The ⠜triProcess⠝ action on the Calculation helper BO
    runs the async workflow on the triCalculationHelper BO
    ⠜cstCalculationHelper - triProcess - Generate Cost Codes⠝
    which in turn runs the synchronous workflow
    ⠜cstCalculationHelper - Synchronous - Create Cost Codes⠝
    that will create a batch of Location and Service cost code
    records according to the information given in the DTO record â “
    the Org name (to get the top-level org cost code), the building
    name (to get the building used in the Location Cost code
    reference field), and the number of floors and number spaces per
    floor to use while creating the Location / Service Code
    hierarchy under the top-level Organization cost code.
    
    ⦁ It is set up this way to create the entire sub-tree of cost
    codes for a building in 1 synchronous workflow.  This is the
    same way that customer has theirs built, but their system has
    actual floors and spaces that their workflow traverses.  This
    version simply loops and creates floor and space names for the
    cost codes using counters.
    
    ⦁ Each building⠙s set of cost codes are therefore run
    asynchronously, using multiple workflow threads â “ each
    instance of â œcstCalculationHelper - triProcess - Generate Cost
    Codes⠝ runs in a separate thread, creating cost codes in its
    own space in the Cost Code hierarchy tree so that it doesnâ ™t
    interfere with any other instance of this workflow that is also
    running for other buildings.
    
    CONFIRMATION / VALIDATION
    
    After the workflows to process the DTOs, create the cost codes,
    and activate them finally complete â “ which may take MANY
    hours, there are several ways to check if any cost codes have
    ⠜invalid⠝ paths.
    
    ⦁ SQL ⠓ run a query against the T_TRICOSTCODE table and
    IBS_SPEC table to see if any records have a path that doesnâ ™t
    start with â ˜\Cost Codeâ ™.  It is important to wait until all
    workflow activity has completed, as the path for newly created
    cost code records not yet added to the hierarchy (the â œAdd
    Child⠝ workflow task) will not show the full path yet and thus
    appear in these queries results (ie a false positive):
    
    
    select spec_id, tristatuscl, tripathsy from t_tricostcode where
    tripathsy
    not like '\Cost Code%'
    order by spec_id;
    
    select spec_id, spec_name, object_path from ibs_spec where
    type_name='triCostCode'
    and object_path not like '\Cost Code%'
    order by spec_id;
    
    
    Expected fix in version:
    Reported in 2Q2018. We are unable to project a target at this
    time.
    
    Expected Fix Description:
    When creating triCostCode records, regardless of which form is
    used, occasionally the triPathSY system field does not show the
    correct path, even though the cost code shows correctly in the
    Hierarchy. Here the triPathSY system field has to show the
    correct hierarchy path even if we create the data in bulk.
    
    Key Words:
    None
    
    Work-Around:
    None
    

Local fix

Problem summary

  • A note on hierarchy records has been added to 3.7 Release Notes
    document. A similar note will also be added to the release notes
    document of upcoming release version, which is tentatively
    planned for 2H 2020.
    

Problem conclusion

  • ID team has added an not about hierarchy records under Important
    Information section on 3.7 release notes document. A similar
    note will be added under Important Information section of
    release notes document for upcoming release version, which is
    tentatively planned for 2H 2020.
    

Temporary fix

Comments

APAR Information

  • APAR number

    IJ21094

  • Reported component name

    TRI APP PLTFM R

  • Reported component ID

    5725F26RE

  • Reported release

    353

  • Status

    CLOSED DOC

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2019-11-20

  • Closed date

    2020-12-11

  • Last modified date

    2020-12-11

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

Applicable component levels

[{"Line of Business":{"code":"LOB59","label":"Sustainability Software"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSHEB3","label":"IBM TRIRIGA Application Platform"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"353"}]

Document Information

Modified date:
14 December 2020