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