In this article we will look into cancelling an existing Work Relationship of an employee using HDL process.
We can prepare the HDL file with the required user keys to delete the work relationship.
Sample HDL to delete Work Relationship(Worker.dat):
SET PURGE_FUTURE_CHANGES N
METADATA|WorkRelationship|SourceSystemOwner|SourceSystemId|PersonId(SourceSystemId)|LegalEmployerName|PersonNumber|DateStart|WorkerType|CancelWorkRelationshipFlag
DELETE|WorkRelationship|HRC_SQLLOADER|1122334455|123456789_1|Legal Entity Two||2010/01/01|E|Y
When we have a requirement to cancel multiple work relationships due to bad data load/some data issues, we can use the below SQL to get this HDL file prepared using BI Report and then upload the file to HCM Data Loader for processing.
SQL Query to get HDL file for cancelling work relationships:
SELECT HDL_DATA
FROM (
SELECT 'SET PURGE_FUTURE_CHANGES N' HDL_DATA
,1 seq
FROM dual
UNION
SELECT 'METADATA|WorkRelationship|SourceSystemOwner|SourceSystemId|' || 'PersonId(SourceSystemId)|LegalEmployerName|PersonNumber|' || 'DateStart|WorkerType|CancelWorkRelationshipFlag' HDL_DATA
,2 seq
FROM dual
UNION
SELECT 'DELETE|WorkRelationship|' || SourceSystemOwner || '|' || SourceSystemId || '|' || "PersonId(SourceSystemId)" || '|' || LegalEmployerName || '|' || PersonNumber || '|' || DateStart || '|' || WorkerType || '|' || CancelWorkRelationshipFlag HDL_DATA
,3 seq
FROM (
SELECT DISTINCT (
SELECT source_system_owner
FROM hrc_integration_key_map
WHERE surrogate_id = paam.period_of_service_id
AND rownum = 1
) SourceSystemOwner
,(
SELECT source_system_id
FROM hrc_integration_key_map
WHERE surrogate_id = paam.period_of_service_id
AND rownum = 1
) SourceSystemId
,(
SELECT source_system_id
FROM hrc_integration_key_map
WHERE surrogate_id = paam.person_id
AND rownum = 1
) "PersonId(SourceSystemId)"
,(
SELECT name
FROM hr_organization_v
WHERE sysdate BETWEEN effective_start_date
AND effective_end_date
AND organization_id = paam.legal_entity_id
AND classification_code = 'HCM_LEMP'
AND rownum = 1
) LegalEmployerName
,papf.person_number PersonNumber
,(
SELECT min(to_char(date_start, 'yyyy/mm/dd'))
FROM per_periods_of_service ppos
WHERE ppos.person_id = paam.person_id
) DateStart
,'E' WorkerType
,'Y' CancelWorkRelationshipFlag
FROM per_all_people_f papf
,per_all_assignments_m paam
WHERE paam.person_id = papf.person_id
AND paam.assignment_type = 'E'
AND paam.primary_flag = 'Y'
AND paam.effective_latest_change = 'Y'
AND sysdate BETWEEN papf.effective_start_date
AND papf.effective_end_date
AND sysdate BETWEEN paam.effective_start_date
AND paam.effective_end_date
AND papf.person_number IN ('1234')
)
)
ORDER BY seq ASC
Once we get the output of the above query, we can save it as Worker.dat and then zip it and upload it to HCM Data Loader page to get the work relationships deleted.
Tip: Use this at your own discretion with due diligence. Once you cancel the work relationship, it can’t be activated again. Double check employees list before loading the file.
i am getting below error while running this code.
"ORA-00972: identifier is too long"
There was a small issue with the SQL as it was missing a ". I have added it now. Please copy and run it.
Thanks,
Sricharan
Awesome Sricharan!!
Do we have similar query to create manager change worker hdl file?
Please do post.
Once again thanks a lot for your all efforts!
Hi Anurag,
Its already there.. https://fusionhcmknowledgebase.com/2019/02/supervisor-change-hdl-for-assignment/
Thanks,
Sricharan