Error Handling - https://www.linkedin.com/pulse/error-handling-oracle-integration-cloud-harris-qureshi/
Tuesday, 3 January 2023
Tuesday, 13 December 2022
Oracle ERP HCM Location Based Access Control (LBAC)
Oracle Cloud (ERP/HCM) has Location Based Access Control, which an excellent feature to control user access to tasks & data based on their roles and IP addresses.
Various Oracle blogs related to LBAC which provides all the necessary details -
https://blogs.oracle.com/fusionhcmcoe/post/enabling-lbac-location-based-access-control
https://blogs.oracle.com/fusionhcmcoe/post/lbac-vs-ip-whitelisting
How LBAC can be used to secure REST API access - This is very good security feature if external systems are integrating with Oracle ERP/HCM using API's.
Oracle cloud ERP/HCM read-only access
Providing read only access to Oracle cloud ERP/HCM is a common requirement. Oracle has provided an easy way to provide this functionality.
To enable read-only mode for a user:
1. In the Setup and Maintenance work area, use the Manage Administrator Profile Values task.
2. In the Search section of the Manage Administrator Profile Values page, enter FND_READ_ONLY_MODE in the Profile Option Code field and click Search.
3. In the FND_READ_ONLY_MODE: Profile Values section of the page, click the New icon.
4. In the new row of the profile values table:
a. Set Profile Level to User.
b. In the User Name field, search for and select the user.
c. Set Profile Value to Enabled to activate read-only access for the selected user.
5. Click Save and Close.
When the user next signs in, a page banner reminds the user that read-only mode is in effect and no changes can be made.
Reference to Oracle documentation -
Friday, 25 March 2022
OIC Monthend Scheduling or Calendar based scheduling
OIC provides a good range of scheduling options using the simple calendar to iCal expressions. What if the scheduling need to based on a calendar or Monthend dates which are defined dates which keeps changing every year.
This can be achieved in a relatively simple fashion using the below approach.
Step 1 : Define the Calendar in a LOOKUP, This is yearly task to update the monthend(ME) dates part of the year end process. This will be referenced in the OIC Integrations.
Expression example : vCutoff - dvm:lookupValue('oramds:/apps/ICS/DVM/FIN_CALENDAR_LKP.dvm','Month',string(xp20:format-dateTime(/nssrcmpr:schedule/nssrcmpr:startTime,'[MNn,*-3]-[Y0001]')),'ME-Date','ERROR:CALENDAR')
Step 3 : Build a switch statement into the OIC Integration to use the ME date and based on the business requirement perform the necessary action.
Examples -
a. Invoke a process or Integration on ME date only
b. Invoke a process or Integration until ME date
c. Invoke a process or Integration after ME date
d. Invoke a process or Integration until ME date and given week day like Friday
Below example shows use case b. Where the Integration runs every day until ME date and stops gracefully after ME date of given month.
So in 3 easy steps we could implement Monthend based scheduling in OIC with simple changes to OIC Integration. Happy Integrating!
Tuesday, 1 February 2022
Oracle Expression Language Samples
#{securityContext.userInRole['TEST_ROLE']}
#{securityContext.userGrantedResource['resourceType=FNDResourceType;resourceName=FND_Scheduled_Processes_Menu;action=launch'] or !securityContext.userInRole['OFD_SALES_REP_CUSTOM_JOB,OFD_SALES_MGR_VP_CUSTOM_JOB']}
#{securityContext.userInAllRoles['role1,role2,roleN']}
#{securityContext.userName=='user 1' || securityContext.userName=='user 2' || securityContext.userName=='user 3'}
Tuesday, 18 January 2022
Oracle HCM Salary Query / Element Entries Query
SELECT DISTINCT
prg.assignment_number,
prg.assignment_id,
pet.base_element_name element_name,
pee.entry_type entry_type,
pee.effective_start_date entry_start_date,
pee.effective_end_date entry_end_date,
pee.multiple_entry_count multiple_entry_count,
pee.element_entry_id element_entry_id,
(
CASE
WHEN base_element_name = 'Hourly Paid' THEN
round(peev.screen_entry_value * 1820, 2)
ELSE
to_number(peev.screen_entry_value)
END
) screen_entry_value,
piv.base_name base_name,
pee.person_id person_id,
papf.person_number person_number
FROM
pay_rel_groups_dn prg,
pay_entry_usages peu,
pay_element_entries_f pee,
pay_element_entry_values_f peev,
pay_input_values_vl piv,
pay_element_types_vl pet,
per_all_people_f papf
WHERE
1 = 1
AND papf.person_id = pee.person_id
AND papf.person_number = 123456
--AND prg.assignment_number = 'E123456'
AND prg.payroll_relationship_id = peu.payroll_relationship_id
AND prg.relationship_group_id = peu.payroll_assignment_id
AND peu.element_entry_id = pee.element_entry_id
AND pee.element_entry_id = peev.element_entry_id
AND piv.input_value_id = peev.input_value_id
AND pee.element_type_id = pet.element_type_id
AND piv.base_name = 'Amount'
AND pet.base_element_name IN ( 'Basic Salary', 'Hourly Paid' )
AND trunc(pee.effective_start_date) BETWEEN trunc(piv.effective_start_date) AND trunc(piv.effective_end_date)
AND trunc(pee.effective_start_date) BETWEEN trunc(peev.effective_start_date) AND trunc(peev.effective_end_date)
AND trunc(pee.effective_start_date) BETWEEN trunc(pet.effective_start_date) AND trunc(pet.effective_end_date)
AND trunc(sysdate) BETWEEN trunc(papf.effective_start_date) AND trunc(papf.effective_end_date)
Wednesday, 12 January 2022
OIC HealthCheck URL
https://*********/ic/integration/home/ping.json
{"status": "ok"}Integrations Lead - Lessons learnt
Integrations have been my passion for a while but like anything tech there is no credit given when things go right but always heaps of pres...
-
For most outbound interfaces bursting to content server and then picking the file from UCM is the best approach for large extracts. Default...
-
While developing Cloud integrations I could not find a single place for all details like InterfaceID or jobdefinitionname or job name etc. ...
-
Integrations have been my passion for a while but like anything tech there is no credit given when things go right but always heaps of pres...