Recent Discussions
- Losing Dynamic Parameters on Dashboard RefreshHello, I would be very grateful if someone could offer some direction on fixing the issue of dynamically generated parameters disappearing on a refresh action. When the dashboard initially loads, all of the dynamic parameters render as expect. I have an extender service setting the count of parameters to 2 for each param type (Debits,Credits). These work off two stored member list parameters, par_DebitList and par_CreditList. When the dashboard is refreshed, I lose the _dynamic_2 even though the parameter count is still 2. Public Function GetDynamicParametersForDynamicComponent( _ ByVal si As SessionInfo, ByVal api As IWsasDynamicDashboardsApiV800, ByVal workspace As DashboardWorkspace, ByVal maintUnit As DashboardMaintUnit, ByVal dynamicComponentEx As WsDynamicComponentEx, ByVal customSubstVarsAlreadyResolved As Dictionary(Of String, String)) _ As WsDynamicParameterCollection Implements IWsasDynamicDashboardsV800.GetDynamicParametersForDynamicComponent Try If api Is Nothing Then Return Nothing Dim CompName As String = dynamicComponentEx.DynamicComponent.Component.Name If CompName.Contains("CBX_Credits") Or CompName.Contains("CBX_Debits") Then Dim params As WsDynamicParameterCollection = api.GetDynamicParametersForDynamicComponent( _ si,workspace,dynamicComponentEx,String.empty,Nothing,tristatebool.TrueValue,WsDynamicItemStateType.MinimalWithTemplateParameters) Dim paramname As String = Nothing If CompName.Contains("CBX_Credits") Then paramname = "par_CreditList" Else paramname = "par_DebitList" End If Dim ParamComp As WsDynamicCompParamMemberEx = params.GetParameterUsingBasedOnName(paramname) Return params Else Return api.GetDynamicParametersForDynamicComponent(si, workspace, dynamicComponentEx, String.Empty, Nothing, TriStateBool.TrueValue, WsDynamicItemStateType.MinimalWithTemplateParameters) End If Catch ex As Exception Throw ErrorHandler.LogWrite(si, New XFException(si, ex)) End Try End Function This is my setting on the combo box: When refreshing the dashboard, all the components render, but just the parameters are lost. When loading the dashboard, GetDynamicParametersForDynamicComponent executes 8 times, while on a refresh it is only executing 6 times. Would appreciate any guidance on this. Thanks!BenEppel26 minutes agoContributor2Views0likes0Comments
- Getting the parent dashboard name of an embedded dashboard ?Hello, I am currently working on the solution which consist of a dashboard page that can be embedded in other dashboards. For this solution, I would like to reference the name of the parent dashboard where the embedded dashboard is currently embedded. Are there any standard functionalitity / functions that would catch the main or parent dashboard of an embedded dashboard ? Many thanks for your insights. Regards,Sergey8 hours agoOneStream Employee2Views0likes0Comments
- Catch Button action (save/force calculte) with EventhandlerHello, I am currently working on some Eventhandlers to prevent a group of users to execute calculate/translate/consolidate in dedicated scenarios. This was easy to do and works fine. But we have created a button in a dashboard which combines a save action "save data for all components" with a Server Task "Force Calculated" and I don´t know how to catch this button in an Eventhandler. Any hints how to do this? Regards MartinMartin_Gebhartl13 hours agoNew Contributor III5Views0likes0Comments
- What IMPORT should i use for the SECURITY updates for BRApiHi All, i am new to OneStream, i tried creating BR for Security automation. below is my entire code in OS-BR. Imports System Imports System.Collections.Generic Imports System.Data Imports System.Data.Common Imports System.Globalization Imports System.IO Imports System.Linq Imports Microsoft.VisualBasic Imports OneStream.Finance.Database Imports OneStream.Finance.Engine Imports OneStream.Shared.Common Imports OneStream.Shared.Database Imports OneStream.Shared.Engine Imports OneStream.Shared.Wcf Imports OneStream.Stage.Database Imports OneStream.Stage.Engine Namespace OneStream.BusinessRule.Finance.BR_UserManagement Public Class SecurityGroupHelper Public Sub ShowQAGroups(ByVal si As SessionInfo, ByVal api As FinanceRulesApi) Try ' Get all security groups using the API passed to the function Dim allGroups As GroupInfo = BRApi.Security.Admin.GetGroup(si, "QA_Admin") ' Loop through all groups and display a MessageBox for each that starts with "QA_" For Each grp As MemberInfo In allGroups If grp.Member.Name.StartsWith("QA_") Then MessageBox.Show(grp.Member.Name, "QA Group Found") End If Next Catch ex As Exception Throw ErrorHandler.LogWrite(si, New XFException(si, ex)) End Try End Sub End Class End Namespace --------------------------------------------------------------------------------------- I am getting error as below. i am not sure what mistake in the code. one i am sure about messagebox.show. Error compiling Business Rule 'BR_UserManagement'. 1) Error at line 27: Expression is of type 'GroupInfo', which is not a collection type. 2) Error at line 29: 'MessageBox' is not declared. It may be inaccessible due to its protection level.DK_OS2 days agoNew Contributor50Views0likes4Comments
- How do we write a BRApi code for SetDataCells?Hello Community! I am trying to write a BRApi SetDataCells code but cant get the syntax right. Can someone please share an example? I am not sure how to get the "dataCellExs" in the below code: BRApi.Finance.Data.SetDataCells(si, dataCellExs) Thanks in advance.HemantGhosh4 days agoNew Contributor37Views0likes1Comment
- FilterMembers syntax (: vs ,) and base clearing when using GetDataBufferUsingFormulaI’m working on a custom clear process that clears cube data using GetDataBufferUsingFormula() The goal is to dynamically clear data for all base members under the current POV (Entity, UD1-UD4) by expanding any parent members with the .Base suffix. In other words, I want to make sure every dimension in the POV (Entity and UDs alike) is ultimately resolved down to base members before the clear runs. Here’s a simplified idea of what I’m doing: Dim filterString As String = String.Join(":", intersectionParts) Dim fullFilter As String = $"FilterMembers({filterString})" Dim sourceBuffer As DataBuffer = api.Data.GetDataBufferUsingFormula(fullFilter, DataApiScriptMethodType.Calculate, False, destinationInfo) The process builds a FilterMembers() expression dynamically, retrieves the buffer, and sets all cell amounts to zero to perform a clear. However, I’m facing two issues: Some child members aren’t being cleared, even when I use .Base on their parent. I’m not fully sure about the correct syntax for FilterMembers, should the dimensions be separated by colon (:) or by comma (,)? What’s the real difference between the two, especially when dealing with multiple parent members or nested intersections? For example, if I have three parent members in my intersection, I might build something like: FilterMembers(E#MyEntity.Base:U1#ProfitCenter.Base:U2#Location.Base) But it’s unclear whether that colon syntax is correct, or if it should be comma-separated, or another thing is, the use of square bracket...since some base-level data doesn’t seem to clear. Could this be a syntax issue with FilterMembers, or could the problem come from how I’m constructing or passing the intersection into GetDataBufferUsingFormula()? Any clarification or working example for multi-parent .Base expansions with FilterMembers() would be a huge help. Thanks in advance!saifsafwan4 days agoNew Contributor23Views0likes2Comments
- Create a parameter to determine the initialization status of each forecast?Hello everyone, We have set up a monthly forecast that is compared to the budget or actual figures in different cube views. We currently use a parameter to select the forecast month in each cube view, but I would like to remove it and have the latest forecast for the year or year N-1 displayed automatically. I have created an XFBR that retrieves the holding company's turnover for each of the 11 forecasts (January, February, etc., November) and displays the forecast closest to December with a turnover. The problem is that not all users have access to this company, so the BR does not work for them. I could change the BR to add companies to it so that it works for all users, but I find that cumbersome. Is it possible to save a value (X or 1) in a variable when initializing the forecast so that the BR can query this variable based on the Time scenario and thus know which forecast has been initialized? How do you do this in your OS?JérémyRenard5 days agoNew Contributor37Views0likes3Comments
- Calculation in Scenario memberI am trying to calculate Average Percent Period Movement (AVPPM) — i.e.: AVPPM=Actuals(Current)−Actuals(Prior Period) / ∣Actuals(Prior Period)∣×100 = and store the result in S#AVPPM for the current POV. I tried using the below script in Business rule or Scenario member formula for S#AVPPM but not getting the correct result. api.Data.Calculate("S#AVPPM = (S#Actuals - (S#Actuals:T#POVPrior1)) / (ABS(S#Actuals:T#POVPrior1))*100", True) Appreciate any help!Harv9 days agoNew Contributor III35Views0likes2Comments
- How to export data out of BRHi All, I created a Business Rule to export all the GROUPS that i have in OS applciation. i try to export the data in a file. i tried below option , it did not work created BR and executed there as File output Created a Data Management Sequence and added 2 steps. 2 for BR and other for File Export. But my File export fails as NAME Empty Below is the error Error processing Data Management Step 'ExportGroups'. Name is empty. Below is the BR i used. Imports System Imports System.Collections.Generic Imports System.Data Imports System.Data.Common Imports System.Globalization Imports System.IO Imports System.Linq Imports Microsoft.VisualBasic Imports OneStream.Finance.Database Imports OneStream.Finance.Engine Imports OneStream.Shared.Common Imports OneStream.Shared.Database Imports OneStream.Shared.Engine Imports OneStream.Shared.Wcf Imports OneStream.Stage.Database Imports OneStream.Stage.Engine Namespace OneStream.BusinessRule.Extender.BRGetAllGroups_1 Public Class MainClass Public Function Main(ByVal si As SessionInfo, ByVal globals As BRGlobals, ByVal api As Object, ByVal args As ExtenderArgs) As Object Try ' Get all security groups Dim groupsObj As Object = BRApi.Security.Admin.GetGroups(si) Dim names As New List(Of String) If groupsObj Is Nothing Then names.Add("No security groups found") Else Dim enumerable = TryCast(groupsObj, System.Collections.IEnumerable) If enumerable IsNot Nothing Then For Each g In enumerable If g IsNot Nothing Then Dim name As String = g.ToString() If name <> "" AndAlso Not names.Contains(name) Then names.Add(name) End If End If Next End If End If ' FORMATTED OUTPUT FOR EASY VIEWING Dim output As New List(Of String) output.Add("=== SECURITY GROUPS LIST ===") output.Add("Generated: " & DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")) output.Add("") For Each name In names output.Add(name) Next output.Add("") output.Add("=== END OF LIST ===") output.Add("Total groups: " & names.Count.ToString()) Return output Catch ex As Exception Dim errorList As New List(Of String) errorList.Add("ERROR: " & ex.Message) errorList.Add("Generated: " & DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")) errorList.Add("=== END ===") Return errorList End Try End Function End Class End NamespaceSolvedDK_OS10 days agoNew Contributor38Views0likes3Comments