Sunday, February 12, 2012

BPM 11g BAM Data Object not created automagically

Have you ever faced a situation where the BAM DO was not getting created automagically when you deploy and run your BPM 11g (In this case I am using BPM 11.1.1.5 with FP) process as expected? Here are the list of checks that you must make to ensure that everything was setup as documented.

1. Ensure that the BAM deployment configurations are done in Oracle WebLogic Console (Go to Deployments -> BAM Adapter -> Configurations -> Outbound Connection Pool and provide the BAM connection details for eis/bam/soap and update the deployment plan)

2. Go to Oracle WebLogic EM console, ensure that the 'Disable Actions' property is empty (By default, this property will hold a value as 'BAMCommand') under the soa-infra domain 'System MBean Browser'

3. Ensure that the 'Enable BAM' option is selected. Go to 'BPM Project Navigator', right click on the process -> Project Preferences -> Select 'Enable BAM' option. Also ensure that the BAM Adapter JNDI is provided as configured in the deployments (refer step 1 above). By default the JNDI is eis/bam/soap. Leave the Data Object location to Samples/Monitor Express which would the default location where the BAM DO will be created 'automagically'


4. Ensure at least one business indicator (dimension) must have been created in the BPM process for which you would ideally pass/set values from within multiple stages in your process so that the runtime data is sent to BAM real-time

5. Before deploying the BPM process (after enabling BAM), ensure that any previous versions of the process are undeployed from Oracle WebLogic server

6. DO NOT execute the setup.bat or setup.sh script available under /Oracle_SOA1/bam/samples/bam/monitorexpress/bin

I have noticed that this had caused the following error while BAM tries to create the data object dynamically (version 11.1.1.5 with FP). On closer observation of the bam server diagnostic logs the following error is sighted which in itself is not very intuitive to fix as it complains of constraint violation in orabam MDS database during the creation of the BPM BAM DO.

Exception: oracle.bam.adc.common.exceptions.UniqueConstraintViolationException: BAM-01273: Active Data Cache unique constraint violation
  at oracle.bam.adc.dse.oracle.OracleExceptionHelpers.getStorageException(OracleExceptionHelpers.java:134)
  at oracle.bam.adc.dse.oracle.OracleStorageEngine.insertDataSetRow(OracleStorageEngine.java:1216)
  at oracle.bam.adc.kernel.datasets.DatasetBase.insertRowInternal(DatasetBase.java:630)
  at oracle.bam.adc.kernel.datasets.DatasetBase.insertRow(DatasetBase.java:592)
  at oracle.bam.adc.kernel.datasets.SystemDataset.insertRowInternal(SystemDataset.java:172)
..
..
..
Caused by: java.sql.SQLIntegrityConstraintViolationException: SQLError(1) SQLState(23000) ORA-00001: unique constraint (DEV_ORABAM.SYS_C007296) violated

In order to fix this issue, do the following;
Go to BAM console -> Active Studio -> Delete the following reports pertaining to BAM monitor express
  • Monitor Express Dashboard
  • Monitor Express Summary
  • Monitor Process Details
  • Fault Report

Go to BAM Console -> Architect -> Delete the following Data Objects pertaining to BAM monitor express in the order specified below;
  • INTERVAL
  • COUNTER
  • COMPONENT

7. Undeploy existing process composite if any

8. Restart your servers

9. Deploy the BPM process

10. Trigger an instance. Voila!! the BAM Data Object should have got created in your BAM console

11. Now, play around with the BAM DO and build your custom real-time dashboard reports

10 comments:

  1. I get this error when I try the EnterQuoteDetails page tries to open up
    BAM-06145: Cannot update rows in data object /Samples/Monitor Express/BI_default_SalesQuoteProcess_RequestQuote.java.lang.NullPointerException

    Can you please help me on understanding what this means?

    ReplyDelete
  2. Two questions :
    1. Did you configure BAM as per the steps listed above?
    2. Check if the BAM DO had been created in the server. You can verify this by logging into BAM architect.

    ReplyDelete
  3. Great work! Saved me a lot of time figuring this out. Thanks Sathya!

    ReplyDelete
  4. You are welcome yc. Happy that this helped.

    ReplyDelete
  5. We followed your instructions, but BPM deployment does not generate the data Objects in BAM.
    We did run the setup.sh script available under /Oracle_SOA1/bam/samples/bam/monitorexpress/bin, but removed everything as described by you.
    We do have version 11.1.1.5 PS4 (and not PS4FP). Could that be the reason? Is there then a possibility to generate the objects automatically?

    ReplyDelete
    Replies
    1. Hi Bert,

      Feature Pack is a very important patch required for PS4 which includes bug fixes for a lot of BPM issues, performance improvements and significant feature upgrade. I seriously recommend you to upgrade to Feature Pack on PS4. More details can be found at http://www.oracle.com/technetwork/middleware/bpm/learnmore/whatsnewbpmfeaturepack-487968.html

      Hope that helps.

      Delete
  6. Thanks Sathya, you saved a lot of time..
    Just curious, does it say anywhere in the BPM dev guide that these Data objects are created automatically?

    ReplyDelete
    Replies
    1. Ponraj,

      The creation of BAM DO by BPM 11g automatically is a feature introduced with PS4 release (I think I am right with the release here..) Prior to PS4 release user were required to manually create the Data Objects and Metrics in BAM before BPM could write data into it. So this is a new feature of PS4 rather than a development approach to be recorded in a dev guide.

      Delete
  7. You get the "oracle.bam.adc.common.exceptions.UniqueConstraintViolationException: BAM-01273" because the data structure already exist. Instead of using the "/samples/Monitor Express", create a new folder using BAM Architect and then point the Data Object Path to the new folder in the Project Preferences.

    The Monitor Express can be used, copy reports to new folder and do a "Global Change Data Object", replacing all the references "/samples/Monitor Express" to your new folder.

    Hope that helps !

    ReplyDelete
    Replies
    1. Hi Pieter,

      Appreciate your inputs.

      But based on my experience I have seen people getting the "UniqueConstraintViolation" even when they use a unique location other than Monitor Express. With some experiments it was observed that the issue is caused because of the execution of Monitor Express script and I wanted to blog the solution which helped me to get over the issue.

      Thanks!

      Delete