Skip to main content
Member
Sep 18, 2026 9:47 PM UTC
Solved

How to build a dynamic dashboard based on Security Groups?

I really want to understand and start using Assemblies, but every time I begin working with them, I run into gaps in my knowledge that block me, and I end up going back to the traditional approach.

Could you show us how to build a dynamic dashboard based on Security Groups? The idea would be to use the same dashboard, but dynamically change a few components, such as Combo Boxes and Cube Views, depending on the user's Security Group.

Also, I recently tried to use an Assembly to calculate and display in a Cube View the variance between two scenarios, based on the scenarios selected in Combo Boxes. I ended up building it using the traditional XFBR approach, but I would like to understand how this could be done using Assemblies instead.

Employee - Sage
Oct 1, 2026 1:53 PM UTC

 

Helpful Links:

  1. Source Code Types
  2. Configure the Service Factory
  3. Service-based Dynamic Repeater Use Case
  4. Programmatically hide dashboard Tabs
  5. Dynamic Dashboards – Passing Parameters with Repeat Arguments.
  6. Tech Talks: Diving into OneStream v8: Workspaces, Assemblies and Service Factory
  7. Tech Talks After Hours - Dynamic Dashboards

 

Transcript:

Hi. Thanks, Alexa, for the question. This question is a bit big. It has a few different sections, so I'll start from the bottom. Because we need to clarify a little bit what you're trying to achieve.

It's absolutely legit to keep using XFBRs to build your cube views. If the issue is just that you want to be able to package those XFBRs inside assemblies, you can do it in a very simple manner by just creating the file in the assembly of type XFBR and then referencing the rule in a slightly different way. And it's documented here in this page called Source Code Types on the documentation. As you can see here, it's got the actual syntax that you can use. So at that point you're basically just writing XFBRs in the usual way. You're just packaging them into the assembly so they are easier to manage together with the rest of your solution. Right? So that's one possibility.

Another possibility is a bit more complex, which is to actually use the dashboard string service, which is basically doing XFBR, but in the service factory paradigm, which is significantly different. If you are not familiar with that sort of paradigm, I would suggest there's a bit of stuff to read. I would suggest to start here, in the documentation in the Configure the Service Factory page, and then continue with the service-based dynamic repeater use case to actually familiarize yourself with the sort of thing that we have in mind. But basically, once you understand the service factory, it's just a matter of creating a service factory, creating the string service, and then referencing that service factory in the same places where you would reference an XFBR effectively.

So, in the same situation, when we talk about building a dynamic dashboard based on security groups, in order to do that, you first have to understand the concept of repeaters, and the dynamic dashboard service with the service factory. So again, I'll send you back to the documentation, but there are also a few other resources around this concept, like this technical guide by Sam Eburn, which is quite nice on passing parameters with repeat arguments, as well as this solution here that I posted some time ago that is focused on hiding tabs, but it shows you the general technique to basically use a repeater in possibly the easiest way.

Once you understand that concept and you can build sort of a basic repeater, and you just want to focus on the item that you want to change — that's where we can look at the code.

So this is a dynamic dashboard service. The main technique beyond the stuff that, as you know, I mentioned, you find in a number of other places. Let's have a look at this. So in this case I am changing a parameter — just one particular parameter — depending on whether the user is in a group called IT Management. Okay. You can repeat this technique in other places, like in adapters and cube views, and so on. But I'm just showing it for a parameter.

So the main idea is: first you generate the list of parameters, of dynamic parameters, so creating a collection object. Okay, this is a collection object. It's important that when you do that, typically you pass the true value for the parameter that is called "convert stored parameters to dynamic," okay, because we want to actually generate a dynamic component that we can manipulate later. So this is important. And then once you have generated the collection, basically you can retrieve from the collection the component that you want to change, and manipulate it.

In this case, for example, I'm changing the query method property of the parameter — just changing some stuff in the string effectively. This is not limited to parameters. As I mentioned, you can use it in other places to manipulate, for example, generic dynamic components, or adapters, or cube views, and so on.

Okay, so that's the main idea: generate your collection, and then retrieve the parameters that you're actually interested in. Okay, so that should hopefully get you started.

Somebody mentioned there are some tech talks also available on the subject of dynamic dashboards, and those are on Navigator. So if you search your Navigator for tech talks that cover dashboards, they will come up. I will try to put the links also in this post, and hopefully that should work. Let's go.

3 replies

OneStream Employee
Sep 18, 2026 10:52 PM UTC

There are a series of Tech Talks on the topic of dynamic dashboards.  Search for those as they walk through different use cases and will give you some foundational learning on the topic.

OneStream Employee
Sep 18, 2026 10:53 PM UTC

In navigator or Onestream community do your search

Employee - Sage
Oct 1, 2026 1:53 PM UTC

 

Helpful Links:

  1. Source Code Types
  2. Configure the Service Factory
  3. Service-based Dynamic Repeater Use Case
  4. Programmatically hide dashboard Tabs
  5. Dynamic Dashboards – Passing Parameters with Repeat Arguments.
  6. Tech Talks: Diving into OneStream v8: Workspaces, Assemblies and Service Factory
  7. Tech Talks After Hours - Dynamic Dashboards

 

Transcript:

Hi. Thanks, Alexa, for the question. This question is a bit big. It has a few different sections, so I'll start from the bottom. Because we need to clarify a little bit what you're trying to achieve.

It's absolutely legit to keep using XFBRs to build your cube views. If the issue is just that you want to be able to package those XFBRs inside assemblies, you can do it in a very simple manner by just creating the file in the assembly of type XFBR and then referencing the rule in a slightly different way. And it's documented here in this page called Source Code Types on the documentation. As you can see here, it's got the actual syntax that you can use. So at that point you're basically just writing XFBRs in the usual way. You're just packaging them into the assembly so they are easier to manage together with the rest of your solution. Right? So that's one possibility.

Another possibility is a bit more complex, which is to actually use the dashboard string service, which is basically doing XFBR, but in the service factory paradigm, which is significantly different. If you are not familiar with that sort of paradigm, I would suggest there's a bit of stuff to read. I would suggest to start here, in the documentation in the Configure the Service Factory page, and then continue with the service-based dynamic repeater use case to actually familiarize yourself with the sort of thing that we have in mind. But basically, once you understand the service factory, it's just a matter of creating a service factory, creating the string service, and then referencing that service factory in the same places where you would reference an XFBR effectively.

So, in the same situation, when we talk about building a dynamic dashboard based on security groups, in order to do that, you first have to understand the concept of repeaters, and the dynamic dashboard service with the service factory. So again, I'll send you back to the documentation, but there are also a few other resources around this concept, like this technical guide by Sam Eburn, which is quite nice on passing parameters with repeat arguments, as well as this solution here that I posted some time ago that is focused on hiding tabs, but it shows you the general technique to basically use a repeater in possibly the easiest way.

Once you understand that concept and you can build sort of a basic repeater, and you just want to focus on the item that you want to change — that's where we can look at the code.

So this is a dynamic dashboard service. The main technique beyond the stuff that, as you know, I mentioned, you find in a number of other places. Let's have a look at this. So in this case I am changing a parameter — just one particular parameter — depending on whether the user is in a group called IT Management. Okay. You can repeat this technique in other places, like in adapters and cube views, and so on. But I'm just showing it for a parameter.

So the main idea is: first you generate the list of parameters, of dynamic parameters, so creating a collection object. Okay, this is a collection object. It's important that when you do that, typically you pass the true value for the parameter that is called "convert stored parameters to dynamic," okay, because we want to actually generate a dynamic component that we can manipulate later. So this is important. And then once you have generated the collection, basically you can retrieve from the collection the component that you want to change, and manipulate it.

In this case, for example, I'm changing the query method property of the parameter — just changing some stuff in the string effectively. This is not limited to parameters. As I mentioned, you can use it in other places to manipulate, for example, generic dynamic components, or adapters, or cube views, and so on.

Okay, so that's the main idea: generate your collection, and then retrieve the parameters that you're actually interested in. Okay, so that should hopefully get you started.

Somebody mentioned there are some tech talks also available on the subject of dynamic dashboards, and those are on Navigator. So if you search your Navigator for tech talks that cover dashboards, they will come up. I will try to put the links also in this post, and hopefully that should work. Let's go.