Saturday, May 18, 2013

Configuring OUD on weblogic

Installing OUD and setup ODSM (Oracle Directory Service Manager) console is available at this link -


To configure OUD as authentication provider you need to configure a new provider by selecting "Iplanet authenticator". Move the newly created provider at the top in the list of authentication providers.

Select the OUD provider and go to provider specific tab. Enter the values as below -

User from name filter: (&(cn=%u)(objectclass=person))
User Name Attribute: cn
User Object Class: person

Group Base DN: dc=oracle,dc=com
Group From Name Filter: (&(cn=%g)(objectclass=groupofentries))

Static Group Name Attribute: cn
Static Group Object Class: groupofentries
Static Member DN Attribute: member
Static Group DNs from Member DNFilter:(&(member=%M)(objectclass=groupofentries))


NOTE - Remember to set "entryuuid" in the last property i.e. GUIDAttribute of provider specific tab for OUD authenticator.

In SOA 11.1.1.6 you also need to the set virtualize=true as shown in the screen shots below -



Thursday, May 9, 2013

Issue Using xp20:upper-case in Assign Activity

Strange issue with using xp20:upper-case in assign activity. Below will not work -

xp20:upper-case($inputVariable.payload/client:MessageType)

where MessageType is of type string.

It will work like this -

xp20:upper-case(string($inputVariable.payload/client:MessageType))

This issue was encountered in SOA 11.1.1.5 - bpel 2.0

Friday, May 3, 2013

WSDL With Multiple Bindings

A service can be exposed on multiple protocols for e.g. web service having one operation exposed over SOAP/HTTP can also support SOAP/SMTP protocol. The only additional part required in WSDL is a binding element with correct transport. A sample WSDL is given below -

<wsdl:definitions name="ValidationService" targetNamespace="http://xmlns.oracle.com/NTApplication/ValidationService" xmlns:client="http://xmlns.oracle.com/NTApplication/ValidationService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://xmlns.oracle.com/NTApplication/ValidationService" schemaLocation="../xsd/ValidationService.xsd"/>
</schema>
</wsdl:types>
<wsdl:message name="ValidationProcessRequestMessage">
<wsdl:part name="payload" element="client:process"/>
</wsdl:message>
<wsdl:message name="ValidationProcessResponseMessage">
<wsdl:part name="payload" element="client:processResponse"/>
</wsdl:message>
<wsdl:portType name="ValidationService">
<wsdl:operation name="validate">
<wsdl:input message="client:ValidationProcessRequestMessage"/>
<wsdl:output message="client:ValidationProcessResponseMessage"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ValidationServiceBinding" type="client:ValidationService">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="validate">
<soap:operation style="document" soapAction="process"/>
<wsdl:input>
<soap:body use="literal" namespace="http://xmlns.oracle.com/NTApplication/ValidationService"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" namespace="http://xmlns.oracle.com/NTApplication/ValidationService"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="ValidationServiceJMSBinding" type="client:ValidationService">
<soap:binding transport="http://www.w3.org/2010/soapjms"/>
<wsdl:operation name="validate">
<soap:operation style="document" soapAction="process"/>
<wsdl:input>
<soap:body use="literal" namespace="http://xmlns.oracle.com/NTApplication/ValidationService"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" namespace="http://xmlns.oracle.com/NTApplication/ValidationService"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
</wsdl:definitions>

Wednesday, April 10, 2013

Assigning BPMWorkflowAdmin role to a user

BPMWorkflowAdmin role is an administrative role for a user in BPM worklist application. You can assign this role by following these steps.

In EM console expand weblogic domain -> [domain_name] and right click on domain. Select Security > Application Roles.


On Application Roles page select application "soa-infra" and click search/go button.

 The result will display a list of roles on soa-infra and registered members. Click link BPMWorkflowAdmin.


 Click AddUser in next screen.


Search for the user whom you want to assign a role and that's it. You are done!!!



Friday, April 5, 2013

SOA Suite Webservice to Access IdentityStore

Oracle SOA Suite provide OOTB web service to retrieve the details from identity store. This web service can prove very useful to verify if a SOA/workflow application can see the users and groups stored in the identity store. The web service URL is -

 http://<server>:<port>/integration/services/IdentityService/identity?wsdl

Oracle provides other services as well that can be found at this link -

http://docs.oracle.com/cd/E16764_01/integration.1111/e10224/bp_workflow.htm#BABFFDDF

Before invoking these services you need to set the realm name in em console system MBean browser at this location -

SystemMbean Browser > Application Defined Mbeans > oracle.as.soainfra.config > Server > WorkflowIdentityConfig > human workflow > WorkflowIdentityConfig.ConfigurationType.

Click on the realm to open operations. Invoke operation setRealmName to change the value from "jazn.com" to "myrealm".


Sunday, March 31, 2013

Oracle SOA Application URLs

Below are the urls of application comes with Oracle SOA Suite 11g -



  • Console  -  http://localhost:7001/console
  • EM console for BPEL  -  http://localhost:7001/em
  • OSB console - http://localhost:7001/sbconsole
  • Human task application - http://localhost:7001/integration/worklistapp
  • Rules composer - http://localhost:7001/soa/composer


Thursday, March 14, 2013

Business Rules With Abstract XML Facts As Input

If you are writing business rules with some abstract xml facts as input and at runtime a concrete xml will be passed then make sure that "Check Rule Flow" is unchecked. Otherwise business rule validator will always report a validation error message.

XML supports inheritance and so the top level xml element can be of abstract type as shown below -


Above elements is defined in this manner in schema -


<xsd:complexType name="Document" abstract="true">
<xsd:annotation>
<xsd:documentation xml:lang="en">The abstract base type from which all FpML compliant messages and documents must be derived.</xsd:documentation>
</xsd:annotation>
<xsd:attributeGroup ref="StandardAttributes.atts"/>
</xsd:complexType>


<xsd:complexType name="Message" abstract="true">
<xsd:annotation>
<xsd:documentation xml:lang="en">A type defining the basic structure of all FpML messages which is refined by its derived types.</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="Document"/>
</xsd:complexContent>
</xsd:complexType>


<xsd:complexType name="NotificationMessage" abstract="true">
<xsd:annotation>
<xsd:documentation xml:lang="en">A type defining the basic content for a message sent to inform another system that some 'business event' has occured. Notifications are not expected to be replied to.</xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="Message">
<xsd:sequence>
<xsd:element name="header" type="NotificationMessageHeader"/>
<xsd:group ref="Validation.model"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>


<xsd:complexType name="ContractCreated">
<xsd:annotation>
<xsd:documentation xml:lang="en"> Notification that a Contract has been Created </xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="NotificationMessage">
<xsd:sequence>
<xsd:element name="tradeReference" type="PartyTradeIdentifiers" minOccurs="0"/>
<xsd:element name="contract" type="Contract"/>
<xsd:element name="party" type="Party" minOccurs="2" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

Now assume an element is defined of type Document like below and used as input to decision service.

<xsd:element name="FpML" type="Document">

The compiler will report an invalid dictionary as it will not find a concrete definition at design time. To suppress this error follow below steps to tell compiler not to check for concrete definition at design time.



Demystifying OIC, OCI and Oracle SOA CS

What is OIC (Oracle integration cloud), OCI (Oracle cloud infrastructure), and SOA cloud service and how they are different? - This has bee...