Advanced Integration Techniques for Oracle JD Edwards EnterpriseOne – Part 2

Advanced Integration Techniques for Oracle JD Edwards EnterpriseOne – Part 2

 Guaranteed Real Time Events makes it easier to see how your data changes in Oracle JD Edwards (JDE) EnterpriseOne (E1). In this blog post, I explain how to configure Real Time Events to deliver message to the external world.

Setting Up RTE for Integration with Oracle JD Edwards EnterpriseOne

In the previous post I introduced you to three very different integration options that are supported by Oracle JD Edwards EnterpriseOne. In this post I will focus on providing some more details on how the Real Time Events (RTE) interoperability model works. This model allows external systems to receive messages in Real Time as and when changes to data occur due to business transactions.

JD Edwards over the years has supported Real Time Events. Prior to 8.9.1 it was called Classic Real Time Events, post 8.9.1 it is called Guaranteed Real Time Events. In this blog post I will cover the following topics

  • How Guaranteed RTE (Real Time Events) work
  • How to configure RTE server to deliver messages to the external world.

How Guaranteed Real-Time Events work

The JD Edwards EnterpriseOne event system implements a publish and subscribe model via JMS (Java Message Service). Events are delivered to subscribers in XML documents that contain detailed information about the event.

In order for an event to be delivered to the outside world, here is the general sequence to steps that occur inside JD Edwards EnterpriseOne.

  1. An HTML client user executes a business function request that is sent to the JD Edwards EnterpriseOne Web server.
  2. The request is forwarded to a CallObject kernel on the JD Edwards EnterpriseOne server.
  3. The CallObject kernel executes the business function, which calls the Event API to send the event data to the F90710 table.
  4. A trigger message is sent to the JD Edwards EnterpriseOne Transaction server that indicates that a new event has been added to the F90710 table.
  5. The transaction server retrieves the event data from the F90710 table and, for real-time events, converts the event data to an XML document in the appropriate format.
  6. The transaction server routes the event to the subscriber queues and subscriber topics for each subscriber that has established an active subscription for that event.
  7. When a subscriber connects to the transaction server, the subscriber receives all the events that exist in its subscription queue and subscription topic at that time.

The diagram below provides a brief overview of JD Edwards EnterpriseOne events architecture and also the sequence of steps.

Click to view larger.

How to configure RTE to deliver messages to the external world

For the purpose of this blog post I am making the assumption that the JDE transaction server has already been installed in your JD Edwards EnterpriseOne environment. I will only focus on configuring the transaction server and WebLogic server to deliver guaranteed real time events. There are primarily three areas of the system that need to be configured

  • Transaction Server in Server Manager
  • Event definition and Subscription in JD Edwards
  • JMS Queues and Connection Factory in WebLogic

Configure Transaction Server in Server Manager

This is probably the easiest part of the configuration. The transaction server sits in between the core EnterpriseOne system (where events occur) and WebLogic Server (where events are exposed to the external world). The configuration steps detailed below define how the transaction server connects to EnterpriseOne to get information about events that occur and also how to connect to the WebLogic server so that the events that occur in EnterpriseOne can be delivered to the outside world.

In order to perform these steps you will have to login to Server Manager as a user that has permission to change settings and select the Transaction Server instance that needs to be configured.

  1. How Transaction Server will connect to EnterpriseOne

The Outgoing JDENET Port is the E1 Port to which the RTE will be communicating with the E1 server (E1 Port). The Incoming JDENET Port is the port the Transaction Server will be listening from for incoming messages (outgoing RTE from E1). Verify that the ‘incoming’ port is not already in use by another application running on the same server (Business Services Server for example).

Click to view larger.

  1. How Transaction Server will connect to WebLogic

In Configuration > Real Time Events, make sure you enter the login\password for your WLS Console.

Click to view larger.

Event Definition and Subscription in JD Edwards

This part of the configuration involves setting up the core Oracle JD Edwards EnterpriseOne system for real-time events. Here is an outline of the steps that need to be performed to complete the configuration.

  • Configure OCM – As part of this config the transaction server and the port settings are setup in JDE. This will enable the transaction server to find the event system. The OCM config is done as part of the Transaction server install. Use P90701A to ensure that OCM entry exists for the RTE server that is being configured.
  • Verify UDC & Tables – This is only a verification step. The UDC’s and Tables needed for the Transaction server to deliver messages are populated during the installation of the transaction server.
  • Running Conversions – The step converts existing event data to be compatible with the new tables.
    • R90705 – Run Populate Event Activation Status Table (R90705) to create an activation record for every environment for every event defined in the F90701 table.
    • R90706 – Run the Convert Event Subscriptions (R90706) UBE to convert the subscription records in the F90702 table to records in the F90707, F907071, and F907072 tables
  • Creating Triggers – This step creates a trigger on the table F90710. The trigger is needed for events to fire when changes occur to data. Run dbtemplates.exe to create the trigger.
  • Creating Subscriptions, Events and activating them – This is a series of steps that involves using P90702A to create subscriptions, attaching events and environments to these subscriptions and finally activating them

JMS Queues and Connection Factory in WebLogic

This part of the configuration setup enables Weblogic to receive messages generated by events configured in JDE to publish messages using the JMSQUEUE subscriber. It involves creating a connection factory and a queue that will hold the messages that get generated.

The configuration processes that I have outlined above are at a high level and not a step-by-step. In my upcoming webinar I will provide a more detailed walk-through of the configuration process. Hopefully you can see the process is fairly straight-forward, and can take advantage of RTE in your environment to better integrate external systems.

Feel free to comment or contact us at Smartbridge if you have questions about RTE. In the next post in the series, I will discuss Business Services.

Want more tips and tricks? Watch our related webinar, Getting Started with JD Edwards Advanced Integration, for more advanced techniques.

By | 2017-05-31T16:17:15+00:00 May 1, 2013|Categories: ERP / JD Edwards|Tags: , |

Receive more posts just like this, right in your inbox!

↓ Sign up for emails with the latest from Smartbridge.

Sign up for emails
Or add this feed URL to your favorite blog reader.
  • Kunal Shetty

    Hi everyone

    My question around “JMS Queues and Connection Factory in WebLogic”.

    Can we configure multiple JMS Queues and Connection Factory in WebLogic ?

    Our requirement is to identifcation of RTE Messages coming out of single Instance on JDE but for different global regions. So that we can have we can have Point-to-point solution based on Publisher/ Subscriber model for each geogrphical Region define with JDE – can individual/ separate consumers are bound to these “JMS Queues and Connection Factory ” based on the regions.
    kind regards

  • Pingback: 3rd Party Interfaces with AIS and REST APIs | Deepesh M Divakaran()