Request Splitter

Eugene Sergeev edited this page Jan 10, 2016 · 6 revisions

How to implement a request splitter for group membership changes requests – partial request approvals

Use case

You have owner approval workflow for group membership changes requests.

A person submits request to add 10 users to a group, group owner agrees to add 9 users but declines to add 1 user so he rejects the request.

Issue

No users are added to a group as the whole request is rejected. You cannot partially approve or reject a request.

Solution

Split original request into separate requests and let approver to choose which requests to approve. The idea is to substitute Members to add field on RCDC form with a custom attribute MembersToAdd bound to group object. You need to create a custom attribute, grant permissions for everyone to manage it and place it on a group edit RCDC form.

Then you add an action workflow !Groups: split request to add members executed on additions to this multi-valued attribute.

The workflow itself will be very simple: it will iterate through each element added into MembersToAdd and will submit request to add that element into real group members attribute ExplicitMember. The key point here is Apply Authorization Policy option enabled and request actor Requestor

The cleanup step removes members added into that temporal MembersToAdd attribute / cleans it up.

How to test

Open the target group and switch to Members section. Select Jonny English and Kim Jones as Members to Add… click OK.

Check that 2 items will be added to multi-valued attribute Members to Add. Click Submit.

Go to Search Requests section on a portal and search for today’s requests.

You have actually made only the highlighted request and two subsequent ones were submitted by MIMWAL using your ActorID.

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.