Tuesday 28 April 2015

Connect and consume data with Oracle RightNowCX using the new SOA12c RightNow adapter


The  Oracle RightNow adapter has been released for the SOA 12.1.3 just couple of months ago, and I tested as soon as I've heard of it!

What it is needed for this tip

  • JDeveloper 12.1.3
  • An account with read right on the WebServices exposed by an Oracle Rightnow instance

Before starting!

Make sure the following patch bundle has been applied to your SOA/jdev Home.

Bundle Patch for Bug: 20423408

The patch can be downloaded from Oracle support of course, and installed using opatch apply.
The patch must be applied to both, the SOA Server home (if not in the jdev home) and Jdev home, since the new plugin which will shows the RightNow adapter wizard, must be configured into JDeveloper.
Remember to perform the post-installation steps (patch READ-ME for details):


1. Log in to Fusion Middleware Control Enterprise Manager.
2. Expand "Weblogic Domain" in the left panel
3. Right click on the domain you want to modify and select Security > System Policies to display the page System Policies.
4. In the System Policies page, expand "Search". For "Type" select "Codebase", for "Includes" enter "jca" and click the arrow button.
5. Select "jca-binding-api.jar" in the search returned result and click "Edit".
6. In the "Edit System Grant" page, click on "Add".
7. In the "Add Permission" page, click on "Select here to enter details for a new permission" and enter the following:
  • Permission Class:oracle.security.jps.service.credstore.CredentialAccessPermission
  • Resource Name: context=SYSTEM,mapName=SOA,keyName=*
  • Permission Action: *
8. Click on "OK" to save the new permission.


In order to verify the installation went well please double check you'got the RightNow Adapter in the Cloud Adapter Component palette:



After the installation start JDeveloper with the option "jdev.exe -clean"

Hands on!

  • Generate one SOA application with an empty SOA project.
  • Drag and drop an Oracle Rightnow component in the External reference lane and the wizard will pop up
  • Insert the WSDL url (the WSDL and XSD schemas will be downloaded), also create a new csf key in Jdeveloper with your username and password for Oracle Rightnow. 


  • Select the Create WSDL operation and the Contact business object



  • Click FINISH
  • Now add a WIRE from the BPEL process to the Rightnow adapter
  • Edit the composite input XSD adding the following fields:
<element name="process">
<complexType>
<sequence>
<element name="Name" type="string"/>
<element name="LastName" type="string"/>
<element name="Address" type="string"/>
<element name="PostCode" type="string"/>
</sequence>
</complexType>
</element> 

  • Open the BPEL process and add an invoke to the adapter (create input and output variables)
  • Add a transformation which will be used to set properly the invoke input variable for the Rightnow adapter.
  • Edit the transformation as showed below. The left variable is the composite input variable, while the right one is the Rightnow input one 

  • So the BPEL process will look like this below
  • Deploy it top the integrated SOA Server
  • Last step, configure the username and password in the EM console using the CSF key MyRightNowUser configured in the JCA adapter in WeblogicDomain => Security => Credentials in the Credential Map SOA, as showed below



The SOA Composite can now be tested and hopefully an account will be created in Oracle Rightnow SC!
Let me know for any issue (see Possible problems below)!

Tip: instead of configuring the credentials in the SOA-EM, the csfkey property parameter in the jca-properties definition can be omitted and replaced with username and password parameters

Possible problems

  • In case the WebService invocation fails with this:
"Exception occurred during invocation of JCA binding: "JCA Binding execute of Reference operation 'Create' failed due to: Unable to create Cloud Operation:
The invoked JCA adapter raised a resource exception.
Please examine the above error message carefully to determine a resolution "

Then replace in the Rightnow JCA the targetWSDLURL local WSDL with the remote one, as explained here and redeploy it!


  • In case the WebService invocation fails with this:
"Exception occurred during invocation of JCA binding: "JCA Binding execute of Reference operation 'Create' failed due to: Client received SOAP Fault from server : Username is not specified in UsernameToken."

Then the credential key is not configured correctly in the credential store or the process can't see it. Review it!


  • In case the WebService invocation fails with this:
"Exception occurred during invocation of JCA binding: "JCA Binding execute of Reference operation 'Create' failed due to: Client received SOAP Fault from server : Access Denied."

Then the user-password are not correct in the credential key. Review it!


Please find the RightNow Cloud Service Adapter documentation here!
The source code of the composite created here

Wednesday 22 April 2015

Endeca Guided Search Installation and Deployments

Endeca Guided Search - Pre-requisites

In order to setup Oracle Endeca Commerce on RHL the following requirements are needed:
  • An oracle user
  • A folder, owned by the oracle user, for the product binaries, possibly in the file-system root (in this how-to we are assuming that the main installation folder is set to /u01/oracle).
  • A static ip-address and the hostname mapped in the /etc/hosts file.
Is also necessary download the installation packages from the oracle edelivery cloud for the Linux operating system. The packages to download are:
  • Oracle Endeca MDEX engine.
  • Oracle Endeca PlatformServices.
  • Oracle Endeca Content Acquisition System.
  • Oracle Endeca ToolsAndFrameworks.
Here the OS requirement:
  • DOS2UNIX package has to be installed if not: yum install dos2unix 

Endeca Guided Search - Server Installation

Step 1 - Install the Oracle Endeca MDEX engine

Unzip the Oracle Endeca MDEX package and run the follow command (replace the ? with the version of the file in use):
chmod +x mdex?????.sh
./mdex???????.sh --target /u01/oracle
At the end of the process instead running the script as suggested open it and copy and paste the variables declaration into the .bash_profile file then reload the profile. Run the follow command to check that the MDEX root folder has been set in the environment
echo $ENDECA_MDEX_ROOT
Create an apps folder under the main Endeca installation folder.

Step 2 - Install the Oracle Endeca PlatformServices

Unzip the Oracle Endeca PlatformServices package and run the follow command (replace the ? with the version of the file in use):
chmod +x platformservices?????.sh
./platformservices?????.sh --target /u01/oracle
During the setup process provide:
  • The Endeca HTTP service port, by default is set to 8888 (use this port if not already binded by other processes).
  • The Endeca HTTP shutdown service port, by default is set to 8090 (use this port if not already binded by other processes).
  • The Endeca Control System JCD port , by default is set to 8088 (use this port if not already binded by other processes).
  • Type Y to install the EAC agent.
  • The MDEX full path included with the version number (ie. /u01/oracle/endeca/MDEX/6.5.0)
  • Type Y to install reference implementations.
At the end of the process, as for the MDEX engine, instead running the script as suggested open it and copy and paste the variables declaration into the .bash_profile file then reload the profile. Run the follow command to check that the ENDECA_ROOT has been set in the environment
echo $ENDECA_ROOT

Step 3 - Install the Oracle Endeca Tools And Framework

Unzip the Oracle Endeca Tools and Frameworks package and run the runInstaller.sh file located under the install sub-directory in the Disk1 folder. Then follow the steps below:
  1. Click Next on the welcome page
  2. Accept the licence agreement
  3. Specify inventory directory and credential and click Next
  4. Specify installation type, for development machine install the Full version as it contains reference
  5. application, then click Next
  6. Specify home details and click Next
  7. Provide administrator password for Workbench console and click Next
  8. Review installation options and click on Install
  9. Run the inventory script as root before closing the window
  10. Click on Exit
At the end of the process installation process is necessary, in order to proceeed with the Content Acquisition System setup, define in the bash_profile the following two variables (path could change) and reload the profile:
ENDECA_TOOLS_ROOT=/u01/oracle/endeca/ToolsAndFramework/11.0.0
export ENDECA_TOOLS_ROOT
ENDECA_TOOLS_CONF=/u01/oracle/endeca/ToolsAndFramework/11.0.0/server/workspace
export ENDECA_TOOLS_CONF

Step 4 - Install the Oracle Endeca Content Acquisition System

Unzip the Oracle Endeca Content Acquisition System package and run the follow command (replace the ? with the version of the file in use):
chmod +x cas?????.sh
./cas?????.sh --target /u01/oracle
During the setup process provide:
  • The Endeca CAS service port, by default is set to 8500(use this port if not already binded by other processes).
  • The Endeca CAS shutdown service port, by default is set to 8506(use this port if not already binded by other processes).
  • The ENDECA_TOOLS_ROOT and ENDECA_TOOLS_CONF should already been defined in the system and the Content Acquisition System will retrieve this information from the user profile so this step will be skipped by default.
  • Provide the hostname of the machine on which CAS is installed

Step 5 - Validating the Oracle Endeca Commerce setup

In order to validate the setup start the Endeca services as follow:
  • Start PlatformServices using the startup.sh script in /u01/oracle/endeca/PlatformServices/11.0.0/tools/server/bin
  • Start the Content Acquisition System using the cas-service.sh script in /u01/oracle/endeca/CAS/11.0.0/bin (better start this service in background using the command nohup ./cas-service.sh &)
  • Start the Workbench using the startup.sh script in /u01/oracle/endeca/ToolsAndFrameworks/11.0.0/server/bin
  • Connect to the Workbench console available at http://<host>:8006 and check that in the console page a Data
  • Control section appears (to confirm that the CAS has been successfully installed, also if this console is accessible then the CAS is running on the host).

Step 6 - Try to deploy the reference application

To deploy the reference application run the deployment template pointing the discovery reference application.
Follow this step:
Access to the deployment template folder under ToolsAndFrameworks (ie. /u01/oracle/endeca/ToolsAndFrameworks/11.0.0/deployment_template/bin)
  • Run the deployment command ./deploy.sh --app /u01/oracle/endeca/ToolsAndFrameworks/11.0.0/reference/discover-data-catalogintegration/deploy.xml
  • Press Return
  • Digit Y and press Return
  • Provide an application name (ie. test)
  • Provide the deployment directory (/u01/oracle/endeca/apps)
  • provide the EAC port (by default is 8888)
  • Provide the CAS installation folder (ie. /u01/oracle/endeca/CAS/11.0.0)
  • Provide teh CAS version (ie. 11.0.0)
  • Provide the hostname where CAS is running
  • Provide the CAS port (byd efault is 8500)
  • Provide the default language (by edfault is english)
  • Provide the Workbench port (by default is 8006)
  • Provide the port that the catalogue should use for the DGraph process (if not already used accept the default value 15000)
  • Provide the port that the catalogue should use for the Authoring DGraph process (if not already used accept the default value 15002)
  • Provide the port that the catalogue should use for the Log server process (if not already used accept the default value 15010)
  • Press return
  • Press return
To start the reference application follow this steps:
  • Access to the control folder located under the main application catalogue folder.
  • Run the ./initialize_services.sh script
  • Run the script ./load_baseline_test_data.sh
  • Run the script ./baseline_update.sh
  • Run the script ./promote_content.sh
  • Access to the reference application (http://<host>:8006/endeca_jspref) provide as host localhost and as port the DGraph port provided during the application deployment phase (in this case 15000) and check that the data has been succesfully loaded

Optional: Assembler service application Deployment

  1. Copy the folder  ENDECA SERVER/ToolsAndFrameworks/3.1.2/reference/discover-service into a folder with a different name (for instance new-discover-service) within the same folder (so you'll have  ENDECA SERVER/ToolsAndFrameworks/3.1.2/reference/new-discover-service).
  2. Edit the ENDECA SERVER /ToolsAndFrameworks/3.1.2/reference/new-discover-service/WEB-INF/assembler.properties with the correct port and host of the application previously deployed (Step 6).
  3. Copy the file ENDECA_SERVER/ToolsAndFrameworks/3.1.2/server/workspace/conf/Standalone/localhost/discover.xml into a file with a different name (for instance new-discover-service.xml), customize it with the path of the application created at point 1 (ENDECA SERVER/ToolsAndFrameworks/3.1.2/reference/new-discover-service), and copy the file into the same folder (so you'll have ENDECA_SERVER/ToolsAndFrameworks/3.1.2/server/workspace/conf/Standalone/localhost/new-discover-service.xml).
  4. Access to the Assembler application just deployed via REST interface using this url (update host and port if you need): http://54.228.239.224:8006/new-discover-service/json/services/guidedsearch?Ntt=<SearchKeyword>


Please let me know for any issues!!!