Migrating your Oracle BPM assets into Oracle Process Cloud Service (PCS)

If you are already an Oracle BPM user, it is likely that you might have heard or even ventured in its respective cloud version called Oracle Process Cloud Service (aka PCS). Essentially, Oracle PCS is a solution that enables you to rapidly design, automate, and manage business processes, as well as it is done with Oracle BPM, however the major advantage is that you can do everything in the cloud, without any concerns with infrastructure installation, setup and provisioning while keeping IT teams focused on high-value projects rather than endless tuning, monitoring, troubleshooting and workarounds, as regularly it is required to be done for on-premise projects, which in turn, allows you to focus on the business value of your solution, that is what really matters whenever we  talk about Business Process Management.

Oracle PCS has two environments:

Composer: for developing, testing, and deploying process applications

pcs-composer-home-page

Figure 1 – PCS Composer Home Page

pcs-composer-deploy-page

Figure 2 – PCS Composer Deployment Page

pcs composer test page.jpg

Figure 3 – PCS Composer Modeling Page

Workspace: for running deployed applications, monitoring and managing them

pcs-workspace-tasks

Figure 4 – PCS Workspace tasks view

pcs workspace tracking.jpg

Figure 5 – PCS Workspace tracking view

pcs workspace dashboards.jpg

Figure 6 – PCS Workspace dashboards view

I have been working with several Oracle BPM customers in the last few years in my current role as Senior Principal Product Manager, and I have seen along these years, an increasing demand of Oracle customers wishing to move to cloud as soon as possible, given all the very known benefits that are spurring adoption such as lower costs, greater agility, improved responsiveness and better resource utilization among other technical and business drivers.

Also, there are lots of new customers that want to get started with a streamlined solution to model, design, implement, run and monitor their processes. Thus, as you can notice, Oracle PCS is the perfect match to address all of these customer requirements mentioned above.

However, as you might be thinking, there are many customers that have already developed hundreds or thousands of projects and processes on top of the on-premise version, and obviously want to take them to the cloud without any loss.

Having said that, the goal of this post is NOT to cover the features of PCS itself, let alone a walk through in the solution, since you can easily find many of them available over the internet, but show how existing BPM customers can take all their assets into PCS in a smooth and easy way.

As one can say, there is already an available option within PCS to allow users to export their assets to run on BPM as shown in the picture below:

Donwload BPM Application with Compatibility Mode.png

Figure 7 – Downloading a project from PCS which is compatible with Oracle BPM

and also documented in the following link (Exporting an Application to Oracle BPM), which is really useful for customer that are using PCS for dev/test and still want to run their processes on-premise. However, how about the other way around?

The Problem

Today, the following message: “Project Version 20120601 does not support import”, is what you get, when you try to import an Oracle BPM application into Oracle Process Cloud Service, in the way as it is exported from the BPM Composer interface.

BPM import error message.jpg

Figure 8 – Error while importing an Oracle BPM project file within PCS

This essentially happens because PCS currently does not have all BPMN activities available within Oracle BPM, although it is a matter of time for those unsupported BPMN activities to be available in PCS as well, once they are in the product roadmap.

As stated earlier, this is the most common scenario found, that is, customers wanting to move from Oracle BPM into the cloud with Oracle PCS. Currently, either importing projects or processes from BPM 12c into PCS is not available as an out-of-the-box feature, although this is already in the product roadmap as well. However, don’t worry,  I have developed a migration toolkit that does the job for you. Thus, for those of you are looking for an alternative until PCS can handle BPM migration, this is what you were looking for!!

Migration Context and Scope

So, the major goal in this article, is to demonstrate how customers using Oracle BPM Composer for modeling purposes only, can easily migrate their assets into PCS. As some of you might know, BA models are not supported on the cloud version(PCS) yet, but they are being considered for future releases as well as other improvements mentioned earlier.

Therefore, from this point on, I will basically show how to convert BPMN models from Oracle BPM into PCS. Additionally, if you happen to have other artifacts such as webforms, decisions, data objects, etc, even though I haven’t had enough time to try them officially, I am quite sure they should work smoothly in PCS as well as they work in BPM, even if a few changes are required to make them work properly.

Proceeding on this track, and going straight to the point, I will get started showing the differences among what is supported in Oracle BPM and PCS regarding the BPMN notation, in order to get you familiar with the current limitations and how we can circumvent them to successfully move our BPM assets to the cloud.

First of all, let’s analyze the BPM component palette considering the latest version available today(BPM 12.2.1.1.0)

Figure 9 – Oracle BPM – BPMN Palette

Then now, let’s take a look at the respective component palette of PCS considering the latest version available today (16.3.5)

Figure 10 – Oracle PCS – BPMN Palette

As you can notice in Figure 9 and 10 above, both BPM and PCS have a comprehensive and powerful set of BPMN activities. However, there are a few complex and more advanced activities that are not available within the PCS BPMN palette for now. Some of  them are: Complex Gateways, all Signal related activities(throw, catch, end), update service tasks, and the following interactive tasks(FYI, Management, Group, Complex, Initiator and Manual task).

That is  the reason why Oracle PCS prevents that a regular BPM project can be imported into PCS, since the current version does not handle these BPMN activities, that could result in undesired results.

However, at the other hand, I have seen many customers that are only using BPM Composer for modeling and documentation purposes only. So, sometimes it might be the case where an end user just used a “Manual Task” by accident, and it could be thoroughly using an “User Task” instead. Also, I have seen the same happening with other BPMN activities such as Complex gateway as opposed to an Exclusive Gateway, Update Task as opposed to Service Task, etc. Therefore, that is why I have decided to build an automation script that converts those BPMN activities available in Oracle BPM to their respective BPMN activity in Oracle PCS, but keeping the same context and functionality as users intended to represent while modeling and documenting the processes.

Although there are known differences in the functionality of those migrated activities if you are considering to automate these BPMN processes later on, from the documentation perspective, that is actually what is aimed to be addressed in this article, this should not be a problem. For instance, converting a Manual Task into an User Task, would not affected either the context or meaning of a process. Thus, applying these few changes to turn BPM projects into PCS enabled projects, would facilitate users to move to cloud and experience all benefits brought by it without affecting their usability.

Getting started with your Migration

In order to get started with my example, I will use the following process to illustrate migration from Oracle BPM into PCS. Let’s call this process as Form Approval process.

BPM Form Approval process example with activities highlighted.png

Figure 11 – Sample Process – Form Approval – Oracle BPM

As you can see in Figure 11, this is a very simple process, but with a couple of BPMN activities that are still not supported within PCS, so that you can see my migration script in action. The PCS unsupported BPMN activities used in my example are as follow:

  1. Update Task
  2. Throw Signal
  3. Complex Gateway

So, with this in mind, let’s export this project “as-is” and then, try to get this imported into PCS:

export-form-approval

Figure 12 – Issue #1 –  Project Version 20120601 does not support import

Issue #1 – “Project Version 20120601 does not support import”

As mentioned earlier in Figure 8, this is the first issue. However, in order to get past this problem, first of all, we need to decompress the FormApproval.exp file downloaded from the BPM Composer.

Essentially it is a compressed file that can be decompressed with any tool such as WinZip, gunzip, 7z, etc. After decompressing the file, you will find a file called projectInfo.xml

form-approval-exported-file-content

Figure 13 – Oracle BPM sample: FormApproval.exp file structure

Now, opening the file, you will find the following content:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<projectInfo name="FormApproval" projectVersion="20120601" fileVersion="20120601" xmlns:ns2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns="http://xmlns.oracle.com/ProjectInfoDefinition" xmlns:ns4="http://www.omg.org/spec/DD/20100524/DI" xmlns:ns3="http://xmlns.oracle.com/bpm/OracleExtensions" xmlns:ns5="http://www.omg.org/spec/DD/20100524/DC" xmlns:ns6="http://www.omg.org/spec/BPMN/20100524/DI">
<localizedProjectNames>
<localizedProjectName name="FormApproval" description="" locale="en"/>
</localizedProjectNames>
<preferences isTemplate="false">
<languages default="en" availables="en"/>
<tags>
<tag id="default" color="#000000" type="USER"/>
</tags>
</preferences>
</projectInfo>

So, to overcome this issue, it is basically needed to change the projectVersion attribute to “20140730”. Then the file should look like this:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<projectInfo name="FormApproval" projectVersion="20140730" fileVersion="20120601" xmlns:ns2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns="http://xmlns.oracle.com/ProjectInfoDefinition" xmlns:ns4="http://www.omg.org/spec/DD/20100524/DI" xmlns:ns3="http://xmlns.oracle.com/bpm/OracleExtensions" xmlns:ns5="http://www.omg.org/spec/DD/20100524/DC" xmlns:ns6="http://www.omg.org/spec/BPMN/20100524/DI">
<localizedProjectNames>
<localizedProjectName name="FormApproval" description="" locale="en"/>
</localizedProjectNames>
<preferences isTemplate="false">
<languages default="en" availables="en"/>
<tags>
<tag id="default" color="#000000" type="USER"/>
</tags>
</preferences>
</projectInfo>

 

So what is next?

 

Issue #2 – “Process Editor Error – There was an error. The page will reload”

Now, after fixing the projectInfo.xml file, if I try to open Form Approval process, then the following error is thrown:

error-while-opening-bpm-process-with-invalid-bpmn-activities

Figure 14- Error while opening Form Approval Process due to non-supported BPMN activities of Oracle BPM

As mentioned earlier, this happens due to some BPMN activities that are still not supported within PCS. In my example, the issues are with the following activities: Complex Gateway, Signal Thrown and Update task. So, in order to circumvent this problem, we need to convert those activities into supportable activities in PCS, as near as possible to their respective behavior and functionality in Oracle BPM. As such, let’s use the script I have created to make this job easier for you.

The Solution: Bash coming to the rescue

I could have used many different technologies to manipulate and compress/decompress files such as Python, Java, javascript, etc, in order to achieve my goal, which was essentially to convert bpmn and project files(.exp) from Oracle BPM in order to make them compatible with PCS. As an Ubuntu user, I have decided to go down the path to do everything in bash, but I will do a Python version soon, for one to be able to run this migration script in almost all platforms. Nevertheless, you can easily analyze the script below to find out how it works, and then implement it in your favorite language at your will.

echo "Starting migration from BPM projects to be imported into PCS in a compatible fashion"

echo "Decompressing all BPM project files (.exp) recursively"
find . -type f -name "*.exp" | xargs -P 5 -I fileName sh -c 'unzip -o -O UTF-8 -d "$(dirname "fileName")" "fileName"'

echo "Making BPM projects PCS enabled"
find . -type f -name 'projectInfo.xml' -exec sed -i 's/projectVersion=\"20120601\"/projectVersion=\"20140730\"/g' {} +

echo "Changing BPM activities to be supported within PCS"

echo "Transforming manualTasks into userTasks"
find . -type f -name '*.bpmn' -exec sed -i 's/manualTask/userTask/g' {} +

echo "Transforming both catch and throw signalEvents into messageEvents"
find . -type f -name '*.bpmn' -exec sed -i 's/signalEventDefinition/messageEventDefinition/g' {} +

echo "Transforming Complex Gateways into Inclusive Gateways"
find . -type f -name '*.bpmn' -exec sed -i 's/bpmn:complexGateway/bpmn:inclusiveGateway/g' {} +
find . -type f -name '*.bpmn' -exec sed -i 's/<bpmn:activationCondition xsi:type=\"bpmn:tFormalExpression\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\/>//g' {} +

echo "Tranforming Update Tasks into Service Tasks"
find . -type f -name '*.bpmn' -exec sed -i 's/<bpmnext:StringFeature value=\"UPDATE_OUTCOME\" name=\"updateType\"\/>//g' {} +

echo "Renaming all BPM project files to .zip file"
find . -type f -name '*.exp' -exec rename 's/\.exp/.zip/' '{}' \;

echo "Compressing all directories after changes were properly applied to *.xml and *.bpmn files to create PCS enabled project files (.exp)"
find . -mindepth 2 -maxdepth 2 -type d | while read directoryname; do cd "${directoryname%/*}"; zip -r "${directoryname##*/}.exp" "${directoryname##*/}"; cd ..; done;

echo "PCS Migration Completed!!!"

 

Please note that this is the first version of this conversion framework, and I am continuously improving it, but I can assure that will help you a lot while migrating your assets, and you can relax a bit and grab some coffee while it does the hard work for you 🙂

You may find all files used to run this example in my repository at GitHub. If you analyze the script above, you may notice that it can be used with either a single project file(.exp) or thousands of them. Essentially, this script changes all required activities and attributes across all .bpmn and .xml files within all BPM projects(.exp files). After that, it renames the original .exp file as a .zip file, and then compress the project directory with all changes in place. At GitHub, you will find both original BPM project and a converted BPM project, just in case you you need to take a loot at them, or try it yourself importing the converted BPM project into your own PCS instance. That said, I just wanted to share a tip in order to make this example works smoothly. As you may have noticed, the last step, that compresses all directories that represents Spaces within PCS Composer, has the following attributes as part of the find command:

-mindepth 2 -maxdepth 2

These attributes working together mean that compression will be only performed for directories two levels below, following the standard structure that I have created to accommodate all directories representing a Space in Composer with all BPM project files(.exp) within its respective directory.

Thus, if you want to use the script as it is, please create a root folder, let’s say BPM PCS Migration Example, and then for each space within your BPM Composer, create a directory within the root folder. In the example I have used along this post, I have just one Space, called My Space, with a single project called FormApproval.exp

Figure 15 – Folder structure to run PCS migration script (pcs_migration.sh)

In my particular case, I used it successfully in a migration process for an specific customer which had almost 200 BPM projects (.exp files) comprising over than 1000 BPMN processes. I think this is not too bad, isn’t it? 🙂

However, as you might be asking, how about to import all of these files into PCS? Currently, this has to be done in a manual basis, but once the next PCS version is released, there will be a REST API that will allow you to manage composer assets. So, stay tuned, I will blog about this new enhancement in a new post when it is available. Thus, after running this migration script, the idea would be to load all migrated projects into PCS automatically, rather than leverage PCS Composer UI to import one at time, as it is done today with the current PCS version.

Finally, the so awaited result

Now, after running the script provided above, you will be able to smoothly import the Oracle BPM project from our example(FormApproval.exp) into PCS

final-migrated-project

Figure 16 – The Migrated FormApproval in Oracle PCS

These were the migrated activities:

  1. Update Task -> Service Task
  2. Throw Signal -> Throw Message
  3. Complex Gateway -> Inclusive Gateway

While applying this technique in your BPM projects, please do so with care. Be particularly careful with other activities that were not added to this script. Oracle provides no guarantees that this mechanism will work in all cases. So, please, after running this script, please get the output and review the new generated processes, in order to make sure nothing was left behind during migration procedure.

Hope it has helped you to understand how things are working under the covers, and also it can lend you a hand to turn this migration challenge in an easy and fun job!!

For more information about Oracle Process Cloud Service, please visit this website. And if you still haven’t had the opportunity to see PCS in action, do not waste more time and sign up for a trial here.

See you in my next post 🙂

Andre Boaventura

Advertisements

5 thoughts on “Migrating your Oracle BPM assets into Oracle Process Cloud Service (PCS)

  1. Pingback: SOA & BPM Community Newsletter November 2016 | SOA Community Blog

  2. Pingback: SOA & BPM Community Newsletter March 2017 | SOA Community Blog

  3. Pingback: Migrating your Oracle BPM assets into Oracle Process Cloud Service (PCS) by Andre Boaventura | SOA Community Blog

  4. Pingback: SOA & BPM Community Newsletter July 2017 | SOA Community Blog

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s