Oracle SOA Suite 12c: points to consider during migration from 11g to 12cPublished on: Author: Eduardo Barra Cordeiro Category: Oracle
The Oracle SOA Suite 12c version is available since some years ago, but we still having companies with 11g version with plans to migrate to the newest version. I like to share some tips and knowledge based on my project experience.
As part of the migration project you need to define what kind of strategy you will use to move to 12c. You should consider at least two options: in place (using Oracle upgrade scripts) and parallel (new domains with a new installation from the scratch). Below you can find some pros and cons for both:
How to migrate the code?
If you ask me: will I have success deploying the same 11g code in 12c servers? Based on my experience, yes, you will. I didn’t had maggior issues deploying the exact same 11g code in 12c domains, even it it will depend on the activities that you are using.
But… Oracle suggests to open your code in JDeveloper 12c first, upgrade the content using the IDE wizard to then deploy in 12c servers. And it make senses if you consider the new features available only in 12c, like Maven integration, subprocess and templates (see point 5 in this post for complete list of new features). If you don’t have development team available, go ahead and deploy your 11g code. Probably you will just need to test everything and correct some minor defects.
Zero downtime migration
If you are planning a parallel migration, in the launch day you can trigger new instances to new domains and keep the open instances in old 11g domain for a while. It will be a quite simple for synchronous scenario.
In case you have long running instances, probably the scenario will be a little more complex and you will need to include a business rules to mediate the new message incomes. Based on rules you can define if the message must be sent to old or new domains.
VM’s X physical boxes
Nowadays keep your domains in physical boxes will reduce your flexibility and scalability. With all Weblogic features available to quickly add nodes when need (like Thanksgiving holidays), I would suggest have everything using VM’s. Note that you must have a good study in case your 11g domains are using physical to confirm your VM setup.
12c new features
In the Oracle documentation you can find complete information about the new features. Below I tried to bring some of them, including some that is not originally documented in the official paper:
a) JDeveloper with integrated WebLogic Server
The Quick Start install provides the foundation for a single user development environment, which includes all Oracle SOA Suite core components - Oracle BPEL Process Manager, Oracle Human Workflow, Oracle Business Rules, Oracle Mediator, Oracle Service Bus, Oracle Technology Adapters, Oracle Enterprise Scheduler, SOA Spring Component and Enterprise Manager Fusion Middleware Control. In addition, Oracle JDeveloper is installed with all SOA IDE extensions and an integrated WebLogic Server.
b) Unified Design Interface, including OSB
Oracle SOA Suite 12c integrates the major components for Oracle SOA Suite, Oracle Service Bus and Oracle Event Processing into a single IDE. This feature simplifies integration by eliminating the need to train developers, administrators, architects and others on separate components for every aspect of integration. This not means that you will like to develop OSB components in JDeveloper. :-)
- Project templates
Are a new way of creating a SOA project instead of starting with an empty composite. The template can include predefined components, as well as services and references. For example, frequently used adapters and transformations can be pre-configured in a template to eliminate the need to recreate the same components every time a new project is created.
- Component templates
Package one main component, for example a BPEL process, including all references (adapters and bindings) invoked by the process. You can enforce best practices by packaging a BPEL process with a pre-defined fault handler and a number of mandatory variables as a component template and sharing it across departments. By providing this template to all developers, you ensure a consistent way of handling faults and naming variables.
- Custom activity templates
Consist of a group of activities in a BPEL process, which can include partner-links and external services. The templates are available within the BPEL palette and can be dragged and dropped into any BPEL process. You can for example package a BPEL scope, consisting of a complex assign or transformation and the invocation of an external web service. By sharing this scope, you eliminate the chances of introducing errors and of course save development time through reuse.
d) BPEL subprocess
A BPEL subprocess is actually not a complete process, but a fragment that modularizes a reusable piece of business logic. This fragment can include partnerlinks and references and can be invoked from other “parent” BPEL processes through a new “call” activity. A subprocess doesn’t have an interface, like a standard BPEL process does. You can best compare it to a subroutine in an object-oriented programming language. At run-time, it executes completely in the context of the parent process, permitting access to process variables and inheriting fault handling and compensation logic. Oracle SOA Suite 12c provides two types of BPEL subprocesses:
- An inline subprocess
Is implemented as part of a parent BPEL process and only visible to this one process. It can be invoked anywhere within the parent.
- A standalone subprocess
Can be invoked by all BPEL processes within the same composite and has a visual representation in the composite editor. You can see in the image below that the wire between the parent and the subprocess is represented as a dotted line to visualize the difference to a normal wire in a composite.
e) Debugger & Tester Enhancements
Oracle SOA Suite 12c includes a visual debugger in Oracle JDeveloper that allows the setting of breakpoints within a SOA composite, a BPEL process and a Service Bus pipeline. For composite breakpoints, you have a choice between request and reply breakpoints or a breakpoint pair. Below image shows a BPEL process with a SOAP interface and two breakpoint pairs. The debugger will stop four times: after the SOAP requests is received, before the BPEL process starts, after the BPEL process completes and before the SOAP response is returned.
The SOA Suite test framework, already available in previous releases, has been enhanced in Oracle SOA Suite 12c. As part of a test definition, input and output messages can be auto-generated or loaded from an existing sample file. Request and response messages as well as faults can be asserted and external services and faults can be emulated to avoid testing of backend systems. The actual test can be run directly within JDeveloper, which also shows detailed reports of every test run. There’s no need anymore to switch between JDeveloper and Enterprise Manager Fusion Middleware Control to define, run and analyze tests.
f) Data Translations & Transformations
- Native XSD (nXSD)
- EXtensible Stylesheet Language (XSLT)
- XSLT templates are used for modularity – similar to SOA and pipeline templates – and can be compared to a method in an object-oriented programming language. They allow a single XSLT stylesheet to be broken into multiple logical units, each of which performs a specific transformation. These units can be reused by placing them into XSLT files that can be imported or included into other stylesheets.
g) Management Improvements
- Dashboards, Instance Tracking and Error Hospital
The main tool for Oracle SOA Suite administrators is Enterprise Manager Fusion Middleware Control. In Oracle SOA Suite 12c, this now also includes the management of Oracle Service Bus projects. The Service Bus 12c console has been divided into two parts: configuration of services is still available in the browser-based console, in addition to the JDeveloper IDE. All operations and management tasks have been moved into Enterprise Manager Fusion Middleware Control to provide a single administration console for the core SOA components.
- Key Configuration shows the modularity profile, instance tracking value, default query duration and auto purge state with links for more information and ability to change these configuration parameters.
- SOA Runtime Health and System Backlogs shows a quick overview of your composites. The system backlogs are not populated by default. This is a new feature of Oracle SOA Suite 12c to improve performance and responsiveness of Enterprise Manager. The refresh icon populates the backlogs.
- Business Transaction Faults is also not displayed until refreshed. The default query duration (as displayed in the key configuration area) can be changed at any time.
- The Search section provides quick options for some common searches plus any searches that you have saved. This search will take you to the Flow Instances tab.
- The Fault Alerts section shows any alerts that have been generated.
2. In the past, retrieval of large amounts of data has caused performance problems. In order to improve this, searches have been enhanced to allow for finer grained queries, including composite sensor values, to track specific business cases. Searches can also be saved and bookmarked for quicker access.
3. To prevent initial overload of a page, the user has to actively choose a search before a list of items is displayed.
4. The new Error Hospital in Oracle SOA Suite 12c is used to aggregate flow instances that have generated faults and be able to perform actions on instances with common faults collectively. The aggregations can be based on various criteria based on fault types, names or composite level aggregations.
5. Some faults can be recovered after the reason for the fault has been fixed. For example, if a database was unavailable, the administrator can recover the faulted instances after the database has been restarted. This recovery can be done one-by-one, or a group of instances can be recovered together in a bulk operation, either immediately or at a later point in time to optimize on resources.
6. Fault Notification Alerts
While dashboards provide an overview of the system and application health, administrators need to be alerted automatically when something goes wrong in the system. Fault alerts can be routed to communication channels such as email, SMS and IM, while at the same time being posted to the dashboards. Instead of always sending the alerts immediately, they can be scheduled to trigger an alert based on a predefined error notification rule.
h) Continuous Integration
Oracle SOA Suite 12c provides a Maven plugin that allows development teams to use Maven to create, build, package and deploy SOA projects. Through the SOA application and project archetypes, development teams can automate the instantiation of a developer's working environment. Through the Maven plugin goals, a Continuous Integration server such as Hudson/Jenkins can be used to manage SOA projects through the complete lifecycle. Using Maven, teams can increase their agility and accelerate solutions to production with lower cost and higher confidence. The image below shows how the running of Maven phases has been integrated into JDeveloper.
i) Other Enhancements
1) Fault Policy Editor in BPEL
2) Enterprise Scheduler Service (ESS)
3) SOA Design-Time Meta Data Services Repository
4) Startup acceleration through modularity profiles and lazy loading
5) Cloud integration
6) Mobile Enablement, including REST
j) Database soa-infra schema changes
For those that used to check in the product database for troubleshooting and monitoring, a new set of tables will be available in 12c, most of them under SCA_* name. You can see in the below image a ER model extract from the installed product. It is from 12.1.3 version.
k) Project folder structure
In this new version, when you create a new project from the scratch, the folder SOA will be the root folder that will contain your project files.
This feature can be enabled to help you to have your environment clean. All terminated instances can be deleted in case auto-purge is set.
m) New EM console (after 12.2 version)
After 12.2.x version Oracle deliver a new Fusion Middleware EM console, with a new layout. It is cleaner and more interactive as well.
n) API changes
If you had in your code customized calls to the product API you will need to update them. The new version of the product change the API classes and, unfortunately, they are not documented, since Oracle do not encourage developers to use it.