Tuesday, 24 June 2025

This risks of containerising JDE

To container or not container?

We've looked into containerising JDE for a long time.  We've had it running in the lab, we've done extensive performance testing too...  We have struggled to make the leap when it comes to our customers production environments.  The technology should be supported IMHO, but oracle do not support it.  They do not test any of their updates or patches on a containerised implementation.  So would I risk my customers uptime when I cannot get unequivocal support from my primary vendor (oracle), probably not!

Also, you might want to critically evaluate your weblogic licencing, as that can get expensive when deploying on the wrong cloud services.

Problem 1: WebLogic licences

1. Oracle Licensing Model for WebLogic

Oracle WebLogic is typically licensed in one of two ways:

  • Per Processor (CPU) License – based on the number of Oracle-licensed processor cores

  • Named User Plus (NUP) – based on the number of users, with minimums tied to processor count

When containerising, Per Processor is the model most affected.


How CPU Count is Calculated in Containers

Oracle’s policy is clear: Oracle does not recognise container limits as a licensing boundary unless you're using an Oracle-approved hard partitioning technology.

This means:

If you deploy WebLogic inside Docker or Kubernetes, Oracle may count all physical CPU cores on the host unless you use a licensing-compliant method to restrict it.

Example:

  • You run WebLogic in a container limited to 2 vCPUs on a VM with 64 cores.

  • Oracle may still require you to license all 64 cores, unless you use an approved virtualisation technology (like Oracle VM or physical partitioning on Oracle SPARC hardware).


Oracle’s Stand on Virtualisation and Containers

Oracle’s Partitioning Policy document explicitly states:

"Oracle does not recognise soft partitioning (e.g., cgroups, Docker limits, Kubernetes node selectors) as a means to limit licensing requirements."

So:

  • Docker/K8s CPU limits do not restrict licensing scope

  • Hard partitioning (e.g., Oracle LDOMs, IBM PowerVM) is required to reduce licensable CPU

Question Answer
Can you containerise WebLogic? Yes, technically, but licensing must be handled carefully.
How is CPU count calculated? Oracle counts all cores on the host unless hard-partitioned using approved methods.
What are the risks? Over-licensing or non-compliance in audit scenarios.
Best practices? Use OCI, or hard partitioned environments. Avoid relying on Docker/K8s limits alone.


If you do not licence WLS with technology foundation (and many customers do not), then you cannot use any public k8 or docker services, as their soft partitioning is not recognised by oracle.  This is putting you at risk in a licence audit.

Given the above, you pretty much need to run docker or k8 on a dedicated host, which is going to depreciate the availability gains of containers.

Problem 2: You are running an unsupported architecture

I think the risks are more apparent with the latest features,  especially for their more technical components of no downtime package deployments, filesystem integrations and file naming techniques and a few other troublesome edge cases that need additional configuration and support.  I'd do it for my customers if they did not think support was important (they stopped paying maintenance for example).

E1: OCI: Support Statement for Running Containerized JDE on Oracle Cloud Infrastructure (Doc ID 2421088.1)

... While the product development team will be available to actively collaborate with your “containerization of JD Edwards” project, we make no commitments right now that any issue that is specific to containerized deployment will be addressed under standard support model. In other words, if the issue cannot be replicated in a non-containerized environment, the product development team may or may not provide a fix for that...






Tuesday, 4 February 2025

Our AI infused JDE helper - can be yours

For a small monthly cost, we can load all of your JD Edwards manuals into our secure Azure based vector DB and all you to have a personalised JDE AI assistant.  Forget old ways of providing training and use all of the assets that you currently own.

Here is how it works - just have a turn:

https://capps-backend-7hl6h2whmhtla.jollyplant-40694b9e.australiaeast.azurecontainerapps.io/#/

It has a chat mode and a "ask a question" mode.

This is a really nice way of getting your JDE users to be better at prompting AI, which as we already know is an important life skill.  When you need to get better information, you'll get better at prompting.

Remember the RISEN acronym:

1. Role

Definition: Clarify the role or perspective the response should take. This can include specifying whether the prompt should be answered from the viewpoint of an expert, a neutral observer, or another defined persona. 

Example: For a prompt aimed at providing investment advice, the role might be defined as that of a financial advisor.

2. Instructions

Definition: Provide clear, direct instructions on what the prompt needs to accomplish. This typically involves stating explicitly what the response should include or address. 

Example: "List the top three risks of investing in emerging markets."

3. Steps

Definition: Outline the steps or the logical sequence in which the response should be structured. This helps in organizing the response in a coherent and logical manner. 

Example: "Start with a brief introduction to emerging markets, followed by a detailed analysis of each identified risk, and conclude with a summary."

4. End goal

Definition: Define the ultimate purpose or the actionable outcome expected from the prompt. This helps in aligning the prompt with the desired outcome or decision-making process. 

Example: "The end goal is to help an investor understand potential challenges in emerging markets to make an informed investment decision."

5. Narrowing

Definition: Narrow the focus of the prompt to avoid broad or overly general responses. This involves setting boundaries or constraints to hone in on the most relevant and specific information. 

Example: "Focus only on economic and political risks, excluding environmental factors."


Final Example Using RISEN

Prompt:

Role: As a financial advisor,

Instructions: provide an analysis of the current risks in investing in emerging markets.

Steps: Begin with a definition of what constitutes an emerging market. List and explain the top three economic and political risks. Use recent data to support your points and conclude with a brief summary of your analysis.

End goal: Enable potential investors to gauge whether investing in emerging markets aligns with their risk tolerance and investment goals.

Narrowing: Limit your discussion to economic and political risks; do not include social or environmental risks.

Final Prompt to the Model: 

"Assuming the role of a financial advisor, provide a comprehensive analysis of the current economic and political risks associated with investing in emerging markets. Start by defining 'emerging markets,' then identify and elaborate on the top three risks, supported by the most recent data. Conclude with a summary that helps potential investors understand these risks in the context of their personal investment strategies. Focus solely on economic and political aspects, excluding any social or environmental considerations."

My final prompt is WAY cooler.  Look how I can coach the model to use my specific JDE instance to coerce any URLs that it replies with!  It's like programming with words...

"Please be as comprehensive as you can be.  Assuming the role of a JDE administrator provide a comprehensive way of preventing users from being able to run certain applications in JDE. Start by describing the different types of security that are available in JD Edwards. conclude with options available to prevent users from running an application.   please provide a shortcut to the JDE work with user/role security application as part of your response.   If there are any URL's in what is returned that contains JDE, please substitute the domain component with https://f5dv.fusion5.cloud:443/jde/ShortcutLauncher?OID=<PROGRAM NAME>. Where <PROGRAM NAME> is the JDE application name, starting with a P."

This structured approach ensures the prompt is clear, focused, and aligned with the intended output, making it a powerful tool for guiding AI or any responsive system.




Remember that you also have a pile of options for increasing the reference count and more.  There is also a way of ensuring that you have as much default prompt as your instance can handle, which is how I'd build up my instance.




If you've made it this far - let's be honest.  I think that you want your own!  Get in contact.


This risks of containerising JDE