Tuesday, April 6, 2010

Oracle BRM VM Image

We have installed various versions of Oracle BRM on multiple platforms countless times. The installation process is mostly free of pain now, still it is a time consuming task. Imagine you have to replicate it across a dozen development, test and integration instances and eventually into production. Suddenly managing configuration files and port numbers manually becomes a mission impossible.

For development and training purpose, the answer is simple, it's VM. Virtualization is a technology spread-headed by VMWare, it is now also adopted by Oracle. A VMWare Oracle BRM image is a virtual machine running CentOS, containing a Oracle database and a functioning BRM environment. Just drop it into a VMWare player and voilà, you are set. The BRM image on Oracle VM follows the same principle, but it is a little more cumbersome to use. Oracle VM Server installs itself on a physical server, thus if you want it to be portable, be prepare to have a i7 Quadcore laptop. We start with a template let's say OEL5 and 11g database, install the out-of-the-box BRM once, then save and reuse the template. Nowadays we can produce VMWare or Oracle VM BRM images on any supported configuration.

Okay what about deploying BRM into production environments with various configuration? To do that we'll introduce a Release Management concept built specifically for this purpose. Please stay tune.

Wednesday, February 3, 2010

Integration Using Oracle Stream Advanced Queues

Oracle Advanced Queues have been around for a while. It was part of Oracle DBMS since 8.1.5. Now as part of Oracle Streams it provides database-integrated message queuing functionality. You get persistent or non-persistent queuing model, local or remote propagation and all operational benefits of high availability, scalability, and reliability of the underlying database.

It has always been a challenge to integrate BRM with other enterprise applications. The inbound interface is available in C/C++/Java/Perl, but the learning curve to be familiar with data structure and programming concept is steep. On the outbound direction, the native Data Manager framework also requires intensive coding and detailed knowledge of BRM, data format and  interface API you want to talk to.

For a recent integration project we've decided to employ Oracle AQ for both inbound/outbound real-time and batch transactions between BRM and EBS. Each application maintains the inbound and the outbound AQ in its local database. The outbound BRM AQ is linked to the inbound EBS AQ; similarly the outbound EBS AQ is linked to the inbound BRM AQ using AQ propagation mechanism.

Each application is responsible for enqueuing and dequeuing operation of its own queues. The Oracle Streams AQ platform is responsible for message delivery, propagation, transactional integrity, persistence and high availability.

Since 7.3.1 BRM provides a DM_AQ component, which allows dumping business events with XML payload into an Oracle AQ. We leverage this existing data manager to push payload for real-time transactions such as inventory item changes and orders from BRM to the external system.

On the inbound we develop a new custom data manager which uses OCI to dequeue messages from the inbound queue. Thus BRM is able to pull payload for real-time transactions from the external system.

The database-to-database AQ propagation is used to move messages between the queues. The propagation setup is the trickiest part, but in the end the whole scheme has been a success.

Thursday, August 27, 2009

Oracle Application Integration Architecture

Enterprise application integration has always been a challenge for businesses of all sizes. The approach of integrating 'best-of-breed' products definitely has its share of success stories, but for each successful implementation I am aware of, there are many more projects without a happy ending. The sheer scope and size of those integration projects make it difficult to get them to a successful completion within a given time frame and budget.

In the past few years, Oracle has gone on an acquisition spree. Starting with PeopleSoft, it keeps snapping up business software companies at a dizzying rate. With the acquisition of Sun, it now has a complete set of business application and hardware to support them. All it needs now is a good integration platform to link everything together in the Oracle world. Here comes Oracle Application Integration Architecture.

Through AIA platform Oracle aims to take a big piece out of the system integration market. AIA enables product-based integration of all applications in Oracle repertoire. It lets you abstract your business models, workflows, rules, exceptions... out of specific applications. The business rules are applied and business models translated into application specific data formats through a set of connectors. Even better, Oracle will group the most frequently used flows between its application into Process Integration Packs. So in the perfect world you just select the apps, buy the AIA platform and the specific PIP, then voila your business systems are up and running.

I'll come back to discuss AIA from Communication industry perspective, what can and can't be done using the standard PIP. Please stay tune.

Thursday, May 15, 2008

Web Service Integration

Service oriented architecture is the latest trend (or buzz, depends on your point of view) in enterprise applications these days. So naturally comes the request for us to integrate Infranet using web service to a .NET environment.

The latest version of Infranet, now officially Oracle CBRM, does have a very simple web service module. It is essentially a thin Java web service deployed on Apache Axis. The good thing is it exposes the PCM API to you, albeit it does nothing to help you to learn it. The bad thing is you are on your own in terms of constructing flists, manually in XML!!! The distributed example figures out a way to build the flist by using the Java API, then converts it to XML using pin_flist_to_xml. Hmm if I know enough about the API to build flist in Java, then I may as well open a PCM context and call opcodes directly.

Anyway, I use wsdl2h shipped with Visual Studio to generate the stub from Infranet WSDL, then contruct the flist through XML mapping templates. Drop a simple ASPX page into IIS and voila you can call commit customer from there.

The outbound interface is a little trickier, since it involves a custom Data Manager, and DM requires a C library to call an external web service. After searching a while I select Apache Axis for C++ and gSoap for evaluation. After one test and looking though documentation, I decide to use gSoap.

Here again it involves parsing WSDL to generate the stub in C, gSoap provides wsdl2h and soapcpp2 utilities for that task. It is a little tricky to compile gSoap runtime into DLL, but it helps that the provided documentation is excellent.

Now I have an inbound and outbound web service for Infranet. Is it time to build plugins for EAI suites such as Tibco, Fiorano or we will all use Oracle Fusion?

Thursday, August 30, 2007

Refund

Out of the box refund logic is absurd! It imposes arbitrary constrain on early refund of payment. It is very inflexible in terms of what is refundable what is not. The way we normally change this kind of behavior is modifying the hooks (policy op-code in Infranet jargon). Unfortunately refund flow has no predefined hooks, so I end up dumping it a write a custom one.

Wednesday, May 23, 2007

Application Architecture

I always like software applications with well-defined application programming interfaces (API) and modular architecture. This is one of the stronger points of Portal Infranet. It gives you fairly well-defined demarcation lines between the core application logic and external interfaces as well as between different core modules. The application core is a set of shared libraries and predefined data access modules and a series of preprocessing and post-processing hooks. Need to modify the business rules? Change the hooks. New functionality? Just add a new core module. Have a new data source? Whip up a new connector... It goes like that.

I have seen many popular enterprise applications that have no comparable architecture. Data just go straight from web user interface to database tables. But that does not seem to relate to how well they sell :) Technology is details. Marketing is king.

Wednesday, May 9, 2007

Deferred Revenue Recognition -- Part II

It turns out the rate flag is not reliably set for all cases, but it is set for certain cases. I just have to make certain assumption when I can't figure out its value. It happens for the very first cycle charge, which helps since I know the context of the first cycle. Anyway it looks like I can get this feature to work on 7.2, admittedly it is not easy. But hey no pain no gain :)