Wednesday, August 21, 2013

Missing Messaging Chanel Preferences in BPM Worklist : AD Authenticator

Hi Everyone

I have been really busy with my last assignment and couldn't post any blogs off-late.
But, now when I have gotten some time, thought of sharing one of the issues in this post as it is related to missing configuration and difficult to figure out with.

I faced this issue wherein the emails were being sent to few users and not to all users configured with Active Directory. It was observed that the section containing default email address i.e. Messaging Channel under Preferences in the Oracle BPM worklist was missing for these users.

When I looked in the database, Table : USER_DEVICE and DEVICE_ADDRESS under ORASDPM schema, it had only few entries of some users and not for all.

These entries are created by default when a user logon to BPM worklist for the first time.

After researching on the same, I found out that the issue was with the way AD Authenticator was configured. Weblogic was not able to communicate properly with AD Server because of the missing configuration and the issue was being faced at OPSS layer. Hence , the messaging channel preferences were not being populated by default.

To fix the same, perform the following steps :

1) Take a backup of config.xml and jps-config.xml

2) Add a new ADAuthenticator under Providers to configure weblogic with your Active Directory . Let's call it as YourAD

3) Set the Control Flag as "SUFFICIENT" and re-order the Provider to bring the ADAuthenticator(YourAD)at the top

4) Make sure that before re-ordering, the Control Flag for DefaultAuthenticator is also set as "SUFFICIENT"

4) Restart the Weblogic and other managed servers to make sure servers come up fine.

5) This will add an entry of the ADAuthenticator(YourAD) in the jps-config.xml

6) Take a backup of config.xml and jps-config.xml again after it has been configured

7) Open jps-config.xml file in word editor and search for following :         

 
8) Replace the same with following :



where YourAD is the name of your ADAuthenticator in weblogic under Providers

9) Restart Managed and weblogic server

10) Ask the users to logon to BPM worklist and the messaging channel would be populated by default.

Note* The backups are taken to revert to the old configuration if servers don't come up after integration.

I hope this post will be useful in case anyone encounters a similar issue with Messaging Channel. Trust me, no client would like to manually populate this piece of information manually as it is a major inconvenience to the Business Users.

Keep following.. I will be coming up with new posts soon!!!

  

Wednesday, June 8, 2011

Problem Configuring ODC Commit profile for ODC For KFI.zip in Solution Accelerator!!!

Hi Everyone

I was working on a project and faced a very strange issue while configuring Commit Profile in ODC as part of  Financial Image Processing Solution Accelerator 11.1.1.4 for EBS.

My servers were running on a different machine(server) and ODC was on a different machine(client).

I was able to import definition for KFI but was not able to configure commit driver(Commit Profile)
The error looked like this:






Failed to automatically connect to I/PM systems and retrieve data.Please correct the login settings and reconnect
Error:Failed to login.Exception:java.lang.LinkageError:JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI(from jar:file:/C:/Program%20Files/OracleDocument%20Capture/OracleIPM11g/lib/oracle.webservices.standalone.client.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API.Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader(See:http://download.oracle.com/javase/1.5.0/docs/guide/standards/)



After doing lot of research, i concluded that the error was due to the difference in java versions.
There are two methods to overcome this

1)java.endorsed.directory mechanism:

  In order to resolve this issue, download jaxb-api-2.1.jar and put it under jre\lib directory where your Java Jdk is installed for e.g. C:\Program Files\Java\jdk1.6.0\jre\lib\endorsed(create new if doesn't exist)

Create a java.endorsed.dir system variable and assign value equal to path of endorsed directory.
Try this time and this should work, if it doesn't try 2nd step


2)Install the Update patch

If there is a version in JDK version(in client and server machine) even the patch version, then download and install the patch which can make both the version as same

For e.g. if Server is using Sun JDK 1.6_25 and the client machine on which ODC is running uses Sun JDK 1.6.0,
then download and install jxpiinstall.exe

Try this time and it should work!!!
Keep working hard and you will make it!!

How to change Weblogic's JDK Version and Vendor in Windows Platform??


Well this post might not be very useful to you because such a requirement is very rare....but still i thought of writing what i experienced.

I was working on a project and i installed Weblogic by using JDK of Jrockit version 1.6_25(update 25).
Then i installed all the managed servers like soa_server, IPM_server, UCM_server under weblogic.

Everything was working fine till the time i had to configure ODC on a Sun JDK machine, somehow things were not working properly, so i thought of changing the JDK version of my servers.

I dropped the idea of re-installing weblogic and all the managed servers as,  it would have not solved the purpose.

Thus, i figured out the way to change it so that when the server starts it creates a JVM of SUN instead of JRockit.
In order to achieve this, following changes have to be incorporated:

"ShutDown all the servers before starting making configuration changes"

1)First install Sun JDK 1.6.25 and give install directory as C:\java
2)Open setDomainEnv.cmd present under \user_projects\domains\base_domain\bin
3)set BEA_JAVA_HOME=C:\Java\jdk1.6.0_25(modify existing do not add new)
4)set SUN_JAVA_HOME=C:\Java\jdk1.6.0_25(modify existing do not add new)
5)Go to directory \wlserver_10.3\common\bin
6)Open commEnv.cmd
7)set JAVA_HOME=C:\Java\jdk1.6.0_25(modify existing do not add new)
8)set  JAVA_VENDOR=Sun(add if not there)
9)Under option :sun
  i)set JAVA_VM=-client( for development)
               or
 i)set JAVA_VM=-SERVER( for production)
10)Save all and restart servers

Make sure everything is working fine, if weblogic server doesn't start try to add Environment Variable
JAVA_VENDOR=Sun



I hope this might be of any help to you just in case you get stuck in similar situation..!!!

Monday, June 6, 2011

Oracle IPM-Implementing Financial Image Processing Solution Accelerator

Hi Everybody

I have been writing blogs on SOA and BPM, but of late i have started working on Oracle IPM(Imaging And Process Management) 11gas well.

Recently i have started one implementation of Oracle IPM on Financial Image Processing Solution Accelerator for Oracle EBS at a client's location. The accelerator is a basic solution for AP process(Accounts Payable), it offers basic functionality for implementing paperless solution for Accounts Solution.
Invoice comes into the Organization,scan it using ODC or ODDC from remote location, index it using OFR and manage workflows using IPM with SOA-BPEL as the engine.
During this implementation i encountered several issues which i never faced while working in my office.So, i thought of sharing them just in case it might be of any help.
The main step in Installing Accelerator is to make sure AXF is working fine.AXF is nothing but a framework Application Extension Framework which consists of tables with entires at ERP end(EBS in this case) and at IPM end.
AXF is automatically installed at IPM end when Oracle ECM 11.1.1.5 is installed.Oracle provides directory under C:\Oracle\Middleware\Oracle_ECM1\axf
This directory consists of scripts and demo for installing and testing AXF for EBS or PeopleSoft.
After the installation, it's necessary to test whether AXF is running fine.
To test go to drivers directory under axf:-
1) Click helloworld and then dbscripts directories respectively
2)use the credentials for IPM schema(created during RCU) for login in database
3)Connect and run inserthellocommand.sql
4)Open :http://:16000/imaging/faces/Driver.jspx
 where ipaddress:address where IPM server is running
5)Login using the administrative credentials
6)Enter CommandNamespace:HelloWorld
7)SolutionNamespace:Hi
8)User:Administrative User(eg weblogic)
9)Click on Execute Command, if Conversation Id is generated that means AXF is installed and working properly......


Testing AXF-BPEL Integration:
The main purpose of AXF is to provide integration between IPM and ERP(EBS and Peoplesoft).When a document is scanned and submitted in IPM, then workflow is initiated in SOA on BPEL engine.Thus, whenever any change is done in the process which requires changes in ERP it should be reflected automatically.
In order to synchronize AXF is used and BPEL integration becomes necessary.

To test, perform following things
1)Under axf\HelloBpel select dbscripts\oracle
2)Open insertHelloBPELData.sql
3)In statement,Insert into AXF_SOLUTION_ATTRIBUTES (SOLUTION_NAMESPACE,PARAMETER_KEY,PARAMETER_VALUE) change BPEL_ConnectionName with the name of the Connection created in IPM
4)Execute this query with credentials of shema owner for IPM(created using RCU)
5)Open HelloBpel.jws in jdeveloper and deploy to soa managed server.
6)See the human task, if task is assigned to california group, then create one in Admin Console and assign admin user to it.
7)Open :http://:16000/imaging/faces/Driver.jspx where ipaddress:address where IPM server is running
8)Enter following CommandNameSpace:HelloBPEL
9)Solutionnamespace:OPEN_TASKLIST
10)User:Administrative User(eg weblogic)
11)Click on ExecuteCommand
12)ConversationId should be generated
13)Click on ExcecuteResponse
14)It will take you to worklist and you should be able to see task

If succesful, consider htis to be done.

Common issues: If after clicking on Execute Response, you see this


If this is what you see, try StartHelloBPEL as CommandNamespace.I hope this should work.

Even then if it doesn't show tasks in the worklist, fire the BPEL instance from Enterprise Manager and try to generate a task in worklist.
I am sure once you are able to see task in BPM worklist, you can be sure that instance would automatically get fired once document is uploaded in IPM.

I hope you will find this a bit useful for your implementations.

Thanks and all the best!!


Saturday, December 4, 2010

How to configure Roles and Users in Oracle BPM??

I have just started working on Oracle BPMN and it's a perfect product for modelling business processes.
The first challenge which i surfaced while working on BPMN was how to configure Users for particular Roles.I could see that the task was getting automatically assigned to ProjectName.ApplicationRole
I tried everything starting from LDAP setting to Administrator Console configuration but i could not figure out why every task was by default getting assigned to weblogic(default administrator)???
I did some R&D and then at last bingo!! i was able to get it going......
To Configure Users,you need to do following:
1)Open Enterprise Manager http://localhost:7001/em
2)Expand Application Deployments under your domain(base_domain default)
2)Select any deployed Application and right click on it.

3)In my scenario,i have selected MakerTaskFormUI
4)Right click on it and select Security

5)Under Security Select Application Roles
6)The Application Roles page will open up.
7)Select Application Stripe to Search
8)From the drop down,select OracleBPMProcessRolesApp


9)You will notice that,all the roles will be visible as YourProjectName.Role
10)Select the role for which you want to assign user.
11)After clicking add the user and do not forget to click on OK for each entry.

12)On adding each entry for different roles,you'll see something like this for your application.
13)Go on and test,it should work fine.

How to Integrate SOA With ERP(JD Edwards,PeopleSoft,etc)??

You might have come across situations where you need to integrate Oracle SOA with ERP like JD Edwards,People Soft,SAP etc...
There are two approaches for this:
1)Application Adapters
2)Dynamic Connectors


With the first approach,you just need to install Oracle Application Adapters,follow the installation guide for it and you'll be able to configure it for integration as it discusses about all the requirements,jdeinterop.ini in case of JD Edwards,configuration...GenJava stub...classpath etc..So,it's not worth writing about it on this blog.

The second approach involves,writing the java code in a class and using a Java Embedding in the BPEL in order to meet the requirement.It can be tested individually as well, but as we need to integrate, so it should be called from somewhere and BPEL makes this possible.
In case of of JDE.it requires DB2 client installed on the machine from which the call to JD Environment will be made,and the dependent libraries and jars.
While compiling the code containing BPEL to call the JDE environment, you might encounter an error: Jars could not be found in the BPEL Classpath.
This occurs because at the runtime BPEL looks for the location from where it could pick the dependent jars to hit JDE.
For this you need to do following:
1)Open enterprise manager http://localhost:7001/em
2)Right click on soa_server1

3)Select SOA Administration
4)Then BPEL Properties


5)BPEL Service Engine Properties will open up
6)Click on More BPEL Configuration Properties

7)Under The Attributes Tab,look for BPELcClasspath


8)Enter the location of the jars in the value field


9)Click on Apply and now compile your project containing Dynamic Connector,Java Embedding in BPEL.
I am sure you wont get any errors...



Tuesday, October 12, 2010

HOW TO MANAGE TRANSACTIONS IN OFM SOA SUITE?

Transactions are part of day to day activity,either booking a online ticket or withdrawing cash from ATM..each and every transaction should be managed so as to compensate the non-availability of any service and to rollback the action performed.,say for example while planning a holiday if money has been debited from your account for hotel booking,renting a car etc but if the Air Ticket is not available then.....
Money should be deposited back into the account..
To manage these scenarios,SOA Suite provides two ways to manage transactions..

First is by using Compensate Handler Activity.
Second by using Global transaction property.

The first scenario involves writing down reverse business logic for compensating the particular event,what you have to do is
Add compensate handler to the scope which needs to be Compensated in case transaction fails
Write reverse business logic inside it for compensating(for eg if transaction involves 3 separate DBAdapter calls for inserting data in different dependent tables,and you want to reverse everything in case any of them fails.)
Add a throw activity in the same scope(lets say Scope2) to throw the exception
Add a catch branch in outer scope say(Scope1),catch the exception and add a compensate activity with scope set as  Scope1
Deploy and test,if Business logic has been written properly your transaction would be compensated.

The Second way is based on the concept of Global Transaction,each composite in itself starts a new transaction when it is called whether it involves 1 or more BPELs

There is a property
<property name="bpel.config.transaction" many="false" type="xs:string">requiresNew</property>
This has to be set in the composite under the particular BPEL component tag.
This makes sure that at the point where the particular BPEL containing transaction is invoked,the current Global Transaction is paused and new one is started and only after successful completion of the particular BPEL,Global Transaction is resumed from the point it let off.
Whenever BPEL containig transaction throws the error,the transaction gets automatically rolled back.
Simple isn't it?