There are a lot of benefits to be reaped by migrating a BPM 10g project to 12c. For one, Oracle BPM 12c is built on a Service Component Architecture (SCA) runtime. SCA is an industry standard architecture that provides a model for composing applications that follow SOA principles, like component reuse, OOTB error handling and transaction management, and flexible development to name a few.
With the introduction of Oracle BPM Suite 12c (12.1.3), one of the key features introduced is a migration path for Oracle BPM 10g projects to 12c. Such a feature was not available in 11g and there was little to no hope for BPM 10g projects to be migrated to 11g. That hope has come alive with the introduction of 12c and so I decided to give it a shot. Below I have listed the steps to follow to do a 10g to 12c migration and summarized by findings.
1) Install Oracle BPM Suite 12c
First off, download the Oracle BPM Suite 12c quick start installer from Oracle’s website here. This installer includes JDeveloper 12c with SOA and BPM extensions. The installer also includes the migration utility, which is an ANT task.
2) Install ANT
The migration utility readme.txt recommends to use ANT version 1.8.4.
3) Execute the ANT task
The migration utility can be found under $JDEV_HOME\soa\plugins\jdeveloper\bpm. The build.xml file has all the ANT tasks. The ANT task for the migration from 10g to 12c is “migrate10-12”, where source is the folder location of the 10g project and target is the folder location where the 12c project export will be created. Replace source and target appropriately and execute the below command.
ant migrate10-12 -DprojectLocation=source -Ddestination=target
4) Analyze the ANT task execution
Once the ANT task execution completes successfully, it creates the 12c project export in the target folder specified. This folder contains the following:
- The exported version of the 12c project (.exp).
- The migration report (.xml) and its stylesheet (.xsl). Best when viewed via a browser.
- The 10g project artifacts list (.csv).
- The folder with 12c project SOA components.
5) Import the 12c project
To import the exported version of the 12c project into JDeveloper, open the 12c JDeveloper. Create a BPM Application. Go to File -> Import -> Import BPM Project. Browse to the target folder and select the .exp file. This is a list of some of the artifact mappings:
- Organization -> Organization, except Groups and Participants.
- Process -> Process
- Screenflow -> Synchronous Process
- Process and Screenflow Begin/End -> Process Begin/End
- Swim Lanes -> Role Lanes
- Argument Mappings -> Data Associations
- Transitions -> Sequence Flows
- Conditional Transitions -> Exclusive Gateways
- Global Creation -> Interactive Initiator
- Process Instance Variable -> Process Data Object
- Screenflow Interactive Component Call -> User Interactive with it's Human Task. Since Human Tasks did not exist in 10g, the migration utility follows a naming convention for the Human Tasks. It is ActivityName_ProcessName or ModuleName_BPMObjectVariable_PresentationName.
- Automatics -> Script Activity. The PBL (Process Business Language) code in the 10g Automatics can be found in the Script Activity's Groovy code editor.
The above does not list all the artifacts that might be part of a project, but it gives a good idea of what to expect. Also, there are certain artifacts that will not migrate to 12c. Here is the list of some of the artifacts that do not migrate:
- Process and Screenflow folders. If the project process(es) and screenflow(s) are sorted in folders in 10g, these folders do not migrate and the folder hierarchy is lost.
- Process Global Interactive.
- Out-of-the-box Modules (Fuego and Plumtree) and some developer created Modules.
- BPM Object - Group type.
- BPM Object - Presentations.
- Web Resources which includes JSP, CSS, JS files. Some of the JSP code can be copied over to ADF forms, but the Fuego Tag Library is not migrated though.
- Predefined Variables, for example result, action, description etc.
- Organization - Groups and Participants.
The migration process detailed above (Steps 1 thru 5) takes no longer than a few hours and the ANT task itself (Step 3) only takes a few minutes depending on the size of your BPM project. Also, I want add a caveat that BPM 10g could be a standalone suite. Unlike 10g, BPM 12c is just one of the components of the Oracle FMW stack. The FMW stack includes many other components including SOA and BPEL. In 12c, leaving all the imported BPM processes as-is may not be the best option. For example, converting system to system processes to BPEL might be a better fit and is something worth exploring.
In summary, the migration utility is a good head-start, but is not a one-and-done solution to a BPM 10g migration strategy. It does not do a one-to-one mapping for some artifacts and certain other artifacts will not migrate. It is not a production deployment ready migration and time and effort will be needed to modify and/or refactor some artifacts, but it certainly gives you a solid start on your Oracle BPM 10g to 12c initiative. Oracle BPM 12c certainly extends a hand of friendship to BPM 10g which was missing in BPM 11g.