Wednesday, 11 March 2026

How to Restrict Global Assignment EFF Values by Employee Legislation in Oracle Fusion HCM

How to Restrict Global Assignment EFF Values by Employee Legislation in Oracle Fusion HCM

In global Oracle Fusion HCM implementations, one of the more common configuration challenges is supporting local business requirements without fragmenting the overall design. A field may be global in nature, but the values available for that field often need to vary by country or legislation.

A typical example is a custom field on the Global Assignment Extensible Flexfield (EFF). The business may want one common field for all employees, but the list of available values should differ depending on whether the worker belongs to the US, India, Canada, Great Britain, or another legislation.

The good news is that Oracle Fusion HCM supports this requirement quite elegantly through configuration. By combining a custom lookup, a table-validated value set, and a Global Assignment EFF segment, you can create a clean, scalable, and metadata-driven solution.

In this article, I’ll walk through a practical design pattern for restricting Assignment EFF values based on employee legislation.

Business Requirement

Let’s assume the business wants to add a custom Assignment EFF field called Eligibility Type. This field should behave differently depending on the employee’s legislation.

For example:

  • an employee with India legislation should see values relevant to India
  • an employee with Great Britain legislation should see UK-specific values
  • an employee with US legislation should see US-specific values
  • some values should remain available to all employees regardless of country

This is a common global design problem: one field, different valid values by legislation.

Instead of creating separate fields or separate contexts by country, we can keep the design centralized and let the value filtering happen dynamically at runtime.

Solution Overview

The solution has three building blocks:

  1. create a custom lookup type to store all possible values
  2. create a table-validated value set that filters those values based on legislation
  3. assign that value set to a Global Assignment EFF segment

The key idea is straightforward: all possible values are maintained in a single lookup, and the Tag field is used to identify country applicability. The value set then reads those values and decides which ones should be displayed based on the employee’s legislation code.

This approach keeps the design simple, maintainable, and easy to extend later.

Step 1: Create a Custom Lookup Type

The first step is to create a custom lookup that will act as the source for the field values.

Navigation
Setup and Maintenance → Manage Common Lookups

Create the following lookup type:

Field Value
Lookup Type XX_CUSTOM_ELIGIBILITY
Meaning XX_CUSTOM_ELIGIBILITY
Description XX_CUSTOM_ELIGIBILITY
Module Global Human Resources

Once the lookup type is created, add the lookup codes that will represent the values shown in the EFF.

Sample Lookup Codes

Lookup Code Meaning Start Date Tag
GRND_FATHER Grandfathered in 1/1/1951 +IN
HAZARD_ALLOWANCE Hazard Allowance 1/1/1951 +GB
ONCALL On Call 1/1/1951 +US,+CA,+IN
STIPEND_INCENTIVE Stipend Incentive 1/1/1951 (blank)

Using the Tag Column to Drive Legislation Logic

The Tag column is central to this pattern.

In this configuration:

  • +IN means the value is available only for India
  • +GB means the value is available only for Great Britain
  • +US,+CA,+IN means the value is available for multiple legislations
  • a blank tag means the value is available globally

This gives you a very practical mechanism for managing legislation-specific behavior without overcomplicating the EFF structure itself.

It also makes future maintenance easier. If the business wants to add a new value or expand eligibility to another legislation, the update can often be handled directly in the lookup.



Step 2: Create a Table-Validated Value Set

The next step is to create a value set that reads the lookup values and filters them using the legislation code of the employee.

Navigation
Setup and Maintenance → Manage Value Sets

Create the value set with the following definition:

Field Value
Value Set Code XX_CUSTOM_ELIGIBILITY_VS
Description XX_CUSTOM_ELIGIBILITY_VS
Module Global Human Resources
Validation Type Table
Value Data Type Character

Table Validation Details

Field Value
From Clause fnd_lookup_values
Value Column Name meaning
Description Column Name meaning
ID Column Name meaning

Where Clause

LOOKUP_TYPE = 'XX_CUSTOM_ELIGIBILITY'
AND (
  DECODE(
    TAG,
    NULL, 'Y',
    DECODE(
      SUBSTR(TAG,1,1),
      '+', DECODE(SIGN(INSTR(TAG, :{PARAMETER.LEGISLATION_CODE_VALUE})), 1, 'Y', 'N'),
      '-', DECODE(SIGN(INSTR(TAG, :{PARAMETER.LEGISLATION_CODE_VALUE})), 1, 'N', 'Y'),
      'Y'
    )
  ) = 'Y'
)
AND LANGUAGE = 'US'

This is the heart of the solution.

How the Value Set Logic Works

At runtime, the value set checks the TAG value for each lookup row.

The logic works like this:

  • if the TAG is null, the value is treated as global and shown to everyone
  • if the TAG starts with +, the value is shown only if the employee’s legislation code exists in the tag
  • if the TAG starts with -, the value is hidden if the employee’s legislation code exists in the tag

This creates a flexible filtering mechanism while keeping the actual list of values centrally managed.

From a design perspective, this is a strong pattern because it separates value maintenance in the lookup, filtering logic in the value set, and user entry in the EFF.




Step 3: Create the Global Assignment EFF Context and Segment

Once the lookup and value set are ready, the next step is to create the Global Assignment EFF segment that uses this value set.

Navigation
Setup and Maintenance → Manage Extensible Flexfields

Search for the Assignment Extensible Flexfield and create a new context and segment.

High-Level Steps

  1. open the Assignment EFF
  2. create a new context
  3. add a new segment
  4. assign the value set XX_CUSTOM_ELIGIBILITY_VS
  5. save and deploy the flexfield

The segment should be a character-based field configured to display as a list of values.












Important Detail: Legislation Code Parameter

The most important part of this configuration is the parameter referenced in the value set:

:{PARAMETER.LEGISLATION_CODE_VALUE}

This parameter must receive the employee’s legislation code at runtime. That is what enables the value set to determine which rows should be displayed.

If this parameter is not mapped correctly, the LOV may not behave as expected. In most cases, the issue will show up as one of the following:

  • all values are displayed
  • no values are displayed
  • values appear inconsistently for different employees

Because of that, parameter mapping is usually the first thing to verify during testing.

Testing the Configuration

Once the EFF is deployed, test the setup with employees from different legislations.

Based on the sample configuration above, the expected results are:

Employee Legislation Values Displayed
US On Call, Stipend Incentive
IN Grandfathered in, On Call, Stipend Incentive
CA On Call, Stipend Incentive
GB Hazard Allowance, Stipend Incentive

This confirms that the same field can support different value sets depending on employee context, without requiring country-specific duplication in the flexfield design.

US Employee



India Employee




Canada Employee






GB Employee - redwood UI






Why This Design Works Well

What makes this approach especially useful in global implementations is its balance between flexibility and simplicity.

Rather than designing multiple country-specific fields or managing complex configurations in several places, you keep the setup centralized:

  • the lookup stores all available values
  • the Tag defines country applicability
  • the value set handles runtime filtering
  • the EFF consumes the filtered result

This makes the solution easier to maintain, easier to explain, and easier to extend over time.

It also aligns well with a broader Oracle HCM design principle: whenever possible, solve requirements through configurable metadata rather than proliferating structures.

Final Thoughts

For global Oracle Fusion HCM implementations, legislation-sensitive value restriction is a requirement that comes up often. The combination of a custom lookup, country-tagged values, a table-validated value set, and a Global Assignment EFF provides a neat and reusable way to address it.

It keeps the configuration centralized, supports local variation, and avoids unnecessary duplication in your flexfield design.

If you are working on a global HCM rollout and need different LOV values for the same field across legislations, this is a pattern well worth keeping in your implementation toolkit.

Key Takeaways

  • a single Assignment EFF field can support different values by legislation
  • the lookup Tag column is a simple way to define country applicability
  • a table-validated value set can dynamically filter values at runtime
  • this pattern is scalable, maintainable, and well suited for global HCM implementations

Tuesday, 10 March 2026

How to Configure Context-Sensitive Descriptive Flexfields (DFF) for Absence Types in Oracle Fusion HCM


How to Configure Context-Sensitive Descriptive Flexfields (DFF) for Absence Types in Oracle Fusion HCM

Introduction

Organizations frequently need to capture different information depending on the absence type selected by an employee.

Absence Type Additional Information Required
Paid Time Off Paid Time Off Attribute
Sick Leave Sick Leave Attribute

Instead of customizing the application, Oracle Fusion Absence Management provides this capability through Context-Sensitive Descriptive Flexfields (DFF). This configuration allows the system to automatically display relevant fields depending on the selected absence type.

Solution Overview

This solution uses the Absence Recording Descriptive Flexfield (DFF) available in Oracle Fusion Absence Management.

  1. Access the Absence Recording DFF
  2. Configure the Context
  3. Create contexts and context sensitive segments
  4. Deploy the flexfield

(1) Access the Absence Recording DFF

Navigate to:

Setup and Maintenance → Manage Descriptive Flexfields

Search for Absence Recording DFF and click the Edit icon.









Step 2 – Configure the Context

Parameter Value
Default Type Parameter
Default Value Absence Type
Derivation Value Absence Type
Display Type Hidden

This ensures the context is automatically derived from the absence type.


Step 3 – Define Context and Context Sensitive Segments

Create Contexts for Each Absence Type

Next, click the Manage Contexts button to view existing contexts or create new ones.

On the Manage Contexts page, click the “+” (Add) icon to create a new context.

When creating a context:

  • You can enter any value for the Display Name

  • The Context Code must be the absence_type_id

The system uses this value to determine which set of fields should be displayed for the selected absence type.

Retrieve the Absence Type ID

To obtain the absence_type_id, run the following SQL query:

SELECT *
FROM ANC_ABSENCE_TYPES_F_TL
WHERE language = 'US'
AND name IN ('Paid Time Off','Sick Leave');

This query retrieves the IDs for the required absence types. Use the corresponding absence_type_id as the Context Code when creating the context.

Once the context is created, you can define context-specific segments that should appear when that absence type is selected.

Paid Time Off

  • Paid Time Off Attribute




Let's define another context and related segments

Sick Leave

  • Sick Leave Attribute




Step 4 – Deploy the Flexfield

Save the configuration and click Deploy Flexfield. Ensure deployment status shows successful compilation.


Testing the Configuration

Navigate to:

My Client Groups → Absence → Absences and Entitlements

Create a new absence request and verify the fields appear dynamically based on absence type.









Best Practices

  • Use Global Segments only for fields applicable to all absence types
  • Ensure context code matches absence_type_id
  • Keep Context Segment hidden
  • Always deploy flexfields after configuration

Conclusion

Using Context-Sensitive Descriptive Flexfields in Oracle Fusion Absence Management, organizations can dynamically capture absence-specific information without customization. This improves data accuracy, user experience, and system flexibility.

Sunday, 22 February 2026

Oracle Cloud Payroll - US Retiree Payroll Configuration

US RETIREE PAYROLL IN ORACLE CLOUD HCM — MUST-DO CONFIGURATION

This article is designed to help Oracle Cloud HCM practitioners implement US retiree payroll in a clean, auditable way. It focuses on practical configuration choices, common setup gaps, and testable outcomes—so teams can enable learning, reduce rework, and deliver reliable payroll operations.

This checklist is based on hands-on implementation patterns and guidance from Oracle documentation/support material, including:
  • Oracle Support Document ID 2461709.1 — “Oracle Fusion Human Capital Management for RETIREES US: Implementation and Use (v1.9)”
  • Oracle Cloud Human Capital Management for the United States: How do I perform tax filing through a third-party? KB160976
  • Audience: Payroll implementers, HCM functional consultants, payroll admins supporting US retiree pay
  • Scope: US retirees paid via Oracle Cloud Payroll (commonly pension/annuity payments; often reported via 1099-R depending on your program design)

————————————————————————————————————

Retiree payroll has a few “small” setup decisions that create big downstream impact: tax card creation, TRU/PSU structure, registrations, reporting card associations, and address quality. If you get right early, year-end, reconciliation, and ongoing maintenance become predictable.

————————————————————————————————————

SECTION A — FOUNDATION (NON-NEGOTIABLE)

If you are already payroll customer running employee's payroll then this would be already configured.

A1) Set the United States Selected Extension correctly

  • Confirm your US “Selected Extension” setting aligns with how you plan to process retirees (HR-only vs payroll-enabled configuration).

A2) Address Validation + geographies maintenance (strongly recommended)

  • Enable Address Validation (if your governance permits).
  • Establish an operational cadence to refresh geographies (as applicable).

————————————————————————————————————

SECTION B — ORG STRUCTURE (BUILD RETIREE BOUNDARIES EARLY)

B1) Separate retiree PSUs from employee PSUs (recommended baseline)
  • Create retiree Payroll Statutory Units (PSUs) separately from employee PSUs where your business/legal reporting model supports it.
B2) Create retiree TRUs separately; lock down distribution code governance
  • Create retiree TRUs separately from employee TRUs.
  • If your program requires different 1099-R distribution codes, segment TRUs accordingly.
  • Governance rule: do not change TRU’s 1099-R distribution code after creation—create a new TRU if the code changes.
        Manage LRU HCM Information => Enter the distribution code






————————————————————————————————————

SECTION C — TAX REGISTRATIONS (REQUIRED FOR STABLE PAYROLL PROCESSES)

This configuration is same as your regular employee(Non-Retiree) payroll configuration.

C1) US Federal registration at LRU level (FEIN)

  • Create the US Federal Tax registration at the LRU level.
  • Enter the Employer FEIN.

C2) State registrations (as applicable)

  • Populate state registrations for jurisdictions where you withhold/report, based on your compliance model and filing responsibilities.

————————————————————————————————————

SECTION D — TRU CALCULATION RULES (PUT WITHHOLDING LOGIC IN THE RIGHT PLACE)

This configuration is same as your regular employee(Non-Retiree) payroll configuration.

D1) Create TRU calculation rules card

Create “Calculation Rules for Tax Reporting and Payroll Statutory Unit” at the TRU level.

D2) Flat-rate override governance (if your retiree program uses it)

Recommended override priority (high → low)
1. Retiree person tax card overrides
2. TRU-level overrides
3. Tax engine defaults

Note –

Retiree payments that are subject to 1099-R rules are not subject to SUI, SDI, FLI, Social Security, or Medicare taxes. Therefore, the payroll process does not calculate them.

————————————————————————————————————

SECTION E — CONSOLIDATION GROUP AND PAYROLL GROUP

E1) It would be better to create separate consolidation group and payroll definition for retiree payroll processing

————————————————————————————————————

SECTION F — RETIREE TAX CARDS (ENSURE THEY AUTO-CREATE AND STAY CORRECT)

F1) Confirm the retiree tax card model
  • Validate the retiree tax card behavior for your program (commonly “Tax Withholding for Pensions and Annuities”).
F2) Validate auto-creation is working (don’t assume)

F3) State-tax edge case validation

When you onboard or convert employee to retiree; you will see below calculation created and TRU association created auto




————————————————————————————————————

SECTION G — REPORTING INFORMATION CARD (OFTEN MISSED, HIGH IMPACT)

G1) Confirm TRU components are associated to the correct assignment

  • Validate that Reporting Information Card components created per TRU are correctly associated to the retiree assignment number—especially when multiple TRUs exist.


————————————————————————————————————

SECTION H — RETIREE ASSIGNMENT (MINIMUM REQUIRED FIELDS)

This data point is same as your regular employee(non-retiree) payroll data point.

H1) Retiree must have a payroll-eligible assignment

  • Payroll relationships are assigned
  • Ensure retiree assignment is Active and Payroll Eligible

————————————————————————————————————

SECTION I — HOME ADDRESS, LOCATION AND WFH FLAG FOR RETIREES (WHAT IT MEANS IN ORACLE)

Key point (clear definition)

Retirees aren’t “working,” but Oracle still requires a Work Location on the retiree assignment. For WFH/Remote retirees, treat Work Location as a required data field for consistency and reporting—not as a local tax driver.

I1) All Retirees must have valid US Home Address for payroll processing. Retirees can have overseas mailing address for communication.

I2) Create a dedicated retiree remote location and assign it to all retirees and check 'Work From Home' flag for them.




————————————————————————————————————

SECTION J — PAYMENTS (DIRECT DEPOSIT MUST BE OPERATIONALLY SUPPORTED)

This data point is same as your regular employee(Non-Retiree) payroll data point.

J1) Run prerequisite process for new retirees
  • Run “Maintain Party and Location Current Record” before entering personal payment methods (for newly onboarded retirees).
J2) Enter payment methods
  • Use “Manage Personal Payment Methods” to add direct deposit details.

————————————————————————————————————

SECTION K — KNOWN CONSTRAINTS (DESIGN AROUND THEM EARLY)
  • Local taxes for retirees may not be supported in retiree processing models; plan your retiree withholding accordingly.
  • Involuntary deductions may not be supported for retiree processing; define an alternative approach if required.
  • Confirm territory/jurisdiction scope early if you have retirees outside standard US states.

————————————————————————————————————

Finally Let's add earning elements and run QuickPay to see the results








————————————————————————————————————

Disclaimer: 

The checklist provided here focuses on foundational setup patterns and common “must-do” configurations for US retiree processing in Oracle Cloud HCM. Actual implementations can vary by retiree plan design, bargaining agreements, legal/tax requirements, and reporting needs. Most projects also require additional configuration, including elements and balance definitions, fast formulas, eligibility, costing rules, payroll calendars, retro and correction processes, and integrations with third-party or downstream systems (e.g., tax services, payment files, benefits providers, and financial/GL systems) to deliver end-to-end processing and statutory reporting.

Friday, 21 July 2017

Oracle Cloud Benefits - Person Change Life Event Fast Formula

Person Change Life Event Fast Formula

- Recently i had requirement of triggering life event in below cases.
(1) Change of working hours >= 30
(2) Change of working hours < 30
(3) Employees' termination or Death
(4) Salary Change

Below are the fast formulas that i have used to achieve the requirement.

(1)

/*****************************************************************************
FORMULA NAME: XX_CHG_WORKING_HOURS_GT_30
FORMULA TYPE: Person Life Changes

BEN_ASG_IN_NORMAL_HOURS  = New Value
BEN_ASG_IO_NORMAL_HOURS  = Old Value
*******************************************************************************/
INPUTS ARE BEN_ASG_IN_NORMAL_HOURS(text),BEN_ASG_IO_NORMAL_HOURS(text)

Default for BEN_ASG_IO_NORMAL_HOURS is '999'
Default for BEN_ASG_IN_NORMAL_HOURS is '999'

l_return = 'N'

IF (to_number(BEN_ASG_IO_NORMAL_HOURS) <> to_number(BEN_ASG_IN_NORMAL_HOURS) AND to_number(BEN_ASG_IO_NORMAL_HOURS)>= 30 AND to_number(BEN_ASG_IN_NORMAL_HOURS)< 30)
then
(l_return = 'Y') 
else 
(l_return = 'N')

return l_return


(2)


/*****************************************************************************

FORMULA NAME: XX_CHG_WORKING_HOURS_LT_30
FORMULA TYPE: Person Life Changes

*******************************************************************************/
INPUTS ARE BEN_ASG_IN_NORMAL_HOURS(text),BEN_ASG_IO_NORMAL_HOURS(text)

Default for BEN_ASG_IO_NORMAL_HOURS is '999'
Default for BEN_ASG_IN_NORMAL_HOURS is '999'

l_return = 'N'

IF (to_number(BEN_ASG_IO_NORMAL_HOURS) <> to_number(BEN_ASG_IN_NORMAL_HOURS) AND to_number(BEN_ASG_IO_NORMAL_HOURS)< 30 AND to_number(BEN_ASG_IN_NORMAL_HOURS)>= 30)
then
(l_return = 'Y') 
else 
(l_return = 'N')

return l_return


(3)

/*****************************************************************************

FORMULA NAME: XX_TERMINATION_LE
FORMULA TYPE: Person Life Changes

*******************************************************************************/
DEFAULT FOR PER_PER_ENTERPRISE_TERMINATION_ACTION_CODE is 'X'

L_RETURN='N'
IF (PER_PER_ENTERPRISE_TERMINATION_ACTION_CODE = 'TERMINATION' OR PER_PER_ENTERPRISE_TERMINATION_ACTION_CODE = 'RESIGNATION' OR PER_PER_ENTERPRISE_TERMINATION_ACTION_CODE ='DEATH' ) THEN
L_RETURN='Y'
RETURN L_RETURN

(4)

/*****************************************************************************

FORMULA NAME: XX_SALARY_CHG_LE
FORMULA TYPE: Person Life Changes

*******************************************************************************/
inputs are BEN_SAL_IN_SALARY_AMOUNT(text), BEN_SAL_IO_SALARY_AMOUNT(text)
default for BEN_SAL_IN_SALARY_AMOUNT is '99999999'
default for BEN_SAL_IO_SALARY_AMOUNT is '99999999'
l_create_ptnl = 'N'
If (TO_NUMBER(BEN_SAL_IO_SALARY_AMOUNT) <> TO_NUMBER(BEN_SAL_IN_SALARY_AMOUNT))
THEN
( l_create_ptnl = 'Y' )
ELSE
( l_create_ptnl = 'N' )
return l_create_ptnl


Friday, 3 April 2015

Oracle Payroll Costing hierarchy

Oracle Payroll Costing Hierarchy


In oracle payroll costing can be set at 5 levels with below priority order.


- Payroll                    = Lowest
- Element Link
- Organization
- Assignment
- Element Entry        = Highest



Thursday, 14 August 2014

Query for attachments in oracle apps





You can get attached_document_id of approximate all applications transaction as shown below.

=============================================================

SELECT  fad.attached_document_id         attached_document_id
FROM    applsys.fnd_attached_documents   fad
WHERE   fad.entity_name                  = 'R_DOCUMENT_EXTRA_INFO'
AND     FAD.PK1_VALUE                    IN(SELECT  HDEI.DOCUMENT_EXTRA_INFO_ID  DOCUMENT_EXTRA_INFO_ID
                                            FROM    hr.hr_document_extra_info HDEI
                                           )
UNION
SELECT fad.attached_document_id          attached_document_id
FROM   applsys.fnd_attached_documents    fad
WHERE  fad.entity_name                   = 'PQH_SS_ATTACHMENT'
AND    fad.pk1_value                     IN(SELECT hat.transaction_id      transaction_id
                                            FROM   hr.hr_api_transactions  hat
                                            )
UNION
SELECT fad.attached_document_id          attached_document_id
FROM   applsys.fnd_attached_documents    fad
WHERE  fad.entity_name                   = 'AP_INVOICES'
AND    fad.pk1_value                     IN(SELECT aia.invoice_id      invoice_id
                                            FROM   ap.ap_invoices_all  aia
                                            )
UNION
SELECT fad.attached_document_id          attached_document_id
FROM   applsys.fnd_attached_documents    fad
WHERE  fad.entity_name                   IN ('PO_HEAD','PO_HEADERS')
AND    fad.pk1_value                     IN (SELECT pha.po_header_id   header_id
                                             FROM   po.po_headers_all  pha
                                             )
UNION
SELECT fad.attached_document_id           attached_document_id
FROM   applsys.fnd_attached_documents     fad
WHERE  fad.entity_name                    = 'OIE_HEADER_ATTACHMENTS'
AND    fad.pk1_value                      IN(SELECT  arha.report_header_id            report_header_id
                                             FROM    ap.ap_expense_report_headers_all arha
                                          )
UNION
SELECT fad.attached_document_id       attached_document_id
FROM   applsys.fnd_attached_documents fad
WHERE  fad.entity_name                = 'OKC_CONTRACT_DOCS'
AND    fad.pk2_value                  IN(SELECT ocd.business_document_id
                                         FROM   okc.okc_contract_docs ocd
                                          )
UNION
SELECT  fad.attached_document_id       attached_document_id
FROM    applsys.fnd_attached_documents fad
WHERE   fad.entity_name                = 'PO_LINES'
AND     fad.pk1_value                  IN(SELECT pla.po_line_id   po_line_id
                                          FROM   po.po_lines_all  pla            
                                          )
UNION
SELECT fad.attached_document_id        attached_document_id
FROM   applsys.fnd_attached_documents  fad
WHERE  fad.entity_name                 = 'OIE_LINE_ATTACHMENTS'
AND    fad.pk1_value                   IN(SELECT arla.report_header_id          report_header_id
                                          FROM   ap.ap_expense_report_lines_all arla
                                          )
UNION
SELECT fad.attached_document_id       attached_document_id
FROM   applsys.fnd_attached_documents fad
WHERE  fad.entity_name                = 'REQ_HEADERS'
AND    fad.pk1_value                  IN(SELECT prha.requisition_header_id    requisition_header_id
                                         FROM   po.po_requisition_headers_all prha
                                         )
UNION
SELECT fad.attached_document_id        attached_document_id
FROM   applsys.fnd_attached_documents  fad
WHERE  fad.entity_name                 ='REQ_LINES'
AND    fad.pk1_value                   IN(SELECT prla.requisition_line_id     requisition_line_id
                                          FROM   po.po_requisition_lines_all  prla
                                          )
UNION
SELECT fad.attached_document_id         attached_document_id
FROM   applsys.fnd_attached_documents   fad
WHERE  fad.entity_name                  ='PO_SHIPMENTS'
AND    fad.pk1_value                    IN(SELECT plla.line_location_id     line_location_id
                                           FROM   po.po_line_locations_all  plla
                                           )
UNION
SELECT fad.attached_document_id        attached_document_id
FROM   applsys.fnd_attached_documents  fad
WHERE  fad.entity_name                 = 'IBY_PAY_INSTRUCTIONS_ALL'
AND    fad.pk1_value                   IN(SELECT pia.payment_instruction_id     payment_insruction_id
                                          FROM   iby.iby_pay_instructions_all   pia
                                          )
UNION
SELECT fad.attached_document_id        attached_document_id
FROM   applsys.fnd_attached_documents  fad
WHERE  fad.entity_name                 = 'PER_ABSENCE_ATTENDANCES'
AND    fad.pk1_value                   IN(SELECT to_char(paa.absence_attendance_id) absence_attendance_id
                                          FROM   hr.per_absence_attendances         paa
                                          )
UNION
SELECT fad.attached_document_id        attached_document_id
FROM   applsys.fnd_attached_documents  fad
WHERE  fad.entity_name                 = 'XX_LOOKUP_DOCUMENT_ENTITY'
AND    fad.pk2_value                   LIKE '%BBW%%'
UNION
SELECT fad.attached_document_id        attached_document_id
FROM   applsys.fnd_attached_documents  fad
WHERE  fad.entity_name                 = 'PER_PEOPLE_F'
AND    fad.pk1_value                   IN(SELECT asg.person_id             person_id
                                          FROM   hr.per_all_assignments_f  asg
                                          )
UNION
SELECT fad.attached_document_id        attached_document_id
FROM   applsys.fnd_attached_documents  fad
WHERE  fad.entity_name                 = 'PAY_ELEMENT_ENTRIES_F'
AND    fad.pk1_value                   IN(SELECT peef.element_entry_id    element_entry_id
                                          FROM   hr.pay_element_entries_f peef
                                          )
UNION
SELECT fad.attached_document_id        attached_document_id
FROM   applsys.fnd_attached_documents  fad
WHERE  fad.entity_name                 = 'OTA_DELEGATE_BOOKINGS'
AND    fad.pk1_value                   IN(SELECT odb.booking_id             booking_id
                                          FROM   OTA.OTA_DELEGATE_BOOKINGS  ODB
                                          )


==================================================================

Once you have the attached_document_id

you can use below query


SELECT fd.* FROM FND_ATTACHED_DOCUMENTS FAD, FND_DOCUMENTS FD
WHERE FAD.DOCUMENT_ID=FD.DOCUMENT_ID;

based on datatype_id in fnd_documents

you can join with any of

,APPLSYS.FND_LOBS
,APPLSYS.FND_DOCUMENTS_SHORT_TEXT
,APPLSYS.FND_DOCUMENTS_LONG_TEXT

tables.



How to Restrict Global Assignment EFF Values by Employee Legislation in Oracle Fusion HCM

How to Restrict Global Assignment EFF Values by Employee Legislation in Oracle Fusion HCM In global Oracle Fusion HCM implementations, one...