Skip to main content
September 4, 2025
Question

Meta Data UD2 DIM

  • September 4, 2025
  • 1 reply
  • 0 views

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 'false' then it will block input but after that update during close FPA team should do adjustments for those Customers. Can we do it with irrespective of that dimension property false update. Is there any option that without updating input forms (CUBE VIEWS) with customer (UD2) parameter or with the help of business rule can we override that dimension property Allow input 'True' by running DM Step for certain customers when we give them in DM JOB and revert again to false after inputs through DM step. Please suggest your solutions. 

1 reply

September 4, 2025

The "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. 

September 8, 2025

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.

September 8, 2025

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 Namespace

In 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!