Topic
  • 7 replies
  • Latest Post - ‏2019-07-29T12:33:24Z by franzw
saurabhgupta
saurabhgupta
32 Posts

Pinned topic Dynamic and Parallel Approvals in ITIM workflows

‏2010-08-17T13:25:50Z |
Has anyone implemented a scenario with multiple (dynamic in number) parallel approvals in ITIM workflows?

My requirement:
A user can be assigned any number of roles and each role has a role owner. I need to send an approval to role owner of every assigned role, and all approvals have to be sent at the same time. As you can see the number of approvals is dynamic. Also, the custom flow should:
1) catch the first "REJECTED" approval request and then force reject all the remaining pending approvals.
2) modify the Person (ITIM Identity) ONLY if ALL the approvals requests are APPROVED.

It would be of great help, if anyone has a solution for the above problem. I am able to generate parallel approvals in a loop, but still exploring the solution for points 1) and 2) stated above.

Thanks in advance !
Updated on 2010-08-17T14:34:53Z at 2010-08-17T14:34:53Z by SystemAdmin
  • SystemAdmin
    SystemAdmin
    9855 Posts

    Re: Dynamic and Parallel Approvals in ITIM workflows

    ‏2010-08-17T14:09:52Z  
    If there are not too many roles like 100, probably you can do it in the script. In the script you figure out what roles are added/modified, and using the split type as AND you can send it to approval nodes. Also I believe you will have to define a custom participant for role owner.
    Using the join type as AND, you can wait for all approvals to come in(Read Approve/Reject). Using join type as OR, you can read the first rejection and then terminate the request.

    Regards,
    Alok
  • saurabhgupta
    saurabhgupta
    32 Posts

    Re: Dynamic and Parallel Approvals in ITIM workflows

    ‏2010-08-17T14:24:45Z  
    Thanks Alok. As mentioned in my first post, I am able to send out parallel approvals with custom participants and using ONE Approval node in a loop with AND split type.
    My problem is actually the points 1) and 2) which I have tried implementing using AND/OR split and Join types. Also, to forcibly complete (Reject) remaining approval requests I am using "activity.setResult()" but this method is throwing an exception.

    Regards,
    Saurabh
  • SystemAdmin
    SystemAdmin
    9855 Posts

    Re: Dynamic and Parallel Approvals in ITIM workflows

    ‏2010-08-17T14:34:53Z  
    Thanks Alok. As mentioned in my first post, I am able to send out parallel approvals with custom participants and using ONE Approval node in a loop with AND split type.
    My problem is actually the points 1) and 2) which I have tried implementing using AND/OR split and Join types. Also, to forcibly complete (Reject) remaining approval requests I am using "activity.setResult()" but this method is throwing an exception.

    Regards,
    Saurabh
    I beleive activity.setResult() should work.
    Anyway try using WorkflowRuntimeContext.setResult().

    Regards,
    Alok
  • NinadTamras
    NinadTamras
    13 Posts

    Re: Dynamic and Parallel Approvals in ITIM workflows

    ‏2015-04-16T08:38:17Z  
    Thanks Alok. As mentioned in my first post, I am able to send out parallel approvals with custom participants and using ONE Approval node in a loop with AND split type.
    My problem is actually the points 1) and 2) which I have tried implementing using AND/OR split and Join types. Also, to forcibly complete (Reject) remaining approval requests I am using "activity.setResult()" but this method is throwing an exception.

    Regards,
    Saurabh

    Hi Saurabh,

    I am facing a similar issue. Do you remember how you resolved the issue you mentioned above. I am also getting error calling activity.setResult(activity.SUCCESS) on an WORKORDER activity object.

    Regards,

    Ninad

  • Prachi815
    Prachi815
    10 Posts

    Re: Dynamic and Parallel Approvals in ITIM workflows

    ‏2017-10-07T14:21:20Z  

    Hi Saurabh,

     

    I have similar requirement, where user can have n no. of groups and approval should be routed to individual group owners in parallel. Can you help me, as you have achieved similar thing earlier.

     

    Thanks,

    Prachi

  • Prashant Nark
    Prashant Nark
    4 Posts

    Re: Dynamic and Parallel Approvals in ITIM workflows

    ‏2019-07-17T09:48:28Z  

    Hi All,

    I have a similar requirement.

    1. An account can be provisioned with multiple groups.

    2. Each group assignment has to go with 3(can be changed later) level approvals.

    3. Groups approval should be generated in Parallel.

    4. Only add those many groups whole request has been approved.

     

    I need to use nested loop here. One to iterate over groups that are being added. This should happen parallelly.  And the inner one to iterate over 3 level approvals.

    The concerns I have are:

    1. How to go for parallel execution of the inner loop.

    2. If any of request rejected from inner loop, how to break loop.

    3. If any of the approver among 3, rejected the request, I will remove the group from changeset. But how to wait till all groups related approvals approved/rejected and submit the changes only once.


    Thanks and Regards,

    Prashant

     

     

     

     

     

  • franzw
    franzw
    511 Posts

    Re: Dynamic and Parallel Approvals in ITIM workflows

    ‏2019-07-29T12:33:24Z  

    Hi All,

    I have a similar requirement.

    1. An account can be provisioned with multiple groups.

    2. Each group assignment has to go with 3(can be changed later) level approvals.

    3. Groups approval should be generated in Parallel.

    4. Only add those many groups whole request has been approved.

     

    I need to use nested loop here. One to iterate over groups that are being added. This should happen parallelly.  And the inner one to iterate over 3 level approvals.

    The concerns I have are:

    1. How to go for parallel execution of the inner loop.

    2. If any of request rejected from inner loop, how to break loop.

    3. If any of the approver among 3, rejected the request, I will remove the group from changeset. But how to wait till all groups related approvals approved/rejected and submit the changes only once.


    Thanks and Regards,

    Prashant

     

     

     

     

     

    Let me try to walk you through a way of doing this.

    1.Parallel execution can be done using a loop and in the Loop node tick off the "Asynchronous Processing of the Loop Body" checkbox and having the approval as the loop body - you will need to loop over e.g. the approvers. Your exit criteria (loop condition) should check for the approvals having been successful - this also means that you have the option to exit if a rejection is coming in.

    2. You do that in the Loop condition - you can get the status of the activities using the JavaScript extension for activities - check the ISIM JavaScript reference

    3. Again - this is logic you can apply in the loop condition - but that is contrary to the way approvals work - when you approve something (here groups) you cannot just approve one - you need to approve them all or none. Of course you can split the approval per group - but I think you are going in the wrong directions. What you should do is implement Role based provisioning (RBAC) and then approve based on roles. KISS principle should apply and group requests in ISIM is not really up to this - this is why there is difference between Governance (as delivered by IBM ISIGI) and provisioning (as in ISIM).

     

    My recommendation in general is to keep things simple and go for RBAC as this will also enable automation through ISIM closed loop provisioning capabilities (i.e. ISIM will correct if somebody tries to add groups directly on the target system during reconciliation.

     

    HTH

    Regards

    Franz Wolfhagen