Recent Discussions
Real-time "Unsaved" status, Intercepting Workflow Navigation
I have a requirement to implement data integrity guardrails on several budgeting forms (Dashboards containing Cube Views/SQL Table Editor). I am looking for guidance on whether the following two features are technically feasible within OneStream: 1. Real-Time "Unsaved Changes" Indicator The goal is to display a status label at the top of the Dashboard that updates to "Data Hasn't Been Saved" the moment a user modifies a cell value (Cubeview/SQL Table Editor), before they actually click the Save button. Question: Is there a way to detect a "dirty" cell state or user input in real-time to update a dashboard component immediately, or are we limited to updating status only after a Save action is triggered? 2. Navigation Warning (Popup on Exit) The goal is to trigger a popup warning if a user attempts to navigate away from the current Workflow Unit or close the Dashboard tab without having Saved or Run Calculations. Question: Is there an event handler available that allows us to intercept a navigation event, and potentially block the user from leaving the screen until they complete the required actions? If anyone has implemented a similar solution or knows which Business Rule events controls these interactions, I would appreciate the insight. Thanks!saifsafwan17 minutes agoNew Contributor4Views0likes0Comments- Wikus2 hours agoNew Contributor III4.7KViews0likes12Comments
Losing Dynamic Parameters on Dashboard Refresh
Hello, 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!BenEppel2 days agoContributor109Views0likes6CommentsDynamically synchronize Point of View after Workflow Profile changes
Hello, Is it possible to dynamically update the Point of View after making changes to the Workflow Profile? I'd like my scenario and year to be in sync between the two areas if possible. I am aware this can probably be achieved asking a user to manually press a dashboard component such as a button or a combobox, but if possible I'd like this to happen automatically when a user opens a new workflow profile or an associated dashboard is loaded. This should help our users avoid potential conflicts understanding what data she is looking at when working with associated cube views. Don't think I was able to find a business rule or a data management step to help with this task. Many thanks,MShakhmatov3 days agoNew Contributor9Views1like1CommentHelp Needed Moving a Scenario Member
I have a need to move a scenario from under a parent to under Root. Take the example below. I want to move "Forecast" under Root before "ForecastArchive". To do that, my plan was to add a relationship for "Forecast" under Root, and then removing the relationship of "Forecast" under "BudgetScenarios". I am assuming there is not a more direct way to move a member in one step, but would love to be wrong. I am having issues with the first step trying to add "Forecast" before "ForecastArchive" under Root. Below is my code. Does anyone know what I may be doing wrong? Bonus points if you also know how to remove the "Forecast" relationship with the parent "BudgetScenarios" to complete the move. I am sure it's something simple but can't figure it out. When I run this as an extensibility rule, it completes without error but nothing changes in the sceanrio dimension. Dim ForecastArchive_Mem As Member = BRApi.Finance.Members.GetMember(si, DimTypeId.Scenario, "ForecastArchive") Dim Forecast_Mem As Member = BRApi.Finance.Members.GetMember(si, DimTypeId.Scenario, "Forecast") Dim scenarioDimPk As DimPk = BRApi.Finance.Dim.GetDimPk(si, "TopScenarioDim") Dim ForecastArchive_ParMem As Member = BRApi.Finance.Members.GetParents(si, scenarioDimPk, ForecastArchive_Mem.MemberId, True).Item(0) Dim newRootMemRelPos As New RelationshipPositionOptions newRootMemRelPos.SiblingId = ForecastArchive_Mem.MemberId newRootMemRelPos.MovementType = RelationshipMovementType.InsertBeforeSibling Dim newRootMemRelInfo As New RelationshipInfo Dim relationship As New Relationship Dim relationshipPK As New RelationshipPk relationshipPK.ParentId = ForecastArchive_ParMem.MemberId relationshipPK.ChildId = Forecast_Mem.MemberId relationship.RelationshipPk = relationshipPK newRootMemRelInfo.Relationship = relationship BRApi.Finance.MemberAdmin.SaveRelationshipInfo(si, newRootMemRelInfo, newRootMemRelPos)Sweez4 days agoContributor30Views0likes3CommentsMore Filters in FdxExecuteDataUnit
Hello, I'm building Dashboard Data Set business rule to retrieve data from cubes. Besides the member filters in FdxExecuteDataUnit parameters, I'd like to add some additional filters, like account dimension filters, UD1,/UD2/UD4 dimension filters. And filters could include plenty of values. How can I make it work? I try to defined it in below manner, but the result is not filtered as expected. Dim additionalFilter As String = "Account = 'EBIT' OR ACCOUNT = 'CAPEX'" 'Execute FDX query dt = BRApi.Import.Data.FdxExecuteDataUnit( si, "Total_Magna", ' Cube name "E#Parent1,E#Parent2", "C#USD", ScenarioTypeId.Actual, "S#Actual", "T#2025M1", "V#Periodic", True, additionalFilter, 100000, False )SolvedBella_Yu5 days agoNew Contributor III43Views0likes9CommentsRetrieve App Names from Development Environment via Business Rule
Hi, as the title suggests, I'm looking for a way to pull a list of all app names that reside within our Development environment. I know the Snapshot report provides this (but BR are encrypted), but I was wondering if there's a BR way to achieve it. Here is a snippet of what I was attempting to. Please feel free to critique or provide suggestion. Thank you! Dim brapi As BRApi = CType(api, BRApi) Dim dbConnFramework As DbConnInfo = brapi.Database.CreateFrameworkDbConnInfo(si) Using dbConnFramework Dim connectionlink As String = si.WebServerUrlUsedByClient 'Here I was trying to access the environment DB which I believe holds the records Dim sql As String = "SELECT AppName FROM dbo.App ORDER BY AppName" Dim sb As New StringBuilder() sb.AppendLine("----------- OneStream Applications in Dev ---------") sb.AppendLine("") Dim rowCount As Integer = 0 Using dt As DataTable = brapi.Database.ExecuteSql(dbConnFramework, sql, True) If dt.Rows.Count = 0 Then sb.AppendLine("No applications found.") Else For i As Integer = 0 To dt.Rows.Count - 1 sb.AppendLine((i + 1).ToString() & ". " & dt.Rows(i)("AppName").ToString()) Next End If rowCount = dt.Rows.Count End Using sb.AppendLine("") sb.AppendLine("Total Applications: " & rowCount) Throw New XFUserMsgException(si, "", "", connectionlink.ToString()) End UsingSolvedcarbon10 days agoNew Contributor III74Views0likes6CommentsUpdate bound parameter value without refreshing Tree View
Hi, I have a Tree View in my dashboard that contains some items, I want that each time the user selects an item in the tree, this bound parameter in the Tree View updates: So I've set that each time an item is selected in the tree, the dashboard containing the Tree View gets refreshed to update the parameter. The Tree Type is set as "Search" and the problem is that when the dashboard gets refreshed the text box of the search bar gets cleaned and all the items the user might have opened to get to a specific one also get closed. A workaround that I have found is to call a component service function to store the bound parameter into a variable in order to get the value without refreshing (I'm using assemblies). I've already tried using XFSelectionChangedTaskResult, but it doesn't help. I was wondering if there was any other way to do this that I'm missing. Thanks :)SolvedCaccia12 days agoNew Contributor II29Views0likes2CommentsUpdate bound parameter value without refreshing dashboard
Hi, I have a tree view component with this bound parameter: When an item in the Tree is selected, I want the parameter "userSelection" to update accordingly, for this reason I've set it to refresh once an item is selected. The problem is that all the parent items the user opened to get to the selected item get closed once the dashboard gets refreshed, but I can't find a way to update "userSelection" without refreshing. The only workaround I found is to save the parameter value into a variable, but it can be only accessed by components since I'm in a component service (I'm using assemblies). So, do you know any way to save the value into "userSelection" parameter without refreshing? (I've already tried using SelectionChangedTaskInfo but it doesn't work) Thank you.Caccia13 days agoNew Contributor II3Views0likes0CommentsInvalid destination data unit in script
I'm making my first attempt at using the DataBuffer to perform a data copy from a source scenario to a destination scenario. This is being done through a Data Management (DM) step and a Custom Calculate business rule. To keep things simple for this initial version, the input values are hard-coded. Dim dbSource As DataBuffer = api.Data.GetDataBufferUsingFormula("S#Budget:T#2026M7:A#CF101:O#AdjInput:E#ES", DataApiScriptMethodType.Calculate, False) Dim destinationInfo As ExpressionDestinationInfo = api.Data.GetExpressionDestinationInfo("S#Forecast_Q2:T#2026M7:A#CF101:E#ES:O#AdjInput") api.Data.SetDataBuffer(dbSource, destinationInfo,,,,,,,,,,,,,False) Appreciate any inputs to fix this. ThanksSolvedsvj1214 days agoNew Contributor II68Views0likes3Comments