02-13-2014 06:56 AM
Requirement: During approval phase, if change coordinator is a member of approver groups, he shouldn't be able to approve the change either from service manager or Service Request Catalog.
I have implemented it in service manager by updating the "approval.init" process to control the value of $L.can.approve.
However change coordinator is still able to approve the change from Service Request Catalog (SRC). Any suggestions about how to implement this for SRC.
02-13-2014 02:42 PM
That being said, after a quick look it seems you could modify the ScriptLibrary 'ScAPI_svcCatApprovals'.
Take a look at the 'getApprovalInboxOwnSql()' function. There is likely other functions that would need to be modified as well.
Again, I haven't done this but it looks like the above ScriptLibrary is the place the start.
Maybe someone else can provide more insight...
02-13-2014 06:19 PM
Out of box, the data to prevent the approval is not present in the approval record.
When you view a change or interation in a full client in SM to approve it. you can apply constraints based on the ticket data to prevent an approval group member from approving if the are the coordinator. For example, add an approval control of "coodinator in $L.file<>$lo.user.name"
When approving via ESS or SRC, your approval is against the approval records themselves, which do not include the data to either prevent them from appearing to the user to approve or provide a way to block the approval.
- You could tailor the approval table to add a field to hold the ticket coordinator from the change (you'd want to tailor it to manage reassignment to another coordinator).
- Once the approval def includes the coordinator ID, you could limit the user's ability to approve via the SRC.
One possible option: Use a manadanten restricting query against the approval table which applies when the user is logged into a self-service client. For example: $G.ess & coordinator <> operator() | not $G.ess
The query parses as:
- when accessing approvals, if self service is true do not display any approval records where the coordinator in the approval record is the logged in operator
- If not ESS (not $G.ess) then show all approval records to which the user should have access and your controls will prevent them from approving.
There are several exising topics which explain mandanten in more detail if you are not familiar with it.