Introduction
If you are a technical consultant planning to start on your first Oracle HCM Data Migration /Data Conversion Implementation Project (irrespective of the deployment model be it On-Premise, SaaS, Hybrid) probably this article for you but that doesn’t means it cannot be referred by experienced professionals.
It is not very easy to understand the detailed data mapping, joins and relations between various HCM Business Object components. Some of the business objects may be very simple like Location which only has one metadata line (object definition) or could be a complex one like Worker which comprises of multiple child components (Person Name, Person National Identifier, Person Email, Person Phone... etc.). Read this articlehere to learn how one may load some business objects using HCM Data Loader.
And while one may always use a combination of MERGE and DELETE commands to load and remove data from application, there are always chances that you load unwanted data. Typical examples being you loaded a Location Object and then loaded a Worker Record which uses this specific location. One may still use the “Purge Person” Diagnostic Test (read complete worked out examplehere ) to delete person records completely from the application but remember that’s only supported in Non-Production Environments.
In order to simplify all this and still give a real-time hands on experience of using HCM Data Loader (with no prior configuration required) to newbies Oracle Development team has provided a sample object “Example Object”. Example Object data is saved to its own tables. No data is saved to the application tables. One can review the structure and attributes of the Example Object on the Business Object Details page in the Data Exchange work area. The example object:
Has child and grandchild components and a translation object
Supports all key types
Supports Create and Delete actions
Has attributes of most data types
Has lookup-validated attributes
Starting Release 13 there would be a new process ( complete detailshere ) named “Test HCM Data Loader Process Flow and Connections” and when a user selects the value of “Action” parameter as “Test HCM Data Loader” then the process will perform the following actions:
Generates a file of MERGE Instructions for Example Object
Adds the ExampleObject.dat file to ExampleObject||<date and time>||.zip file
Uploads the .zip file to /hcm/dataloader/import directory on the WebCenter Content Server
Initiates the HCM Data Loader to import and load the file
Provides a log file
However, not many of the release 13 environment currently have this process currently present. But nevertheless one may still make use of “Import and Load Data” process.
We would demonstrate the same with a worked out example.
Worked Out Example
We would need to download the WorkerObject.dat Template (from the “Initiate Data Load” option under Data Exchange using “Example Object” as the business object name.
Once we click on the icon the Template file will get downloaded which would appear as below:
We could see that there are three METADATA lines namely ExampleObject, ExampleChildObject and ExampleGrandChildObject respectively. A brief description of each of the metadata line along with logic of the data used described in detail
ExampleObject | ||
Attribute Name | Attribute Value | Comments |
Metadata | MERGE | Command Used to Add/Edit |
ExampleObject | ExampleObject | Object Name |
ParentId | 1 | Unique Number (ID) |
ParentNumber | HRC_SQLLOADER_EO_PARENT1 | Unique Identifier (Used by End User for easy identification) |
ParentCode | HRC_SQLLOADER_EO_PARENTCODE1 | Unique Code |
StartDate | 2018/01/01 | Date in YYYY/MM/DD |
EffectiveStartDate | 2018/01/01 | Effective Date from which this record should be active in YYYY/MM/DD |
EffectiveEndDate | 4712/12/31 | Date when this record ends. For an ongoing record always use 4712/12/31 in YYYY/MM/DD |
EffectiveSequence | 1 | Sequence (like 1,2,3.) |
EffectiveLatestChange | Y | If the record is the latest one it will hold value as ‘Y’ else ‘N’ |
Status | SUCCESS | Lookup Code Value as fetched from HRC_DL_STATUS Lookup Type |
ParentBusinessObjectId | Unique ID of the Parent Business Object | |
ChildBusinessObjectId | 1 | Unique ID of Child Business Object |
AttrChar1 | Optional | |
SourceSystemOwner | HRC_SQLLOADER | Source System Owner Value as configured in HRC_SOURCE_SYSTEM_OWNER Lookup |
SourceSystemId | HRC_SQLLOADER_EO_PARENT_1 | Unique ID from Legacy Application |
GUID | System Generated Unique ID | |
Name | Sample Example Object | Name you want to give to your custom object |
The Data File would appear as below:
Similarly, the Example Child Object Metadata Line would have following mapping details:
ExampleChildObject | ||
Attribute Name | Attribute Value | Comments |
Metadata | MERGE | Command Used to Add/Edit |
ExampleChildObject | ExampleChildObject | Object Name |
ChildLevelOneId | 1 | Unique Number (ID) |
ChildLevelOneNumber | HRC_SQLLOADER_EO_LEVEL1_CHILD1 | Unique Identifier (Used by End User for easy identification) |
GUID | System Generated Unique ID | |
ParentId | 1 | ParentId value of the parent object |
SourceSystemId | HRC_SQLLOADER_EO_LEVEL1_CHILD_1 | Unique ID from Legacy Application |
SourceSystemOwner | HRC_SQLLOADER | Source System Owner Value as configured in HRC_SOURCE_SYSTEM_OWNER Lookup |
StartDate | 2018/01/01 | Date in YYYY/MM/DD |
ParentNumber | HRC_SQLLOADER_EO_PARENT1 | Parent Number of Parent Record |
ParentCode | HRC_SQLLOADER_EO_PARENTCODE | Parent Code of Parent Record |
The Data File would appear as:
Similarly, the Example Grandchild Object Metadata Line would have following mapping details:
ExampleGrandchildObject | ||
Attribute Name | Attribute Value | Comments |
Metadata | MERGE | Command Used to Add/Edit |
ExampleGrandchildObject | ExampleGrandchildObject | Object Name |
ChildLevelOneId | 1 | Unique Number (ID) |
ChildLevelTwoId | 1 | Unique Number (ID) |
ChildTwoCode | HRC_SQLLOADER_EO_GRANDCHILDCODE1 | Unique Code |
GUID | System Generated Unique ID | |
SourceSystemId | HRC_SQLLOADER_EO_LEVEL2_GRANDCHILD_1 | Unique ID from Legacy Application |
SourceSystemOwner | HRC_SQLLOADER | Source System Owner Value as configured in HRC_SOURCE_SYSTEM_OWNER Lookup |
StartDate | 2018/01/01 | Date in YYYY/MM/DD |
ChildLevelOneNumber | HRC_SQLLOADER_EO_LEVEL1_CHILD1 | Parent Number of Child Record |
The Data File would appear as:
Now the files are ready and one may try loading the same.
Loading the File
In the next step one would login to application, click on Data Exchange, click on Import and Load Data. We would load three different files named ParentExampleObject.zip , ChildExampleObject.zip and GrandchildExampleObject.zip. Once all the files are loaded the UI would appear as below:
Verification
Since this specific Example Object does not have any specific application base tables and UI pages associated with it we would not be able to verify the same from UI but we could always check from the underlying tables which holds this data.
Data Model Diagram
We would create a custom data model comprising of three different data sets:
Data Set Name | SQL Query |
ExampleObject | select * from hrc_dl_so_parent_m |
ChildExampleObject | select * from hrc_dl_so_child_level_one |
GrandChildExampleObject | select * from hrc_dl_so_child_level_two |
Once we click on “Data” we could see the results as shown:
Next we would click on “Save as Sample Data” and then try to Create a Report using this Data Model. We would have three different RTF Templates created. Once created the “Edit Report” page would appear as shown below:
And when we click on “View Report” we would be able to see 4 different tabbed reports one each corresponding to ExampleObject , ParentExampleObject, ChildExampleObject and GrandChildExampleObject respectively and the output would appear as below:
ExampleObjectTemplate (Tab):
ParentExampleObjectTemplate(Tab):
ChildExampleObjectTemplate(Tab):
GrandChildExampleTemplate(Tab):
Inference / Summary
So this is how one can load the Example Object and even verify the data from the database tables. I hope this was a good read and would help you guys getting started with HCM Data Loader.
Good Luck!
And just to make life simpler for you guys please find the handy link where-from you can download the relevant files used in this demonstration:
ParentExampleObjectTemplate.rtf
ChildExampleObjectTemplate.rtf
GrandChildExampleObjectTemplate.rtf
ExampleObjectReport.xdo.catalog