Struggling with File Connector

Today I was struggling with the File Connector in combination with CARS authentication and the multi-tenancy within Cordys. I really like the multi-tenancy concept, but some features in Cordys are not mature yet.

We have a project with a lot of Organizations using the same BPM processes. These processes are deployed within the System Organization. The Organizations (the number can be up to 2000 !) are provisioned using Cordys Cloud Provisioning (CCP). The (Cordys) Users are authenticated through WS-Security within the soap headers.
In one of the processes we want to do a call within the context of another Organization.

When I read the community blogs and asked some people they came up with

1 - UDDI Interceptor
In this case you call a webservice of Cordys through a UDDI connector and use an interceptor to add the WS-Security header. The user authenticated has been put within a default Organization, so this way the call is done within the context of that users Organization.
Note: There is a lot of information within the community to write such an interceptor.
Note2: It is not a very elegant solution, because you would expect this to be configurable within the UDDI connector itself (just like any other EAI/BPM tool)

However there was a catch, so that this option did not work. All processes are deployed within System and the BPM process is deployed within a BPM Service Container with namespace N and operation OP. When this method is to be called from within a UDDI connector (and this UDDI connector is also in System Organization), this is done with the same namespace N and operation OP.
So Cordys has actually two Service Containers where to send the message to

2 - File Poller
Because the call has to be done after a file has been placed on some directory, the file poller would be another option. In this case the trigger of the file poller would be a call to the BPM webservice with another Organization as context.

So the XML Poller configuration looks something like:

However this time you ran into the problem that the trigger does not insert a WS-Security header.
(see also http://code.google.com/p/cordysfilecon/issues/detail?id=33)

The way this could be solved was by using another soap request:

Thanks, Roger van de Kimmenade


Provisioning: Defining an Application


This blog item shows an example on how to define an application that can be used by other Organisations. In this example we have a simple Cordys BOP4 setup. We have only the Default Cluster. In this example the ISV packages are made and it will show how to define the application within CCP. It will show how easy this is within CCP. After this you are able to Provision organisations to use applications within the Cloud.
An introduction to CPP was already given here.

Define the Business Partner
First you will have to define a business partner that developed the ISV. This business partner is needed when defining the Application.

  • Goto System Organization
  • Open Global Business Partners

  • Select +-sign
  • Fill in the details

  • Click Save
Define the Application

Note: A CCP application is NOT a synonym for a ISV package. An application can encompass several packages and a package can be used for the definition of several applications.

  • Goto System Organization
  • Open Global ApplicationsClick +-sign
  • Fill in the Application details:
    Application id: com.ciber.utilityservicesApplication name: CIBER Utility ServicesNote: Within ISV the CIBER Netherlands can be picked

  • Click Save
  • Now the following Tabs are shown at the bottom

The Roles are used to define all the roles that are available for the application.
The X-forms are used for GUIs that are used during provisioning. Here you can add for example an input GUI each time a new Organisation is provisioned. For example to ask for extra attributes.
The BPMs are used during provisioning.

  • Select Roles tab
  • Select the first Role as Role Id

Tip: It is advised to put functional roles in a separate ISV package, maybe in a later blog item i will come back to this.

  • Fill in further details for the Role
  • Click Save
  • Do the same for other Roles
Note: When an application is assigned to an Organisation each Role can be used within that Organisation. You have to be aware of this when defining the application. Sometimes you do not want some Organisations to have a certain Role. In that case it is best to define a separate Application.

After that you have to define on which cluster the application runs.

  • Select Installed on clusters tab
    Click +-sign
  • Select the  Default Cluster
  • Click Save
  • Click Validate (This is important, because then the state of the application becomes In use)
  • Click Back
  • Click Save
Before the application can be used it must be added to a Channel. A Channel in this case is the Global Channel that is defined when installing Provisioning.

Add Application to Default Channel

  • Goto System Organization
  • Open Global Channels

  • Select Collection tab
  • Open Collection

  • Click on +-sign to add an application to this collection
  • Within Application id select the com.ciber.utilityservices application
  • Click Save
Now you can assign Applications to Organisations.