JSON error when processing resource request activity PRD

  • 7009911
  • 19-Dec-2011
  • 26-Apr-2012

Environment

IDM 4.x
RBPM 4.x
Designer 4.x

Situation

When starting a workflow with a resource request activity, the workflow completes but the resource request activity will stay "running" with the status of 0.

The roles and resources driver will have this error when trying to process the resource request activity:

DirXML Log Event -------------------
     Driver:   \SOMETREE\system\Driver Set\Role and Resource Service Driver
     Channel:  Subscriber
     Status:   Error
     Message:  Error processing request
        DN: O=system\CN=Driver Set\CN=UserApplication\CN=AppConfig\CN=RoleConfig\CN=ResourceRequests\CN=20111214170728-a32e84ff3b4e465a80f3840c0b779660-0
        Reason: java.lang.Exception: Error. Entitlement parameter value is not in the expected JSON format, defined by the entitlement configuration setting named parameter-format.  This can occur from malformed JSON in the parameter value, or an entitlement was provisioned with a legacy parameter value before the entitlement parameter support was upgraded to IDM4.
        DN: O=system\CN=Driver Set\CN=Active Directory\CN=Group
        Agent: UA
        Parameter Value: 287b8ee884d1a34bad8ea111111d5cc
[12/14/11 17:07:26.460]:role_resource ST:End transaction

Resolution

During the creation of the PRD in Designer 4.x, one of the properties in the Resource request activity is Entitlement Parameter.
This parameter has to be in a proper JSON format, if your entitlement was created with Designer 4.x packages for IDM 4.x .
Since RBPM uses ECMA and the entitlement parameter needs a string, we need to convert the parameter to string text before sending it over.

The general format for the parameter would be (this example has 3 parameter:value pairs):
{'ParameterName1':'ParameterValue1','ParameterName2':'ParameterValue2','ParameterName3':'ParameterValue3'}

The command used in the PRD would look like:
String("{'ParameterName1':'ParameterValue1','ParameterName2':'ParameterValue2','ParameterName3':'ParameterValue3'}")

An example for the AD driver would be:
String("{'ID':'27b7bab8464f0344810d51adc8a7df41','ID2':'CN=Allowed RODC Replication Group,CN=Users,DC=ADTEST,DC=LAB,DC=NOVELL,DC=COM'}")