Search This Blog

Showing posts with label Browser. Show all posts
Showing posts with label Browser. Show all posts

Sunday, July 6, 2025

Supercharging Oracle HCM Research and Support with a CLI Tool to Obtain Structured Documentation Metadata

As an Oracle Cloud HCM customer and practitioner, I frequently rely on the Oracle Cloud Applications Documentation to understand how various tables and views are structured. Whether I’m building BI Publisher queries, supporting Fast Formulas, or troubleshooting integrations, knowing the exact column names and their meanings is essential.

But manually digging through dozens (or hundreds) of HTML pages is time-consuming and repetitive.

So, I decided to automate it in a way that would allow me to have conversations with this data versus clicking through hundreds of pages aimlessly looking for answers.

What I Built

I created a Python-based command-line tool that extracts Oracle's publicly available HCM documentation, regarding tables and views, and outputs structured metadata for tables and views into clean JSON files. This helps streamline research, improve automation, and accelerate troubleshooting for internal support.

Here’s what it does:

  • Parses the toc.js file from Oracle’s documentation site to extract all table/view URLs

  • Visits each documentation page using a headless browser

  • Extracts metadata such as:

    • For Tables: table name, description, details, columns (with data types), primary keys, and indexes

    • For Views: view name, description, details, column names, and SQL query

No more flipping through documentation pages—just clean, structured data ready for analysis or integration into support tools, with many useful use cases including those in the AI landscape.


How It Works

Step 1: Extract Links from toc.js

The Oracle documentation includes a toc.js file which holds all the links to individual table and view pages. The tool first parses that file to build a list of URLs.

python oracle_hcm_cli_tool.py --toc toc.js --csv oracle_links.csv

Step 2: Convert CSV to JSON

For downstream processing, the CSV is converted to a simple JSON array of {name, url} pairs.

python oracle_hcm_cli_tool.py --csv oracle_links.csv --json oracle_links.json

Step 3: Extract Table and View Metadata

The final step launches a headless browser with Playwright and visits each page to extract structured metadata.

python oracle_hcm_cli_tool.py --json oracle_links.json --tables 
oracle_tables.json --views oracle_views.json

Or all three steps in one:

python oracle_hcm_cli_tool.py --toc toc.js --csv oracle_links.csv 
--json oracle_links.json --tables tables.json --views views.json

Output Format

Here’s what the output looks like.

For Tables (tables.json)

{
  "table_name": "PER_ALL_PEOPLE_F",
  "url": "...",
  "description": "This table stores information about...",
  "details": "Schema: FUSION Object owner: PER Object type: TABLE Tablespace: APPS_TS_TX_DATA",
  "columns": [
    {
      "column_name": "PERSON_ID",
      "data_type": "NUMBER",
      "length": "",
      "precision": "18",
      "not_null": true,
      "description": "System generated surrogate key"
    },
    ...
  ],
  "primary_key": {
    "name": "PER_PEOPLE_F_PK",
    "columns": ["PERSON_ID", "EFFECTIVE_START_DATE", "EFFECTIVE_END_DATE"]
  },
  "indexes": [
    {
      "name": "PER_PEOPLE_F_U1",
      "uniqueness": "Unique",
      "columns": ["BUSINESS_GROUP_ID", "PERSON_NUMBER"]
    }
  ]
}

For Views (views.json)

{
  "view_name": "FAI_DEEP_LINKS_VL",
  "url": "...",
  "description": "This view shows deep link metadata...",
  "details": "Schema: FUSION Object owner: FAI Object type: VIEW",
  "columns": [
    { "column_name": "DEEP_LINK_ID" },
    { "column_name": "DEEP_LINK_CODE" },
    ...
  ],
  "sql_query": "SELECT ... FROM FAI_DEEP_LINKS_B b ..."
}

Why This Is Useful

This tool is a game-changer if you:

  • Frequently need to understand Oracle's schema to troubleshoot or write custom reports

  • Work in integrations, BI, or payroll support and need faster insights

  • Want to build dashboards or internal tools that visualize schema metadata

  • Need a starting point for building generative AI agents or search interfaces that utilize documentation in order to drive intelligent insights

  • This same approach can be followed for Oracle ERP, and other use cases, for Oracle customers


⚠️ Disclaimer

Disclaimer: 

This tool and blog post are independently created for research, education, and internal productivity enhancement by an Oracle customer. 

All references to Oracle® products and documentation are made strictly for educational and interoperability purposes. 

Oracle, Java, and MySQL are registered trademarks of Oracle and/or its affiliates. 

This tool is not affiliated with, endorsed by, or sponsored by Oracle Corporation.

Metadata shown (such as table names and column names) are extracted from publicly accessible Oracle documentation. 

No proprietary documentation or licensed software is redistributed or reproduced in full.

Always refer to Oracle Cloud Documentation for official and up-to-date content.


Want to Try It?

You can clone the tool and try it for yourself:

https://github.com/TheOwner-glitch/oracle_hcm_metadata_extractor

Happy automating!

Wednesday, December 26, 2018

The Oracle EBS Invalid Object Utility


If you are familiar with Oracle databases then you are familiar with invalid objects. Specially in the realm of EBS, where making a code change to a package, changing a table or applying a patch can cause many objects to become invalid within the various schemas in your database. There are of course tables you can query to see which objects are invalid, like dba_objects, where you can see whether a particular object is in an invalid state. However, the reason as to why that is, is not as easy to discern.

Here is where the EBS Invalid Object Utility (Doc ID 2214169.1) comes in. According to Oracle, "this utility is provided by Oracle Support to proactively assist you with maintaining Oracle Application environments and can also be used for data collection by Support engineers".

So, what does it do? It generates an HTML output with good details around invalid objects in the target instance and insights as to why they are invalid. If you have ongoing research efforts to reduce the invalid objects within your EBS Oracle database then this is a must, also it is a great a tool going forward whenever you need to research any invalid objects. A good use case would be to run the utility after releases or maintenance activities where patches are applied in order to get information regarding any objects that may have become invalid and why that happened.

Unlike your basic SQL against the tables provided by Oracle, the UI within the report looks great, and aside from aiding the research of invalid objects it has a couple of additional features. First is the "droppable" objects feature, which lists obsolete objects that can be dropped, since many objects don’t get dropped automatically after patches or upgrades, even if they get deprecated, thus creating noise within your instance and making subsequent upgrades harder and true invalid objects difficult to mine. The second additional feature is the patches applied feature, this one is really useful since it helps show which patch caused which object to become invalid, which really narrows down the root cause analysis as to why an object became invalid after a patch was applied.

There is no configuration required, all that is required is for the utility to be unzipped and executed. There are some basic requirements such as having Perl installed and the APPS environment set, all of which can be seen in the note I included above.

Oracle has a dedicated thread to share feedback regarding the utility and ask any questions, the thread can be found at: https://community.oracle.com/docs/DOC-1011252

Happy invalid objects hunting!

Thursday, December 20, 2018

Java Web Start for Oracle EBS


Hello Everyone,

I have been exploring options in regards to our dependency on Internet Explorer (slow and clunky) due to the fact that we rely on the Java Plug-in (NPAPI) to launch the EBS Forms, and IE is the last reliable browser to support the Netscape Plug-in Application Programming Interface (NPAPI), which limits our users to only utilize this browser. Additionally, Microsoft continues to slowly but surely phase out IE in favor of Edge.

Those used to be our only problems, Oracle planned to deprecate the Java Plug-in for web browsers starting with the release of Java SE 9 (and they have).

The solution that Oracle is now offering in regards to these problems is Java Web Start. Java Web Start applications can be launched independently of a browser since they do not rely on a browser plug-in, and it provides a migration path from Java applets.

Below is a snippet of the architectural differences between the NPAPI approach and the Java Web Start approach:




The below is a snippet from Oracle in regards to Java Web Start:

What is Java Web Start?

Java Web Start provides a browser-independent architecture for deploying Java 2 technology-based applications to the client desktop. With Java Web Start, users can launch a Java application by clicking a link in a web page. The link points to a Java Network Launch Protocol (JNLP) file, which instructs Java Web Start software to download, cache, and run the application. This way, users can download and launch applications without going through additional installation procedures.

Java Web Start software is installed as part of the Java Runtime Environment (JRE) software. Users do not have to install Java Web Start software separately or perform additional tasks to use Java Web Start applications.


What will this help solve?

  1. Oracle, and modern browsers, will soon (already have) stop supporting NPAPI and launching Oracle Forms as we do today will not be possible (without major security concerns).
  2. Many On-Prem EBS shops have issues today keeping up with JRE versions, and continue to use JRE 6 or 7, due to complexities around signing JAR files and the JRE executable (and compatibility issues with customizations).
  3. Internal security guidance at most companies is aggressively moving to being more up to date with JRE versions on workstations, and Java Web Start is less dependent on the JRE and Oracle is working hard on ensuring the latest versions of JRE support Java Web Start.
  4. Users can again utilize their preferred browser to navigate Oracle EBS Forms (such as Chrome, Firefox and Edge), and will no longer be limited to Internet Explorer.
In terms of implementation, if you are still on SSL, I believe you should combine these initiatives (Webstart and TLS migration) given you will also need to perform Forms testing when implementing TLS due to certain pre-requisite patches, and some tech-stack prerequisites are shared.

These are not nice to haves, this is the guidance from Oracle in terms of where they are moving with Forms and browser security. I believe the sooner you take these on the better, both of these are recommendations/mandates from Oracle noted in the Quarterly EBS Upgrade Recommendations: July 2018 Edition (and previous editions going back to 2017, however, they weren’t very mature).

I recommend you do a POC of the Java Web Start component by applying the pre-requisite patches in a test environment to test functionality and some key custom forms (which Oracle says should be fully supported by switching from NPAPI to Java Web Start).

Below are some key documents around Java Web Start (which is now fully supported for Oracle E-Business Suite Releases 12.2 and 12.1):

Using Java Web Start with Oracle E-Business Suite (Doc ID 2188898.1)




Thanks,
Julio

SSL to TLS, Oracle EBS 12.2


Hello Everyone,

In reviewing the Quarterly EBS Upgrade Recommendations: July 2018 Edition one of the key recommendations is to migrate from SSL to TLS.

12.2 inbound, outbound, and loopback connections are now (as of Q3 2016) certified with TLS 1.2, 1.1, and 1.0 as noted in the below article:


The below doc ID contains the instructions for the move:

Enabling TLS in Oracle E-Business Suite Release 12.2 (Doc ID 1367293.1)

There is a  workflow patch, in addition to performing the migration work, so there is definitely a lot to do, specially if you are on an older version of the AD & TXK patches and your JDK version is pretty outdated.

The benefits for this are many, including easing the path to making your EBS accessible to external clients and better browser security!

Thanks,
Julio