Wednesday, December 2, 2015

Oracle JCS - Peer-to-Peer VPN Tunnel

Please note that OpenVPN is not a supported configuration on JCS/SOACS, so proceed at own risk.

On JCS, all commands running as root :

3. yum installlocal openvpn-2.2.2-1 lzo pkcs11-helper-1.11-3
4. openvpn —genkey —secret /etc/openvpn/vpn.key
5. Configure the /etc/openvpn/server.conf:

remote xx.xx.xx.xx    <— Remote node (In my case router IP with NAT configured to my local host)
port 8000
dev tun
ifconfig   <— Virtual Network, something different than local and remote network
ping 15
secret /etc/openvpn/vpn.key
route   <— Remote network (ie. what is going to be forwarded through tun device)
chroot /var/empty
user nobody
group nobody
log vpn.log
verb 1

6. service openvpn start

On the target (on premise) , again as root, assuming that OpenVPN is installed (yum install openssl openvpn) 

1. Create the /etc/openvpn/vpn.key  (copy text content of the vpn.key on the JCS Node and paste)
2. Configure /etc/openvpn/server.config:

remote yy.yy.yy.yy  <— JCS public ip
port 8000
dev tun
ifconfig  <— swapped ie 2<->1
ping 15
secret /etc/openvpn/vpn.key
route zz.zz.zz.0 <— Remote network ie. JCS local network
#chroot /var/empty/openvpn
user nobody
group nobody
log vpn.log
verb 1

3. service openvpn start

On JCS side open the OpenVPN port 8000 (udp and tcp), using Security Rules and Security Application.

From the JCS node you will only have access to target machine, and other means needs to be implemented to access nodes in same network as the target. OAG and OTD can help with this situation.

For debugging purposes there is a "vpn.log" file created under /etc/openvpn. Also remember that traceroute can give you details about the hops and the route a request is going to follow.

JDeveloper MacOSX Exception - sun.lwawt.macosx.LWCToolkit.getImage

If you ran into the following issue in JDeveloper on MacOSX :


upgrade your JDK 1.8 to the latest, it was fixed after Update 45.

Wednesday, July 9, 2014

JDeveloper 12c 12.1.3 - Adding Mobile Application Framework (MAF) to SOA/BPM Quick Install

To add the Mobile Framework extension, you will have to install the the following:

1. Mobile Application Framework JDeveloper Patch
2. Mobile Application Framework Extension

Follow the following steps:

1. Download the MAF JDeveloper patch through JDeveloper's Check for Updates
2. Don't restart JDeveloper, rather just close it after the download has completed.
3. Find the folder under the users home directory. Under Windows it is under /users/user/AppData/Roaming/jdeveloper, under Unix it is under user home directory/.jdeveloper
4. Delete the and the system12.1.3* directories.
5. Start JDeveloper and wait for the patch to be applied.
6. Download the MAF Extension
7. Stop JDeveloper
8. Delete the same directories as in step 4, as well as the tmp directory and any *.txt files in the jdeveloper folder
9. Start JDeveloper
10. It might pop up with a warning that a serious error occured, just ignore and restart JDeveloper to get rid of the error.

To specify the JDeveloper 'system' directory, you can also set an environment variable JDEV_USER_HOME 

Wednesday, April 16, 2014

Hostless Agent in EM12c

If you encounter an agent without any associated 'host' with it, and you did a manual installation of your agent, using '' file, you probably missed the required plugins. These plugins can be found in the '' file. Copy this zip file into the same directory where you extracted the AgentCore zip file, before installing the agent. Both of these archives can be extracted from the command line tool emcli, for example :

emcli get_agentimage -destination=/home/oracle/agent_inst -platform="Microsoft Windows x64 (64-bit)" -version=

Wednesday, December 18, 2013

Oracle BPM quick and dirty SQL Scripts

All these queries are based on the 'soainfra' schema, and requires the CubeCommand to be enabled:

1. Count of assigned (as in open) human tasks by assignees.

select distinct count(*),assignees from wftask wf where state like 'ASSIGNED' group by wf.ASSIGNEES;

2. Activity Performance across the BPM stack:


For example to extract the averages for all activities:

select activity_label "BPM Activity", avg(ACTIVITY_RUNNING_TIME_IN_MSEC) "ms running time" from bpm_activity_performance_v group by activity_label;

3. Process Performance End to End time


4. Count of Active BPM Processes:

select count(*) "Running Processes" from bpm_process_instance_v where sequence_id not in (select sequence_id from bpm_process_performance_v);

Sunday, October 13, 2013

Oracle Case Management Tips


Error in starting cases.
Error in starting cases.
Contact system administrator for assistance.

         at oracle.bpm.casemgmt.persistence.model.CaseStakeHolder.toString(

Make sure that all the Stakeholders in the Case Configuration points to a valid  member configuration with a valid member type defined.

Rules going 'haywire'

Remember that any Case Activity can only contain one primitive parameter, or else you are going to break the wiring on the composite level.

Oracle Rules only accept a single primitive type, and multiple complex types (if required).

Thursday, July 18, 2013

Oracle BPM Flex Field Index Creation

Use the output from the following sql script, to create indexes for the WFTASK public and private flex fields. The script looks at the statistics of the WFTASK table to determine the required indexes. Replacing DEV_SOAINFRA, with the schema specified during the RCU creation step.

You can also modify the script to search for may be a bigger number of distinct rows, by changing the number '1' in the script.

set heading off
set echo off
EXEC DBMS_STATS.gather_table_stats('DEV_SOAINFRA','WFTASK');
select 'create index DEV_SOAINFRA.'||column_name||'_idx on DEV_SOAINFRA.'||table_name||' ('||column_name||');' from all_tab_columns where table_name = 'WFTASK'and num_distinct>1 and column_name like '%ATTRIBUTE%';

Output will be in the format: