Forum Discussion
Hi Khanh
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"?
- Oscar2 days agoContributor
the following will tell you if it's force consolidate:
Dim isForced As Boolean = args.inputs(2)Then add to your nested code as required:
If( isForced )
.....
Else
.....
End If- StigThronaes2 days agoNew Contributor
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.
- Oscar2 days agoContributor
I simplified the business rule
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
Related Content
- 2 years ago