I just implemented something similar. You will need a Business Rule of type Wcf Event Handler
Then the code is something like:
Try
' OneStream provides the lines below Dim returnValue As Object = args.DefaultReturnValue args.UseReturnValueFromBusinessRule = False args.Cancel = False
' before consol starts If ( args.IsBeforeEvent And (args.WcfServiceType = WcfServiceType.Calculate Or args.OperationName= "StartConsolidation" Or args.OperationName= "StartProcessCube") ) ' check if user is in security group OK_CONSOL if he is not then cancel running If ( Not brapi.Security.Authorization.IsUserInGroup(si,"OK_CONSOL")) Then args.Cancel = True ' throw in an exception to grab their attention Throw New XFException(si, New Exception("SOX Violation: User NOT Provisioned to Execute Consolidation.")) End If End If Return returnValue
Hi! I have tried this code but it seems it also restricts the user from running "standard" consolidate and also calculate and translate. How can I modify the code so it only restricts "Force Consolidate"?
Thanks! It worked. However, it created another problem. I am no longer able to open the Task Scheduler (Business rule error). Is this a known issue? Once I deleted the wcfEventHandler business rule the Task Scheduler worked as normal again.
Namespace OneStream.BusinessRule.WcfEventHandler.WcfEventHandler
Public Class MainClass
Public Function Main(ByVal si As SessionInfo, ByVal globals As BRGlobals, ByVal api As Object, ByVal args As WcfEventHandlerArgs) As Object
Try
Dim returnValue As Object = args.DefaultReturnValue
args.UseReturnValueFromBusinessRule = False
args.Cancel = False
If (
args.IsBeforeEvent And
ScenarioDimHelper.GetNameFromID(si, si.WorkflowClusterPk.ScenarioKey) = "Actual" And
(args.OperationName = "Calculate" Or args.OperationName = "StartConsolidation")
) Then
Dim isForced As Boolean = args.inputs(2)
If( isForced )
Throw New XFException(si, New Exception("Force Cosolidation Not Allowed."))
Else
Return returnValue
End If
End If
Return returnValue
Catch ex As Exception
Throw ErrorHandler.LogWrite(si, New XFException(si, ex))
End Try
End Function
End Class
End Namespace