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 has been available for a few years, but there are still companies with the 11g version with plans to migrate to the newest version. I’m going to share a few tips and my knowledge, based on my project experience.
Part of the migration project is 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 scratch). Below are some pros and cons for both options:
How to migrate the code?
If you ask me: “Will I have success deploying the same 11g code in 12c servers?” I would say, based on my experience, yes, you will. I didn’t have major issues deploying the exact same 11g code in 12c domains, even though this depends on the activities you are using.
Oracle suggests to open your code in JDeveloper 12c first, upgrade the content using the IDE wizard, and then deploy it in the 12c servers. This makes sense if you consider the new features available only in 12c, like Maven integration, subprocess, and templates (see point 5 in this post for a complete list of new features). If you don’t have a development team available, go ahead and deploy your 11g code. Though you will probably need to test everything and correct some minor defects.
Zero downtime migration
If you are planning a parallel migration, you can trigger new instances to new domains during the launch day, and keep the open instances in an old 11g domain for a while. This is quite simple for a synchronous scenario.
If you have a few long running instances, the scenario will probably be a little more complex. You will need to include a business rules to mediate the new message income. Based on these rules, you can define if the message must be sent to the old or new domain.
VM’s X physical boxes
Nowadays, keeping your domains in physical boxes will reduce your flexibility and scalability. With all Weblogic features available to quickly add nodes when needed (like Thanksgiving holidays), I’d suggest have everything use VMs. 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. In this blog I will explain a few, including some that were 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 doesn’t mean you’ll like developing 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 can choose between request and reply breakpoints, or a breakpoint pair. The image below shows a BPEL process with a SOAP interface and two breakpoint pairs. The debugger will stop four times: after the SOAP requests are received, before the BPEL process starts, when the BPEL process is completed 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 have 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 image below a ER model extract from the installed product. This is from 12.1.3 version.
k) Project folder structure
When you create a new project from scratch in the new version, the folder SOA will be the root folder that will contain your project files.
This feature can be enabled to help keep your environment clean. All terminated instances can be deleted in case auto-purge is set.
m) New EM console (after 12.2 version)
After the 12.2.x version Oracle delivers a new Fusion Middleware EM console, with a new layout. It is cleaner and more interactive as well.
n) API changes
If you had customized calls to the product API in your code, you will need to update them. The new version of the product changes the API classes. Unfortunately, they are not documented, since Oracle does not encourage developers to use it.