The OneStream Community is temporarily frozen until June 29th due to the ongoing maintenance. Please read the blog post here to learn more.
Forum Discussion
Guru_Prasad
9 months agoNew Contributor
Meta Data UD2 DIM
We have some group of base customers under different parents with text property, and we are planning to block input to those customers in all the input forms if we use dimension property Allow input ...
T_Kress
OneStream Employee
9 months agoThe "In Use" setting on the dimensions turns the intersection pink so that it appears as an invalid intersection, for all users (even native administrators):
And the "Allow Input" setting on the dims turns the intersection green so it appears read only, again for all users including native administrators:
There are many ways to handle this requirement:
- Create a form where those customer UDs are not shown thus now allowing input (.Where(Text# = 'whatever') and only grant access to that WF profile and form to the users whom you do not want inputting
- Create another form where the FP&A folks can get to it and those intersections are shown
- Create a WF Channel on U2 and use the WF channel combined with the WF profiles and forms to control which WF profiles people can get into to enter data
- If the Customer U2 is a parameter in the form, create a security group that you attach to the "Display Member Group" on those UDs and allow some people display access and others not. The "Display Member Group" security property is a good way to "hide" members from pick lists and parameters
- Use a NoInputBR on the cube where if users are in a specific security group (or certain WF profile), you grant them access and if not you turn those intersections to read only
- Use Slice security on the cube(s) to grant all access or only read access to those intersections
You may be able to get the DM job and BR to flip the In Use or Allow Input from True to False, but this seems more complicated and less elegant than perhaps one of the above options.
Others may have ideas too, these are just some that came to mind for me. If this is just a requirement around forms data entry and the U2 is a pick list parameter on the forms, I would probably lean towards using the "DisplayMemberGroup" on those customers and create a security group that some people can see (FP&A) and others cannot see (people who should not input). That will remove those U3 customers as a choice in the parameter on the form.
Guru_Prasad
9 months agoNew Contributor
Hi T_Kress, I assigned specific FPA channel to the customer for adjustments that can be done for only FPA but in 'Standard' workflow channel the customer is allowing input to the site user even though we assigned FPA channel to that customer. If 'No Input' BR is available, can you please give any example or reference for BR. it should show for all users and all workflows but should allow input for only FPA workflow channel.
we already have too many input forms so we cannot change customer filter in all the forms can we flip allow input for some datatypes it is very help full.
- T_Kress9 months ago
OneStream Employee
There should be an example in the Golf Stream app. But if you do not have access, here is one example of this Finance BR.
Namespace OneStream.BusinessRule.Finance.BR_NoInput Public Class MainClass Public Function Main(ByVal si As SessionInfo, ByVal globals As BRGlobals, ByVal api As FinanceRulesApi, ByVal args As FinanceRulesArgs) As Object Try Select Case api.FunctionType Case Is = FinanceFunctionType.ConditionalInput Dim pov_account As String = api.Pov.Account.Name Dim pov_scenario As String = api.Pov.Scenario.Name Dim pov_consolidation As String = api.Pov.Cons.Name Dim pov_origin As String = api.Pov.Origin.Name Dim pov_entity As String = api.Pov.Entity.Name Dim pov_entity_Curr As String = api.Entity.GetLocalCurrency.Name Dim pov_u1 As String = api.Pov.UD1.Name Dim pov_u2 As String = api.Pov.UD2.Name Dim pov_u3 As String = api.Pov.UD3.Name Dim pov_u4 As String = api.Pov.UD4.Name Dim pov_u5 As String = api.Pov.UD5.Name Dim pov_u6 As String = api.Pov.UD6.Name Dim pov_u7 As String = api.Pov.UD7.Name Dim pov_u8 As String = api.Pov.UD8.Name Dim pov_ICP As String = api.Pov.IC.Name Dim pov_flow As String = api.Pov.Flow.Name Dim CurrTime As String = api.Pov.Time.Name Dim pov_year As String = TimeDimHelper.GetSubComponentsFromName(CurrTime).Year Dim pov_period_num As String = TimeDimHelper.GetSubComponentsFromName(CurrTime).Month If pov_u7="NotDefined" And pov_entity<>"Entity_Admin" And pov_account<>"PCON" And pov_account<>"POWN" Then Return ConditionalInputResultType.NoInput End If If (pov_scenario = "None" Or pov_entity = "None" Or pov_account = "None" Or pov_flow = "None" Or pov_u1 = "None" Or pov_u2 = "None" Or pov_u3 = "None" Or pov_u4 = "None" Or pov_u5 = "None" Or pov_u6 = "None" Or pov_u7 = "None" Or pov_u8 = "None") Return ConditionalInputResultType.NoInput End If Return ConditionalInputResultType.Default End Select Return Nothing Catch ex As Exception Throw ErrorHandler.LogWrite(si, New XFException(si, ex)) End Try End Function End Class End NamespaceIn this case they are testing the POV of the user to flip to ConditionalInputResultType.NoInput.
In your case, you would want to check that the user is in a specific security group and have that determine the NoInput BR.
You would then attach this BR to the cube(s).
Good luck!
- Guru_Prasad9 months agoNew Contributor
hi T_Kress thank you so much for your inputs its very help full we already have the BR for NoInput and I added my requirement code. We assigned for cube its working perfectly, but my doubt is will it impact performance issue anywhere this is my code which is updated. if there is no such performance issue I am good to go to production, I don't see any issue when it comes to any performance please advise.
Related Content
- 2 years ago
- 3 years ago
- 7 months ago