Real time Synchronization of Suppliers leveraging Event Driven Architecture

Usecase

We often see that many organizations may not be in a position to adopt entire suite of Oracle SaaS applications and completely replace their existing application portfolio, rather organizations can successfully pursue coexistence strategies by selective uptake of cloud offerings that serve as a logical extension to their existing solutions.

Oracle Sourcing is the next generation application for smarter negotiations with the suppliers.  Sourcing cloud is an integral part of the Procurement Cloud and is generally implemented with other Procurement cloud products like Purchasing and Supplier Portal. Sourcing cloud can also be implemented as a standalone offering with other cloud/on-premise Procurement applications, that makes an ideal coexistence scenario.

In such coexistence scenarios, organizations across the world face typical challenges as how to create/synchronize master data and transactional data across different systems within the organization. Supplier data can flow through a number of different interconnected systemsA unique ID assigned by Oracle Procurement Cloud that identifies suppliers internally often needs to be cross referenced in many downstream applications.

This use case covers Real Time Synchronization of Suppliers data from Oracle Procurement Cloud to downstream applications. We will use Oracle Integration (OIC) to build such integration use case in conjunction with an Enterprise Messaging Platform like Apache Kafka and ATP (Autonomous Transaction Processing).

Background

Oracle Fusion Supplier Model provides a Supplier Outbound Synchronization Service feature that will generate a supplier record snapshot for any external supplier repository to consume

Real-time synchronization Implementation of Fusion supplier records to downstream application can be done in a couple of ways in Oracle Integration

1.       Implementing using Supplier Outbound Synchronization Service

When any update is made to a supplier record the synchronization service will generate a snapshot of the supplier record in an XML file that models the Fusion supplier structure and transport the document over HTTPS to a single server destination

2.      Implementing using Out of the box Supplier Create/Update Events in Procurement Cloud

The business event is triggered on each update on a supplier record including all child entities such as:

·       Business Classifications

·       Products and Services

·       Transaction Tax

·       Payments

·       Addresses

·       Sites

·       Contacts

We will use Event-driven approach to implement the Supplier Synchronization use case. At the end of this blog we will discuss about a few disadvantages of implementing using Outbound Synchronization Service instead of Events.

An Event-Driven Architecture for data and applications is a modern design approach centered around data that describes “events”. An event-driven architecture enables applications to act on these events as they occur. This is in contrast to traditional architectures, which largely dealt with data as batches of information to be inserted and updated at some defined interval, and responded to user-initiated requests rather than new information. With a scalable event-driven architecture, you can both create and respond to a large number of events in real time. An event-driven architecture is particularly well-suited for loosely coupled application architecture with a Producer and Consumer style.









The above logical architecture represents a common event-driven design pattern. Wherein, ERP cloud events feed actions in applications and repositories. The event is generated by some action, an ERP Cloud adapter receives the event, and is fed through a OIC Kafka Adapter (Producer), which is then processed in Kafka Platform, and finally, a result is delivered to a downstream application or repository. The whole use case can be achieved with Out of the box capabilities in OIC leveraging ERP Cloud Adapter in conjunction with Kafka Adapter’s Producer/Consumer capabilities. They key advantages of the architecture is that the producer framework easily fits into existing Enterprise messaging platform (ex. Oracle Streaming Service, Kafka). Moreover, the Consumer flow captures and transforms the real time events from Producer flow (ex. Supplier Updates, New PO etc) at defined interval and pass on to downstream systems to manage uniform system of record across various applications.

Configure

Enable Supplier Events

ERP Cloud Adapter supports subscribing to Supplier Create/Update Events. This is a new feature in ERP cloud and needs to be enabled.

These events include SupplierNumber and SupplierID attributes in the output payload. The Oracle Integration needs to use the event attributes to invoke the Suppliers REST API to get the required supplier information from Procurement Cloud.

From ERP Cloud Navigate to Navigator -> My Enterprise -> New Features -> Available Features. Search for “Suppliers” Functional Area

Select Enable and in Edit Suppliers, select the check box for Enable Outbound Supplier Profile Integration Using Oracle Integration Cloud



Installing Kafka

Since we will be using Kafka as Enterprise Messaging Platform to publish Supplier Information let’s us go throw quick set of steps to setup Kafka.

1.       Download KAFKA from https://kafka.apache.org/downloads

2.      Unzip the gzip kafka binary file


3.      From a command prompt run <kafka_home>bin\windows kafka-topics.bat and verify that you get a bunch of outputs

4.      Add <kafka_home>\bin\windows complete to PATH environment variable to execute the .bat from any where

5.      Kafka Uses zookeeper to coordinate the brokers/cluster topology and is a consistent file system for configuration information. So, we first start zookeeper and then kafka

6.      Create a “data” directory in <kafka_home>

7.      Create below two directories under <kafka_home>\bin to hold kafka and zookeeper data

 





8.      Edit <kafka_home>\config\zookeeper.properties and modify the dataDir as below








9.      To start zookeeper from command line execute

zookeeper-server-start.bat c:\<kafka_home>config\zookeeper.properties

10.  Edit <kafka_home>\config\server.properties and modify the log.dirs as below







11.    To start kafka from command line execute

kafka-server-start.bat c:\<kafka_home>config\server.properties

Creating Kafka Topic

1.       From a command prompt execute the below to create “supplier_topic”

> kafka-topics.bat --zookeeper 127.0.0.1:2181 --topic supplier_topic --create –partitions 3 --replication-factor 1

You should see a message that the topic created

> kafka-topics.bat --zookeeper 127.0.0.1:2181 –list

You should see list of topics including “supplier_topic”

Installing Connectivity Agent

Installing connectivity agent is mandatory in this case as we have Kafka running a local machine and it is behind firewall.

To install connectivity agent follow the steps @  https://docs.oracle.com/en/cloud/paas/integration-cloud/agent.html







Complete the high lighted steps above to install Connectivity Agent and Create an Agent Group and associate the agent to the Agent Group.

Installing ATP Database

In our usecase we want to store the Supplier information in downstream application like ATP. I am providing here a high level steps to install ATP and create Database object

Create an ATP database




 














Select Create Autonomous Database















ATPDev instance created







Select DB Connection and download the Instance Wallet

https://docs.oracle.com/en/cloud/paas/autonomous-database/adbsa/connect-download-wallet.html#GUID-B06202D2-0597-41AA-9481-3B174F75D4B1

Navigate to Service Console -> Development -> Database Actions 

Select SQL Development Tile

Run the SQL script

DROP TABLE v_Supplier;

CREATE TABLE v_Supplier (

  v_SupplierId number NOT NULL PRIMARY KEY,

  v_SupplierName varchar2(20),

  v_SupplierNumber number,

  v_BusinessRelationship varchar2(20),

  v_Status varchar2(20),

  v_DUNSNumber int,

  v_TaxRegistrationNumber varchar2(20),

  v_TaxpayerId varchar2(20),

  v_TaxpayerCountryCode varchar2(20),

  v_SupplierTypeCode varchar2(20),

  v_TaxOrganizationType varchar2(20)

);

 

Creating Connections in OIC

a.      Create Apache Kafka Adapter Connection

Create a new connection selecting Apache Kafka Adapter and provide the connection configuration






b.      Create ATP Adapter Connection

Connection Configuration

Provide Service name from tnsnames.ora file available in the Wallet.zip downloaded previously








Choose Security Auth scheme as JDBC over SSL and provide the auth related information

·       Wallet

·       Wallet Password

·       DB Username and Password

Identify the service name from tnsnames.ora in the Wallet file (ex: atpdev_low)






Check the adapter docs if you plan to use other flavors of connectivity

Implementation of Integration Flow

We need to implement 2 Integration flow as per the logical architecture defined

  1.                  Producer Flow
  2.                   Consumer Flow

Let’s see some high level steps to implement both the Integration flows

Producer Flow in OIC




Logic

  •                    Business Event raised from ERP Cloud is captured in OIC (ERP Cloud Adapter)
  •                    Enrich Supplier Info Invoking Supplier REST Service (ERP Cloud Adapter)
  •                   Produce to Kafka Topic (Kafka Adapter)

 

1.       updateSupplier (ERP Cloud Adapter Connection) – Select Supplier Updated event. This public event signals when a supplier is updated










2.      getSupplierInfo (ERP Cloud Adapter Connection)  – Invoke Suppliers Rest resource to get enriched supplier info



 







3.       Map to getSupplierInfo – Map  SupplierId to the REST API template parameters






4.      produceSupplierMessage  (Kafka Adapter Connection) –

a.      Select Publish record to Kafka Topic







b.      Select the Supplier topic created previously











c.       Provide a sample Supplier Response Json Message Structure to publish and Map the required elements

Consumer Flow in OIC




Logical flow

  •         Consume from the Kafka Topic (Kafka Adapter)
  •       Upsert Supplier information into database (ATP Adapter)

1.       consumeSupplierUpdate (Kafka Adapter Connection) – Consume from supplier_topic and provide a consumer group with a polling frequency









2.      Provide a sample JSON document used in Producer Flow

3.      upsertSupplier  (ATP Adapter Connection) – upsert Supplier Record in ATP Database Table










And Select the supplier table



 






Testing the End-End Flow

Login into ERP Cloud with Procurement Manager Role and select Suppliers









Select Manage Suppliers Task and search for a Supplier and update a field. Update DUNS number.

Monitoring

Navigate to OIC Monitoring tab and observe two flow got triggered






Producer Flow







Consumer Flow



 


 

 


Implementation Best Practice

 At the starting of the blog we mentioned about 2 options to implement Real time Supplier Synchronization in OIC. Let’s see some pros & cons and the best design pattern to implement

Disadvantages of Implementing Supplier Outbound Sync Service

  • Need to create an explicit Interface implementing Supplier Outbound Sync Service WSDL à printXMLAsync Operation
  • Response XML String from the service needs to be converted to mapper aware XML message which requires additional orchestration steps in the OIC Integration Flow
  • Importantly, on an Event condition of Supplier record XML payload is sent across to OIC endpoint which is Fire and Forget pattern by Fusion.

Recommendation is to Leverage OIC Out of the box ERP Cloud Adapter aware Supplier Business Events

  • Business Events are natively supported by Oracle ERP Cloud Adapter which protects from any changes in ERP Cloud WSDL interface changes just in case. 
  • When an Event based integration is activated, OIC creates a subscription entry in Oracle ERP Cloud. For some reason if the Event based Integration Flow is not reachable ERP Cloud will re-try the business events multiple times with exponential time gap.















Comments

  1. Great article. Please see if you can elaborate on ERP behavior on delivery of event to OIC specially when OIc down or any other reason of failure, what is done to ensure event is always delivered

    ReplyDelete
  2. Mohan - Deloitte

    Nice Article

    ReplyDelete
  3. i am following you 2020 your Blog spot @kishore very brief Explanation you will give

    Good article helps more people who are working on

    Oracle ERP Cloud Implementations and technical consultants.

    ReplyDelete
  4. Great blog! This is really helpful for my reference. Do share more such posts and keep us updated.
    Latest Version Of Android
    Latest Android Version

    ReplyDelete
  5. Hi Kishore.

    I am have been trying to achieve Event based Subscription in OIC from Oracle Cloud using Oracle ERP Cloud adapter. However unable to find any document which tells me what setup is required on both instances for using Token based auth. I tried setting up using old method (csf-key) but that also doesnt seems to be working. Can you please point out a setup document for Token based authentication.

    ReplyDelete
    Replies
    1. With update config steps, able to receive messages in OIC. Thanks a lot

      Delete
  6. It is amazing and wonderful to visit your site.Thanks for sharing this information
    Mulesoft Online Training in India
    Best Mulesoft Training

    ReplyDelete
  7. Thanks for sharing the informative post. Looking for erp software in chennai, with free consultation.

    ReplyDelete
  8. Insightful post! Event-driven architectures are becoming essential for modern integrations. How scalable is this setup with Kafka when handling thousands of supplier updates per minute?
    Fabric Roll rack delhi
    warehouse racking system delhi

    ReplyDelete
  9. This use case is a fantastic example of combining modern and legacy systems. Do you think adding AI for predictive analytics could enhance the process further?
    Fabric Roll rack india
    warehouse racking system india

    ReplyDelete
  10. The step-by-step guide for Kafka installation is helpful. Could you elaborate on how Kafka ensures data consistency in high-load environments?
    Warehouse Pallet Racking System india
    two tier rack India

    ReplyDelete
  11. Great explanation of the differences between traditional and event-driven architectures. How do you ensure minimal latency in supplier data synchronization?
    Heavy duty pallet rack
    Warehouse storage rack

    ReplyDelete
  12. Enabling supplier events in ERP Cloud seems straightforward. Is there a way to monitor the success/failure of these events in real-time?
    Spare part storage rack india
    Fabric Roll rack noida

    ReplyDelete
  13. This blog highlights the flexibility of Oracle Integration Cloud. How does the performance compare when using Oracle Streaming Service versus Kafka?
    Heavy Duty Warehouse Racking noida
    Warehouse Mezzanine Floor noida

    ReplyDelete
  14. The producer-consumer flow diagram is clear. Could you share insights on handling errors during message consumption in Kafka?
    Industrial Pallet Racks
    Spare part storage rack noida

    ReplyDelete
  15. A well-written guide! Are there specific security concerns when using event-driven architecture with sensitive supplier data?
    Slotted Angle racks lucknow
    Racking system lucknow

    ReplyDelete
  16. The comparison of synchronization service and events is valuable. What specific scenarios would you recommend using one approach over the other?
    Spare part storage rack lucknow
    Dust Collector

    ReplyDelete
  17. The integration of Kafka with OIC is seamless. How does it compare with other messaging platforms like RabbitMQ?
    Selective Pallet Racking System delhi
    two tier rack delhi

    ReplyDelete
  18. It’s great to see Oracle adapting to coexistence strategies. Any tips on transitioning from batch-based to real-time synchronization smoothly?
    Mezzanine floor India
    Heavy Duty Warehouse Racking india

    ReplyDelete
  19. The use of Autonomous Transaction Processing (ATP) is fascinating. Can it handle transactional rollbacks if supplier updates fail downstream?
    barrel storage rack india
    Heavy duty pallet rack noida

    ReplyDelete
  20. This blog gives a clear understanding of the architecture. Could you add some metrics around system performance improvements after implementation?
    Multi tier rack noida
    Industrial Pallet Racks

    ReplyDelete
  21. The step-by-step Kafka setup guide is detailed. For organizations already using Oracle Streaming Service, is Kafka still recommended?
    Heavy Duty Rack Lucknow
    Multi tier rack lucknow

    ReplyDelete
  22. Very informative! How does Oracle Integration Cloud manage event ordering in case of high-frequency supplier updates?
    Pigeon hole rack lucknnow
    Dust Collector

    ReplyDelete

Post a Comment